mirror of
https://github.com/withastro/astro.git
synced 2024-12-30 22:03:56 -05:00
Enhance upgrade messaging to include current version in output
- Updated the upgrade function to include the current version in the upgrade message format. - Modified test assertions to reflect the new message format. Background & Motivation: The current output format lacks clarity in showing version changes. Adding a simple 'from → to' format improves visibility and developer experience when updating Astro packages. Before: @astrojs/tailwind can be updated to v5.1.3 After: @astrojs/tailwind can be updated v4.0.0 → v5.1.3 This change: - Makes the upgrade process "more transparent" - Simplifies version change tracking - Improves DX during updates See https://github.com/withastro/roadmap/discussions/1069
This commit is contained in:
parent
7c7398c046
commit
2e71a3ec61
2 changed files with 14 additions and 11 deletions
|
@ -109,14 +109,17 @@ export const info = async (prefix: string, text: string, version = '') => {
|
|||
);
|
||||
}
|
||||
};
|
||||
|
||||
export const upgrade = async (packageInfo: PackageInfo, text: string) => {
|
||||
const { name, isMajor = false, targetVersion } = packageInfo;
|
||||
const { name, isMajor = false, targetVersion, currentVersion } = packageInfo;
|
||||
|
||||
const bg = isMajor ? (v: string) => color.bgYellow(color.black(` ${v} `)) : color.green;
|
||||
const style = isMajor ? color.yellow : color.green;
|
||||
const symbol = isMajor ? '▲' : '●';
|
||||
|
||||
const fromVersion = currentVersion.replace(/^\D+/, '');
|
||||
const toVersion = targetVersion.replace(/^\D+/, '');
|
||||
const version = `v${toVersion}`;
|
||||
const version = `v${fromVersion} → v${toVersion}`;
|
||||
|
||||
const length = 12 + name.length + text.length + version.length;
|
||||
if (length > stdout.columns) {
|
||||
|
|
|
@ -39,7 +39,7 @@ describe('install', () => {
|
|||
],
|
||||
};
|
||||
await install(context);
|
||||
assert.equal(fixture.hasMessage('● astro can be updated to v1.0.1'), true);
|
||||
assert.equal(fixture.hasMessage('● astro can be updated v1.0.0 → v1.0.1'), true);
|
||||
});
|
||||
|
||||
it('minor', async () => {
|
||||
|
@ -54,7 +54,7 @@ describe('install', () => {
|
|||
],
|
||||
};
|
||||
await install(context);
|
||||
assert.equal(fixture.hasMessage('● astro can be updated to v1.2.0'), true);
|
||||
assert.equal(fixture.hasMessage('● astro can be updated v1.0.0 → v1.2.0'), true);
|
||||
});
|
||||
|
||||
it('major (reject)', async () => {
|
||||
|
@ -81,7 +81,7 @@ describe('install', () => {
|
|||
],
|
||||
};
|
||||
await install(context);
|
||||
assert.equal(fixture.hasMessage('▲ astro can be updated to v2.0.0'), true);
|
||||
assert.equal(fixture.hasMessage('▲ astro can be updated v1.0.0 → v2.0.0'), true);
|
||||
assert.equal(prompted, true);
|
||||
assert.equal(exitCode, 0);
|
||||
assert.equal(fixture.hasMessage('check Be sure to follow the CHANGELOG.'), false);
|
||||
|
@ -111,7 +111,7 @@ describe('install', () => {
|
|||
],
|
||||
};
|
||||
await install(context);
|
||||
assert.equal(fixture.hasMessage('▲ astro can be updated to v2.0.0'), true);
|
||||
assert.equal(fixture.hasMessage('▲ astro can be updated v1.0.0 → v2.0.0'), true);
|
||||
assert.equal(prompted, true);
|
||||
assert.equal(exitCode, undefined);
|
||||
assert.equal(fixture.hasMessage('check Be sure to follow the CHANGELOG.'), true);
|
||||
|
@ -149,8 +149,8 @@ describe('install', () => {
|
|||
],
|
||||
};
|
||||
await install(context);
|
||||
assert.equal(fixture.hasMessage('▲ a can be updated to v2.0.0'), true);
|
||||
assert.equal(fixture.hasMessage('▲ b can be updated to v7.0.0'), true);
|
||||
assert.equal(fixture.hasMessage('▲ a can be updated v1.0.0 → v2.0.0'), true);
|
||||
assert.equal(fixture.hasMessage('▲ b can be updated v6.0.0 → v7.0.0'), true);
|
||||
assert.equal(prompted, true);
|
||||
assert.equal(exitCode, undefined);
|
||||
const [changelog, a, b] = fixture.messages().slice(-5);
|
||||
|
@ -199,9 +199,9 @@ describe('install', () => {
|
|||
};
|
||||
await install(context);
|
||||
assert.equal(fixture.hasMessage('◼ current is up to date on v1.0.0'), true);
|
||||
assert.equal(fixture.hasMessage('● patch can be updated to v1.0.1'), true);
|
||||
assert.equal(fixture.hasMessage('● minor can be updated to v1.2.0'), true);
|
||||
assert.equal(fixture.hasMessage('▲ major can be updated to v3.0.0'), true);
|
||||
assert.equal(fixture.hasMessage('● patch can be updated v1.0.0 → v1.0.1'), true);
|
||||
assert.equal(fixture.hasMessage('● minor can be updated v1.0.0 → v1.2.0'), true);
|
||||
assert.equal(fixture.hasMessage('▲ major can be updated v1.0.0 → v3.0.0'), true);
|
||||
assert.equal(prompted, true);
|
||||
assert.equal(exitCode, undefined);
|
||||
assert.equal(fixture.hasMessage('check Be sure to follow the CHANGELOG.'), true);
|
||||
|
|
Loading…
Reference in a new issue