submodule-version 2.3.0 → 2.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +43 -0
- package/dist/runner/handleErrors/handleGitError.js +9 -0
- package/dist/runner/handleErrors/handleGitError.js.map +1 -1
- package/dist/runner/runner.js +21 -0
- package/dist/runner/runner.js.map +1 -1
- package/dist/src/__tests__/versionUtil.test.js +15 -0
- package/dist/src/__tests__/versionUtil.test.js.map +1 -1
- package/dist/src/versionUtil.d.ts +1 -1
- package/dist/src/versionUtil.js +12 -10
- package/dist/src/versionUtil.js.map +1 -1
- package/package.json +1 -1
- package/runner/handleErrors/handleGitError.ts +12 -0
- package/runner/runner.ts +39 -0
- package/src/__tests__/versionUtil.test.ts +19 -0
- package/src/versionUtil.ts +10 -8
package/README.md
CHANGED
|
@@ -52,7 +52,9 @@ Submodule version helps to
|
|
|
52
52
|
}
|
|
53
53
|
```
|
|
54
54
|
- Each submodule has a [version](#versioning) tags, and `sv` use list of this tags to resolve dependencies
|
|
55
|
+
- The installed version of a submodule is the version tag git `HEAD` points at
|
|
55
56
|
- `Submodule version` creates a graph of whole project and install only possible and actual versions
|
|
57
|
+
- `sv` never switches a submodule version if it has uncommitted changes or unpushed commits — your local work is always kept intact 🧯
|
|
56
58
|
|
|
57
59
|
## Versioning
|
|
58
60
|
|
|
@@ -62,14 +64,55 @@ To add new version in submodule:
|
|
|
62
64
|
- Specify version in `package.json`
|
|
63
65
|
- Add and push git tag with the same version (`git tag 1.0.1`)
|
|
64
66
|
|
|
67
|
+
Or use the [`publish`](#programmatic-api) API, which bumps the version, commits, tags and pushes in one call.
|
|
68
|
+
|
|
65
69
|
|
|
66
70
|
## Commands
|
|
67
71
|
|
|
68
72
|
- `npx sv validate` - Validate all dependencis and install missing modules
|
|
69
73
|
- `npx sv install <git_url> [target_submodule]` - Install new dependency
|
|
70
74
|
- `npx sv update` - Update all dependencies to the latest possible versions
|
|
75
|
+
- `npx sv publish [module] [--bump release|minor|major] [-m message] [--repo-url git_url]` - Commit, tag and push a new version of a module (or the project itself when `module` is omitted). `--repo-url` is required for the first publish of a module without a git remote
|
|
71
76
|
- `npx sv help` - Description of all commands
|
|
72
77
|
|
|
78
|
+
## Programmatic API
|
|
79
|
+
|
|
80
|
+
The `SV` class can be used directly from code:
|
|
81
|
+
|
|
82
|
+
```ts
|
|
83
|
+
import { SV, versionUtil } from 'submodule-version';
|
|
84
|
+
|
|
85
|
+
const sv = new SV(process.cwd(), 'modules');
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### Switching versions
|
|
89
|
+
|
|
90
|
+
- `sv.setVersion(name, version, constraint?)` - Checkout the submodule to a specific version tag and pin the version constraint in the project `package.json`. By default the constraint is an exact pin of the selected version; pass `^<version>` as `constraint` to keep receiving newer versions on update. If the submodule has local changes that cannot be carried over, the switch is aborted without touching the working tree (`GIT_DIRTY_SWITCH_CONFLICT` error)
|
|
91
|
+
- `sv.getConstraint(name)` - Read the current version constraint of a submodule from the project `package.json`
|
|
92
|
+
- `sv.setConstraint(name, constraint)` - Change the version constraint of a submodule without switching the checked-out version
|
|
93
|
+
|
|
94
|
+
### Inspecting changes and versions
|
|
95
|
+
|
|
96
|
+
- `sv.hasChanges(module?)` - `true` if the module (or the project itself, when `module` is omitted) has uncommitted changes or unpushed commits
|
|
97
|
+
- `sv.hasUncommittedChanges(module?)` - `true` if the working tree has uncommitted changes
|
|
98
|
+
- `sv.currentVersion(module?)` - The version tag `HEAD` points at, or `null` when there is none
|
|
99
|
+
- `sv.latestVersion(module?)` - The latest known version tag (`0.0.0` when there are no tags)
|
|
100
|
+
- `sv.getRemote(module?)` - The `origin` remote URL, or `null`
|
|
101
|
+
- `sv.isPublished(module?)` - `true` if the module is a git repo with a configured remote
|
|
102
|
+
|
|
103
|
+
### Publishing
|
|
104
|
+
|
|
105
|
+
- `sv.publish({ module?, repoUrl?, message?, bump })` - Commit, tag and push a new version of a module (or the project itself). Returns the published version.
|
|
106
|
+
- `bump: 'release' | 'minor' | 'major'` - How to bump the latest version (`1.2.3` → `1.2.4`, `1.3.0`, `2.0.0`)
|
|
107
|
+
- For a module without a git remote, pass `repoUrl` — `sv` initializes the repo and sets the remote automatically
|
|
108
|
+
- Publishing is only possible from the latest version (`GIT_NOT_LATEST_VERSION` error otherwise)
|
|
109
|
+
- Submodules are checked out on tags (detached `HEAD`) — `publish` creates a local branch bound to the remote branch before committing, and syncs with the remote (`pull --rebase --autostash`) when it is ahead
|
|
110
|
+
- If the working tree is clean and `HEAD` already has a version tag, `publish` just pushes the branch and the tag without bumping
|
|
111
|
+
|
|
112
|
+
### Version utilities
|
|
113
|
+
|
|
114
|
+
`versionUtil` is also exported and now includes `versionUtil.bump(version, 'release' | 'minor' | 'major')` alongside `compare`, `pick`, `validate` and `latest`.
|
|
115
|
+
|
|
73
116
|
## Submodule dependencies
|
|
74
117
|
|
|
75
118
|
Sumbodules can contains their own dependencies specified in `package.json` as `sv` object.
|
|
@@ -13,6 +13,15 @@ const handleGitError = (error) => {
|
|
|
13
13
|
if (errorMessage === 'GIT_MODULE_CHECKOUT_FAILED') {
|
|
14
14
|
log_1.log.error('Checkout failded');
|
|
15
15
|
}
|
|
16
|
+
if (errorMessage === 'GIT_REPO_URL_REQUIRED') {
|
|
17
|
+
log_1.log.error('Module is not published yet - pass --repo-url for the first publish');
|
|
18
|
+
}
|
|
19
|
+
if (errorMessage === 'GIT_NOT_LATEST_VERSION') {
|
|
20
|
+
log_1.log.error('Publish is only possible from the latest version');
|
|
21
|
+
}
|
|
22
|
+
if (errorMessage === 'GIT_SYNC_CONFLICT') {
|
|
23
|
+
log_1.log.error('Sync with remote failed - resolve conflicts manually');
|
|
24
|
+
}
|
|
16
25
|
};
|
|
17
26
|
exports.handleGitError = handleGitError;
|
|
18
27
|
//# sourceMappingURL=handleGitError.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handleGitError.js","sourceRoot":"","sources":["../../../runner/handleErrors/handleGitError.ts"],"names":[],"mappings":";;;AAAA,uCAAyC;AACzC,gCAA6B;AAEtB,MAAM,cAAc,GAAG,CAAC,KAAY,EAAE,EAAE;IAC7C,IAAI,CAAC,CAAC,KAAK,YAAY,cAAQ,CAAC;QAAE,OAAO;IAEzC,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC;IAExC,IAAI,YAAY,KAAK,gBAAgB,EAAE,CAAC;QACtC,SAAG,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACjC,CAAC;IAED,IAAI,YAAY,KAAK,4BAA4B,EAAE,CAAC;QAClD,SAAG,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;IAChC,CAAC;AACH,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"handleGitError.js","sourceRoot":"","sources":["../../../runner/handleErrors/handleGitError.ts"],"names":[],"mappings":";;;AAAA,uCAAyC;AACzC,gCAA6B;AAEtB,MAAM,cAAc,GAAG,CAAC,KAAY,EAAE,EAAE;IAC7C,IAAI,CAAC,CAAC,KAAK,YAAY,cAAQ,CAAC;QAAE,OAAO;IAEzC,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC;IAExC,IAAI,YAAY,KAAK,gBAAgB,EAAE,CAAC;QACtC,SAAG,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACjC,CAAC;IAED,IAAI,YAAY,KAAK,4BAA4B,EAAE,CAAC;QAClD,SAAG,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;IAChC,CAAC;IAED,IAAI,YAAY,KAAK,uBAAuB,EAAE,CAAC;QAC7C,SAAG,CAAC,KAAK,CAAC,qEAAqE,CAAC,CAAC;IACnF,CAAC;IAED,IAAI,YAAY,KAAK,wBAAwB,EAAE,CAAC;QAC9C,SAAG,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC;IAChE,CAAC;IAED,IAAI,YAAY,KAAK,mBAAmB,EAAE,CAAC;QACzC,SAAG,CAAC,KAAK,CAAC,sDAAsD,CAAC,CAAC;IACpE,CAAC;AACH,CAAC,CAAC;AAxBW,QAAA,cAAc,kBAwBzB"}
|
package/dist/runner/runner.js
CHANGED
|
@@ -33,6 +33,11 @@ const remove = makeEvent(async (sv, arg) => {
|
|
|
33
33
|
const { name } = arg;
|
|
34
34
|
await sv.remove(name);
|
|
35
35
|
});
|
|
36
|
+
const publish = makeEvent(async (sv, arg) => {
|
|
37
|
+
const { module, bump, message, repoUrl } = arg;
|
|
38
|
+
const version = await sv.publish({ module, bump, message, repoUrl });
|
|
39
|
+
log_1.log.message(chalk_1.default.green.bold('Published'), chalk_1.default.bgGreen.black(` ${module || 'project'} `), chalk_1.default.green.bold('version'), chalk_1.default.bgGreen.black(` ${version} `));
|
|
40
|
+
});
|
|
36
41
|
const validate = makeEvent(async (sv) => {
|
|
37
42
|
const result = await sv.buildGraph();
|
|
38
43
|
Object.entries(result).forEach(([name, entry]) => {
|
|
@@ -58,6 +63,22 @@ exports.s = yargs_1.default.scriptName('sv')
|
|
|
58
63
|
type: 'string',
|
|
59
64
|
describe: 'Submodule name',
|
|
60
65
|
}), remove)
|
|
66
|
+
.command(['publish [module]', 'p'], 'Commit, tag and push a new version', y => y.positional('module', {
|
|
67
|
+
type: 'string',
|
|
68
|
+
describe: 'Module name (project itself when omitted)',
|
|
69
|
+
}).option('bump', {
|
|
70
|
+
type: 'string',
|
|
71
|
+
describe: 'Version bump kind',
|
|
72
|
+
choices: ['release', 'minor', 'major'],
|
|
73
|
+
default: 'release',
|
|
74
|
+
}).option('message', {
|
|
75
|
+
type: 'string',
|
|
76
|
+
alias: 'm',
|
|
77
|
+
describe: 'Commit message',
|
|
78
|
+
}).option('repo-url', {
|
|
79
|
+
type: 'string',
|
|
80
|
+
describe: 'Git repo url (required for the first publish)',
|
|
81
|
+
}), publish)
|
|
61
82
|
.help()
|
|
62
83
|
.argv;
|
|
63
84
|
//# sourceMappingURL=runner.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../runner/runner.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../runner/runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -37,6 +37,11 @@ describe('Compare', () => {
|
|
|
37
37
|
expect(versionUtil_1.versionUtil.compare([1, 3, 3], [1, 2, 4], 0)).toBe(false);
|
|
38
38
|
expect(versionUtil_1.versionUtil.compare([1, 2, 3], [1, 2, 4], 1)).toBe(true);
|
|
39
39
|
expect(versionUtil_1.versionUtil.compare([1, 2, 4], [1, 2, 3], 1)).toBe(false);
|
|
40
|
+
// Higher minor allows lower patch: 0.3.0 fits ^0.2.6
|
|
41
|
+
expect(versionUtil_1.versionUtil.compare([0, 2, 6], [0, 3, 0], 0)).toBe(true);
|
|
42
|
+
expect(versionUtil_1.versionUtil.compare([0, 2, 6], [0, 2, 5], 0)).toBe(false);
|
|
43
|
+
expect(versionUtil_1.versionUtil.compare([0, 2, 6], [0, 2, 6], 0)).toBe(true);
|
|
44
|
+
expect(versionUtil_1.versionUtil.compare([0, 2, 6], [1, 3, 0], 0)).toBe(false);
|
|
40
45
|
});
|
|
41
46
|
it('Minor mode', () => {
|
|
42
47
|
expect(versionUtil_1.versionUtil.compare([1, 2, 3], [1, 2, 4], 1)).toBe(true);
|
|
@@ -48,6 +53,16 @@ describe('Compare', () => {
|
|
|
48
53
|
expect(versionUtil_1.versionUtil.compare([1, 2, 3], [1, 2, 4], 2)).toBe(false);
|
|
49
54
|
});
|
|
50
55
|
});
|
|
56
|
+
describe('Pick', () => {
|
|
57
|
+
it('Caret range includes higher minors', () => {
|
|
58
|
+
const versions = ['0.2.5', '0.2.6', '0.2.8', '0.3.0', '1.0.0'];
|
|
59
|
+
expect(versionUtil_1.versionUtil.pick(versions, '^0.2.6')).toEqual(['0.2.6', '0.2.8', '0.3.0']);
|
|
60
|
+
});
|
|
61
|
+
it('Tilde range keeps minor pinned', () => {
|
|
62
|
+
const versions = ['1.2.3', '1.2.10', '1.3.0'];
|
|
63
|
+
expect(versionUtil_1.versionUtil.pick(versions, '~1.2.3')).toEqual(['1.2.3', '1.2.10']);
|
|
64
|
+
});
|
|
65
|
+
});
|
|
51
66
|
describe('Bump', () => {
|
|
52
67
|
it('Release', () => {
|
|
53
68
|
expect(versionUtil_1.versionUtil.bump('0.0.0', 'release')).toBe('0.0.1');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"versionUtil.test.js","sourceRoot":"","sources":["../../../src/__tests__/versionUtil.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"versionUtil.test.js","sourceRoot":"","sources":["../../../src/__tests__/versionUtil.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ declare enum ComapreMode {
|
|
|
4
4
|
path = 2
|
|
5
5
|
}
|
|
6
6
|
export declare const versionUtil: {
|
|
7
|
-
compare: (baseVer: number[], actualVer: number[], compareMode: ComapreMode) =>
|
|
7
|
+
compare: (baseVer: number[], actualVer: number[], compareMode: ComapreMode) => boolean;
|
|
8
8
|
pick: (allVersions: string[], v: string) => string[];
|
|
9
9
|
validate: (v: string, relative?: boolean) => boolean;
|
|
10
10
|
latest: (versions: string[]) => string;
|
package/dist/src/versionUtil.js
CHANGED
|
@@ -20,16 +20,18 @@ const mode = (v) => {
|
|
|
20
20
|
return ComapreMode.path;
|
|
21
21
|
};
|
|
22
22
|
const compare = (baseVer, actualVer, compareMode) => {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
if (
|
|
26
|
-
return
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
23
|
+
// Components pinned by the mode must match exactly
|
|
24
|
+
for (let i = 0; i <= compareMode; i++) {
|
|
25
|
+
if (baseVer[i] !== actualVer[i])
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
// The rest must be same or higher, compared from most significant:
|
|
29
|
+
// a higher minor allows any patch (0.3.0 fits ^0.2.6)
|
|
30
|
+
for (let i = compareMode + 1; i < 3; i++) {
|
|
31
|
+
if (actualVer[i] !== baseVer[i])
|
|
32
|
+
return actualVer[i] > baseVer[i];
|
|
33
|
+
}
|
|
34
|
+
return true;
|
|
33
35
|
};
|
|
34
36
|
const pick = (allVersions, v) => {
|
|
35
37
|
if (v === '*')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"versionUtil.js","sourceRoot":"","sources":["../../src/versionUtil.ts"],"names":[],"mappings":";;;AAAA,IAAK,WAIJ;AAJD,WAAK,WAAW;IACd,+CAAS,CAAA;IACT,+CAAS,CAAA;IACT,6CAAQ,CAAA;AACV,CAAC,EAJI,WAAW,KAAX,WAAW,QAIf;AAED,MAAM,OAAO,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AAEvD,MAAM,OAAO,GAAG,CAAC,CAAS,EAAY,EAAE,CAAC,CACvC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAClC,CAAC;AAEF,MAAM,IAAI,GAAG,CAAC,CAAS,EAAE,EAAE;IACzB,wDAAwD;IACxD,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,WAAW,CAAC,KAAK,CAAC;IAChD,mDAAmD;IACnD,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,WAAW,CAAC,KAAK,CAAC;IAEhD,4BAA4B;IAC5B,OAAO,WAAW,CAAC,IAAI,CAAC;AAC1B,CAAC,CAAC;AAEF,MAAM,OAAO,GAAG,CACd,OAAiB,EACjB,SAAmB,EACnB,WAAwB,EACxB,EAAE;IACF,
|
|
1
|
+
{"version":3,"file":"versionUtil.js","sourceRoot":"","sources":["../../src/versionUtil.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -13,4 +13,16 @@ export const handleGitError = (error: Error) => {
|
|
|
13
13
|
if (errorMessage === 'GIT_MODULE_CHECKOUT_FAILED') {
|
|
14
14
|
log.error('Checkout failded');
|
|
15
15
|
}
|
|
16
|
+
|
|
17
|
+
if (errorMessage === 'GIT_REPO_URL_REQUIRED') {
|
|
18
|
+
log.error('Module is not published yet - pass --repo-url for the first publish');
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
if (errorMessage === 'GIT_NOT_LATEST_VERSION') {
|
|
22
|
+
log.error('Publish is only possible from the latest version');
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
if (errorMessage === 'GIT_SYNC_CONFLICT') {
|
|
26
|
+
log.error('Sync with remote failed - resolve conflicts manually');
|
|
27
|
+
}
|
|
16
28
|
};
|
package/runner/runner.ts
CHANGED
|
@@ -34,6 +34,24 @@ const remove = makeEvent(async (sv, arg) => {
|
|
|
34
34
|
await sv.remove(name);
|
|
35
35
|
});
|
|
36
36
|
|
|
37
|
+
const publish = makeEvent(async (sv, arg) => {
|
|
38
|
+
const { module, bump, message, repoUrl } = arg as {
|
|
39
|
+
module?: string,
|
|
40
|
+
bump: 'release' | 'minor' | 'major',
|
|
41
|
+
message?: string,
|
|
42
|
+
repoUrl?: string,
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
const version = await sv.publish({ module, bump, message, repoUrl });
|
|
46
|
+
|
|
47
|
+
log.message(
|
|
48
|
+
chalk.green.bold('Published'),
|
|
49
|
+
chalk.bgGreen.black(` ${module || 'project'} `),
|
|
50
|
+
chalk.green.bold('version'),
|
|
51
|
+
chalk.bgGreen.black(` ${version} `),
|
|
52
|
+
);
|
|
53
|
+
});
|
|
54
|
+
|
|
37
55
|
const validate = makeEvent(async sv => {
|
|
38
56
|
const result = await sv.buildGraph();
|
|
39
57
|
|
|
@@ -86,5 +104,26 @@ export const s = yargs.scriptName('sv')
|
|
|
86
104
|
}),
|
|
87
105
|
remove,
|
|
88
106
|
)
|
|
107
|
+
.command(
|
|
108
|
+
['publish [module]', 'p'],
|
|
109
|
+
'Commit, tag and push a new version',
|
|
110
|
+
y => y.positional('module', {
|
|
111
|
+
type: 'string',
|
|
112
|
+
describe: 'Module name (project itself when omitted)',
|
|
113
|
+
}).option('bump', {
|
|
114
|
+
type: 'string',
|
|
115
|
+
describe: 'Version bump kind',
|
|
116
|
+
choices: ['release', 'minor', 'major'] as const,
|
|
117
|
+
default: 'release' as const,
|
|
118
|
+
}).option('message', {
|
|
119
|
+
type: 'string',
|
|
120
|
+
alias: 'm',
|
|
121
|
+
describe: 'Commit message',
|
|
122
|
+
}).option('repo-url', {
|
|
123
|
+
type: 'string',
|
|
124
|
+
describe: 'Git repo url (required for the first publish)',
|
|
125
|
+
}),
|
|
126
|
+
publish,
|
|
127
|
+
)
|
|
89
128
|
.help()
|
|
90
129
|
.argv;
|
|
@@ -45,6 +45,11 @@ describe('Compare', () => {
|
|
|
45
45
|
expect(versionUtil.compare([1, 3, 3], [1, 2, 4], 0)).toBe(false);
|
|
46
46
|
expect(versionUtil.compare([1, 2, 3], [1, 2, 4], 1)).toBe(true);
|
|
47
47
|
expect(versionUtil.compare([1, 2, 4], [1, 2, 3], 1)).toBe(false);
|
|
48
|
+
// Higher minor allows lower patch: 0.3.0 fits ^0.2.6
|
|
49
|
+
expect(versionUtil.compare([0, 2, 6], [0, 3, 0], 0)).toBe(true);
|
|
50
|
+
expect(versionUtil.compare([0, 2, 6], [0, 2, 5], 0)).toBe(false);
|
|
51
|
+
expect(versionUtil.compare([0, 2, 6], [0, 2, 6], 0)).toBe(true);
|
|
52
|
+
expect(versionUtil.compare([0, 2, 6], [1, 3, 0], 0)).toBe(false);
|
|
48
53
|
});
|
|
49
54
|
|
|
50
55
|
it('Minor mode', () => {
|
|
@@ -59,6 +64,20 @@ describe('Compare', () => {
|
|
|
59
64
|
});
|
|
60
65
|
});
|
|
61
66
|
|
|
67
|
+
describe('Pick', () => {
|
|
68
|
+
it('Caret range includes higher minors', () => {
|
|
69
|
+
const versions = ['0.2.5', '0.2.6', '0.2.8', '0.3.0', '1.0.0'];
|
|
70
|
+
|
|
71
|
+
expect(versionUtil.pick(versions, '^0.2.6')).toEqual(['0.2.6', '0.2.8', '0.3.0']);
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
it('Tilde range keeps minor pinned', () => {
|
|
75
|
+
const versions = ['1.2.3', '1.2.10', '1.3.0'];
|
|
76
|
+
|
|
77
|
+
expect(versionUtil.pick(versions, '~1.2.3')).toEqual(['1.2.3', '1.2.10']);
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
|
|
62
81
|
describe('Bump', () => {
|
|
63
82
|
it('Release', () => {
|
|
64
83
|
expect(versionUtil.bump('0.0.0', 'release')).toBe('0.0.1');
|
package/src/versionUtil.ts
CHANGED
|
@@ -25,16 +25,18 @@ const compare = (
|
|
|
25
25
|
actualVer: number[],
|
|
26
26
|
compareMode: ComapreMode,
|
|
27
27
|
) => {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
if (
|
|
31
|
-
|
|
32
|
-
if (i > compareMode) return actualVer[i] >= baseVer[i];
|
|
28
|
+
// Components pinned by the mode must match exactly
|
|
29
|
+
for (let i = 0; i <= compareMode; i++) {
|
|
30
|
+
if (baseVer[i] !== actualVer[i]) return false;
|
|
31
|
+
}
|
|
33
32
|
|
|
34
|
-
|
|
35
|
-
|
|
33
|
+
// The rest must be same or higher, compared from most significant:
|
|
34
|
+
// a higher minor allows any patch (0.3.0 fits ^0.2.6)
|
|
35
|
+
for (let i = compareMode + 1; i < 3; i++) {
|
|
36
|
+
if (actualVer[i] !== baseVer[i]) return actualVer[i] > baseVer[i];
|
|
37
|
+
}
|
|
36
38
|
|
|
37
|
-
return
|
|
39
|
+
return true;
|
|
38
40
|
};
|
|
39
41
|
|
|
40
42
|
const pick = (allVersions: string[], v: string) => {
|