|
1 | 1 | #!/usr/bin/env node |
2 | 2 |
|
3 | | -const { getUnityChangeset, scrapeArchivedChangesets, scrapeBetaChangesets } = require("../dist/index"); |
| 3 | +const { getUnityChangeset, scrapeArchivedChangesets, scrapeBetaChangesets, toNumber } = require("../dist/index"); |
4 | 4 | const cli = require('cac')(); |
5 | 5 | const pkgJson = require('../package.json'); |
6 | 6 |
|
7 | | -const toNumber = function (version, max = false) { |
8 | | - const match = version.toString().match(/^(\d+)\.*(\d*)\.*(\d*)(\w*)(\d*)$/); |
9 | | - if (match === null) return 0; |
10 | | - |
11 | | - return parseInt(match[1] || (max ? '9999' : '0')) * 100 * 100 * 100 * 100 |
12 | | - + parseInt(match[2] || (max ? '99' : '0')) * 100 * 100 * 100 |
13 | | - + parseInt(match[3] || (max ? '99' : '0')) * 100 * 100 |
14 | | - + ((match[4] || (max ? 'z' : 'a')).toUpperCase().charCodeAt(0) - 65) * 100 |
15 | | - + parseInt(match[5] || (max ? '99' : '0')); |
16 | | -}; |
17 | | - |
18 | | -const toMinor = function (version) { |
19 | | - const match = version.toString().match(/^(\d+)\.*(\d*)\.*(\d*)(\w*)(\d*)$/); |
20 | | - if (match === null) return ''; |
21 | | - |
22 | | - return `${match[1]}.${match[2]}`; |
23 | | -}; |
24 | | - |
25 | 7 | const groupBy = (array, getKey) => |
26 | 8 | array.reduce((obj, cur, idx, src) => { |
27 | 9 | const key = getKey(cur, idx, src); |
@@ -64,23 +46,20 @@ cli.command('list', 'List changesets') |
64 | 46 | var max = options.max ? toNumber(options.max, true) : Number.MAX_VALUE; |
65 | 47 | results = results |
66 | 48 | .filter(r => options.grep ? r.version.includes(options.grep) : true) |
67 | | - .filter(r => { |
68 | | - const n = toNumber(r.version); |
69 | | - return min <= n && n <= max; |
70 | | - }); |
| 49 | + .filter(r => min <= r.versionNumber && r.versionNumber <= max); |
71 | 50 |
|
72 | 51 | // Group by minor version |
73 | 52 | if (options.minorVersions) { |
74 | | - results.forEach(r => r.version = toMinor(r.version)) |
| 53 | + results.forEach(r => r.version = r.minor) |
75 | 54 | results = Object.values(groupBy(results, r => r.version)).map(g => g[0]); |
76 | 55 | } |
77 | 56 | // Group by minor version and get latest patch |
78 | 57 | else if (options.latestPatch) { |
79 | | - results = Object.values(groupBy(results, r => toMinor(r.version))).map(g => g[0]); |
| 58 | + results = Object.values(groupBy(results, r => r.minor)).map(g => g[0]); |
80 | 59 | } |
81 | 60 | // Group by minor version and get oldest patch |
82 | 61 | else if (options.oldestPatch) { |
83 | | - results = Object.values(groupBy(results, r => toMinor(r.version))).map(g => g[g.length - 1]); |
| 62 | + results = Object.values(groupBy(results, r => r.minor)).map(g => g[g.length - 1]); |
84 | 63 | } |
85 | 64 |
|
86 | 65 | // Output versions |
|
110 | 89 | .example('unity-changeset list') |
111 | 90 | .example('unity-changeset list --beta') |
112 | 91 | .example('unity-changeset list --versions') |
| 92 | + .example('unity-changeset list --versions --all') |
| 93 | + .example('unity-changeset list --versions --all --latest-patch') |
113 | 94 | .help() |
114 | 95 | .version(pkgJson.version); |
115 | 96 |
|
|
0 commit comments