Skip to content

Commit d53cb24

Browse files
committed
replace --latest with --tag
1 parent 953719d commit d53cb24

File tree

2 files changed

+60
-10
lines changed

2 files changed

+60
-10
lines changed

index.js

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,7 @@ program
1818
Examples:
1919
2020
node dev/update-blueprint-dependencies.js --ember-source=beta --ember-data=beta
21-
node dev/update-blueprint-dependencies.js --filter /eslint/
22-
node dev/update-blueprint-dependencies.js --filter some-package@beta
21+
node dev/update-blueprint-dependencies.js --filter /@warp-drive\\/*/
2322
`,
2423
)
2524
.description(
@@ -40,17 +39,20 @@ Examples:
4039
'A RegExp to filter the packages to update by',
4140
).argParser((value) => new RegExp(value)),
4241
)
43-
.option(
44-
'--latest',
45-
`Always use the latest version available for a package (includes major bumps, 'false' by default)`,
46-
)
42+
.option('--tag <tag-name>', 'Allows you to set the tag want to target when using --filter to update multiple packages')
43+
.addOption(new Option('--latest').hideHelp())
4744
.argument('<files...>', 'package.json files to update');
4845

4946
export default async function main(argv) {
5047
program.parse(argv);
5148

5249
const OPTIONS = program.opts();
5350

51+
if (OPTIONS.latest) {
52+
console.error(`use argument '--tag latest' instead of passing '--latest'`);
53+
process.exit(1);
54+
}
55+
5456
const PACKAGE_FILES = program.args;
5557

5658
function shouldCheckDependency(dependency) {
@@ -104,8 +106,8 @@ export default async function main(argv) {
104106
let hasVersion = previousValue[1] !== '<';
105107

106108
if (hasVersion && isValidPrefix) {
107-
const semverRange = OPTIONS.latest
108-
? 'latest'
109+
const semverRange = OPTIONS.tag
110+
? OPTIONS.tag
109111
: removeTemplateExpression(previousValue);
110112
const newVersion = await latestVersion(dependencyName, semverRange);
111113

tests/basic.test.js

Lines changed: 50 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,10 @@ vi.mock('latest-version', () => {
1717
return '7.7.7';
1818
}
1919

20+
if (version === 'beta') {
21+
return '8.0.0-beta.5'
22+
}
23+
2024
// otherwise increment a minor
2125
return semver.inc(semver.valid(semver.coerce(version)), 'minor');
2226
},
@@ -68,7 +72,8 @@ describe('Basic test', () => {
6872
'latest',
6973
'--ember-data',
7074
'latest',
71-
'--latest',
75+
'--tag',
76+
'latest',
7277
join(project.baseDir, 'package.json'),
7378
]);
7479

@@ -105,7 +110,8 @@ describe('Basic test', () => {
105110
'latest',
106111
'--ember-data',
107112
'latest',
108-
'--latest',
113+
'--tag',
114+
'latest',
109115
'--filter',
110116
'@ember-data/*',
111117
join(project.baseDir, 'package.json'),
@@ -129,5 +135,47 @@ describe('Basic test', () => {
129135
}
130136
"
131137
`);
138+
});
139+
140+
it('works correctly with --filter and --tag', async() => {
141+
project = new Project('test-project');
142+
143+
project.addDependency('mocha', '^5.1.0');
144+
project.addDependency('@ember-data/thingy', '~5.3.8')
145+
project.addDependency('@ember-data/store', '~5.1.0')
146+
await project.write();
147+
148+
await main([
149+
'fake',
150+
'fake',
151+
'--ember-source',
152+
'latest',
153+
'--ember-data',
154+
'latest',
155+
'--tag',
156+
'beta',
157+
'--filter',
158+
'@ember-data/*',
159+
join(project.baseDir, 'package.json'),
160+
]);
161+
162+
const contents = await readFile(
163+
join(project.baseDir, 'package.json'),
164+
'utf8',
165+
);
166+
expect(contents).toMatchInlineSnapshot(`
167+
"{
168+
"name": "test-project",
169+
"version": "0.0.0",
170+
"keywords": [],
171+
"dependencies": {
172+
"mocha": "^5.1.0",
173+
"@ember-data/thingy": "~8.0.0-beta.5",
174+
"@ember-data/store": "~8.0.0-beta.5"
175+
},
176+
"devDependencies": {}
177+
}
178+
"
179+
`);
132180
})
133181
});

0 commit comments

Comments
 (0)