|
1 | 1 | #!/usr/bin/env node |
2 | 2 |
|
3 | 3 | import * as program from 'commander'; |
4 | | -import {CratesUpdater} from './CratesUpdater'; |
| 4 | +import * as CratesUpdater from './CratesUpdater'; |
5 | 5 |
|
6 | | -const {name, version, description}: {description: string; name: string; version: string} = require('../package.json'); |
| 6 | +const {name, version, description} = require('../package.json'); |
7 | 7 |
|
8 | 8 | program |
9 | 9 | .name(name) |
10 | 10 | .description(description) |
11 | | - .option('-p, --package <package>', 'which package to check (required)') |
12 | | - .option('-V, --package-version <version>', 'which version to check') |
| 11 | + .arguments('<package>') |
| 12 | + .arguments('[packageVersion]') |
| 13 | + .option('-q, --quiet', 'quiet mode. Display newer version or nothing') |
13 | 14 | .version(version, '-v, --version') |
14 | 15 | .parse(process.argv); |
15 | 16 |
|
16 | | -if (!program.options.length || !program.package) { |
| 17 | +if (!program.args.length) { |
17 | 18 | program.outputHelp(); |
18 | 19 | process.exit(1); |
19 | 20 | } |
20 | 21 |
|
21 | | -const cratesUpdater = new CratesUpdater(); |
| 22 | +const [packageName, packageVersion] = program.args; |
22 | 23 |
|
23 | | -if (program.package && program.packageVersion) { |
24 | | - cratesUpdater |
25 | | - .checkForUpdate(program.package, program.packageVersion) |
| 24 | +if (packageVersion) { |
| 25 | + CratesUpdater.checkForUpdate(packageName, packageVersion) |
26 | 26 | .then(version => { |
27 | | - if (version) { |
28 | | - console.log(`An update for ${program.package} is available: ${version}.`); |
| 27 | + if (program.quiet) { |
| 28 | + if (version) { |
| 29 | + console.log(version); |
| 30 | + } |
29 | 31 | } else { |
30 | | - console.log(`No update for ${program.package} available.`); |
| 32 | + const text = version |
| 33 | + ? `An update for ${packageName} is available: ${version}.` |
| 34 | + : `No update for ${packageName} available.`; |
| 35 | + console.log(text); |
31 | 36 | } |
32 | 37 | }) |
33 | 38 | .catch(error => { |
34 | | - console.error(error); |
| 39 | + console.error(error.message); |
35 | 40 | process.exit(1); |
36 | 41 | }); |
37 | 42 | } else { |
38 | | - cratesUpdater |
39 | | - .getLatestVersion(program.package) |
40 | | - .then(version => console.log(version.num)) |
| 43 | + CratesUpdater.getLatestVersion(packageName) |
| 44 | + .then(version => { |
| 45 | + const text = program.quiet ? version.num : `Latest ${packageName} version is ${version.num}.`; |
| 46 | + console.log(text); |
| 47 | + }) |
41 | 48 | .catch(error => { |
42 | | - console.error(error); |
| 49 | + console.error(error.message); |
43 | 50 | process.exit(1); |
44 | 51 | }); |
45 | 52 | } |
0 commit comments