submodule-version 1.1.4 → 2.0.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 +52 -9
- package/dist/index.d.ts +2 -0
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -0
- package/dist/src/__tests__/parseGitUrl.test.d.ts +1 -0
- package/dist/src/__tests__/parseGitUrl.test.js +30 -0
- package/dist/src/__tests__/parseGitUrl.test.js.map +1 -0
- package/dist/src/__tests__/versionUtil.test.d.ts +1 -0
- package/dist/src/__tests__/versionUtil.test.js +51 -0
- package/dist/src/__tests__/versionUtil.test.js.map +1 -0
- package/dist/src/buildGraph.d.ts +7 -0
- package/dist/src/buildGraph.js +73 -0
- package/dist/src/buildGraph.js.map +1 -0
- package/dist/src/config.d.ts +4 -0
- package/dist/src/config.js +8 -0
- package/dist/src/config.js.map +1 -0
- package/dist/src/git.d.ts +5 -0
- package/dist/src/git.js +54 -0
- package/dist/src/git.js.map +1 -0
- package/dist/src/install.d.ts +1 -0
- package/dist/src/install.js +43 -0
- package/dist/src/install.js.map +1 -0
- package/dist/src/log.d.ts +4 -0
- package/dist/src/log.js +20 -0
- package/dist/src/log.js.map +1 -0
- package/dist/src/parseGitUrl.d.ts +7 -0
- package/dist/src/parseGitUrl.js +26 -0
- package/dist/src/parseGitUrl.js.map +1 -0
- package/dist/src/pkgJsonUtil.d.ts +5 -0
- package/dist/src/pkgJsonUtil.js +38 -0
- package/dist/src/pkgJsonUtil.js.map +1 -0
- package/dist/src/submoduleVersion.d.ts +1 -0
- package/dist/src/submoduleVersion.js +43 -0
- package/dist/src/submoduleVersion.js.map +1 -0
- package/dist/src/versionUtil.d.ts +12 -0
- package/dist/src/versionUtil.js +68 -0
- package/dist/src/versionUtil.js.map +1 -0
- package/eslint.config.js +5 -0
- package/index-dev.ts +7 -0
- package/index.ts +3 -0
- package/jest.config.js +9 -0
- package/package.json +14 -4
- package/src/__tests__/parseGitUrl.test.ts +33 -0
- package/src/__tests__/versionUtil.test.ts +60 -0
- package/src/buildGraph.ts +105 -0
- package/src/config.ts +4 -0
- package/src/git.ts +51 -0
- package/src/install.ts +47 -0
- package/src/log.ts +16 -0
- package/src/parseGitUrl.ts +31 -0
- package/src/pkgJsonUtil.ts +36 -0
- package/src/submoduleVersion.ts +54 -0
- package/src/versionUtil.ts +82 -0
- package/tsconfig.json +30 -0
- package/index.js +0 -177
package/README.md
CHANGED
|
@@ -1,17 +1,60 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Submodule version
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
## Git **S**ubmodule **V**ersion tool
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
[](https://www.npmjs.com/package/submodule-version)
|
|
6
6
|
|
|
7
|
-
`
|
|
7
|
+
`Submodule version` is a tool to manage git submodules as versioned packages.
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
This tool designet to split projects in-to submodules *without npm-packages headache*.
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
With `submodule version` code can be organized like a *single monorepo*, but each submodule can be *easily reused* in another projects like npm-package.
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
## Problem to solve
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
Take a look on the next situation:
|
|
16
16
|
|
|
17
|
-
`
|
|
17
|
+
- Project has 2 submodules `ui-button-element` and `render-engine`
|
|
18
|
+
- Package `ui-button-element` dependents on the `render-engine`
|
|
19
|
+
- Third repo `ui-slider-element` dependets on newest version of the `render-engine`
|
|
20
|
+
|
|
21
|
+
This cause next problems:
|
|
22
|
+
|
|
23
|
+
- Add `ui-slider-element` cause difficulties with handle different `render-engine` versions
|
|
24
|
+
- How to update `ui-button-element` if it's repo contains new version?
|
|
25
|
+
|
|
26
|
+
Submodule version helps to
|
|
27
|
+
|
|
28
|
+
- Take a look which project should be updated and which version should be installed
|
|
29
|
+
- Help update submodules and theirs dependencies
|
|
30
|
+
- Install new submodules
|
|
31
|
+
|
|
32
|
+
## Installation
|
|
33
|
+
|
|
34
|
+
- Install sv tool `npm i -D submodule-version`
|
|
35
|
+
- Add `workspaces` section in `package.json`
|
|
36
|
+
```
|
|
37
|
+
"workspaces": [
|
|
38
|
+
"modules/*"
|
|
39
|
+
],
|
|
40
|
+
```
|
|
41
|
+
- Install first submodule `npx sv i <git_repo>`
|
|
42
|
+
- Install npm dependencies `npm i`. Submodule will be linked in node_modules and its dependencies will be installed
|
|
43
|
+
- Use your submodule in code `import submodule from 'submodule-name'` 🔥
|
|
44
|
+
|
|
45
|
+
## How it works
|
|
46
|
+
|
|
47
|
+
- Each submodule and main project has own `package.json` with `sv` object inside. `sv` object will be generated automatically and will contain every dependency version
|
|
48
|
+
```
|
|
49
|
+
"sv": {
|
|
50
|
+
"git@github.com:guljeny/submodule-version.git": "^1.0.0"
|
|
51
|
+
}
|
|
52
|
+
```
|
|
53
|
+
- `Submodule version` creates a graph of whole project and install only possible and actual versions
|
|
54
|
+
|
|
55
|
+
## Commands
|
|
56
|
+
|
|
57
|
+
- `sv validate` - Validate all dependencis and install missing modules
|
|
58
|
+
- `sv install <git_url> [target_submodule]` - Install new dependency
|
|
59
|
+
- `sv update` - Update all dependencies to the latest possible versions
|
|
60
|
+
- `sv help` - Description of all commands
|
package/dist/index.d.ts
ADDED
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;AAEA,kCAAgC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const parseGitUrl_1 = require("../parseGitUrl");
|
|
4
|
+
describe('Parse git url', () => {
|
|
5
|
+
it('Without version', () => {
|
|
6
|
+
const url = 'git@github.com:Casique-front/audio-mixer.git';
|
|
7
|
+
expect((0, parseGitUrl_1.parseGitUrl)(url)).toEqual({
|
|
8
|
+
url: 'git@github.com:Casique-front/audio-mixer.git',
|
|
9
|
+
version: undefined,
|
|
10
|
+
name: 'audio-mixer',
|
|
11
|
+
});
|
|
12
|
+
});
|
|
13
|
+
it('With version', () => {
|
|
14
|
+
const url = 'git@github.com:Casique-front/audio-mixer.git@1.0.1';
|
|
15
|
+
expect((0, parseGitUrl_1.parseGitUrl)(url)).toEqual({
|
|
16
|
+
url: 'git@github.com:Casique-front/audio-mixer.git',
|
|
17
|
+
version: '1.0.1',
|
|
18
|
+
name: 'audio-mixer',
|
|
19
|
+
});
|
|
20
|
+
});
|
|
21
|
+
it('Wrong string', () => {
|
|
22
|
+
const url = 'xxx@version';
|
|
23
|
+
expect((0, parseGitUrl_1.parseGitUrl)(url)).toEqual({
|
|
24
|
+
url: 'xxx@version',
|
|
25
|
+
version: null,
|
|
26
|
+
name: '',
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
//# sourceMappingURL=parseGitUrl.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseGitUrl.test.js","sourceRoot":"","sources":["../../../src/__tests__/parseGitUrl.test.ts"],"names":[],"mappings":";;AAAA,gDAA6C;AAE7C,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,EAAE,CAAC,iBAAiB,EAAE,GAAG,EAAE;QACzB,MAAM,GAAG,GAAG,8CAA8C,CAAC;QAE3D,MAAM,CAAC,IAAA,yBAAW,EAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC;YAC/B,GAAG,EAAE,8CAA8C;YACnD,OAAO,EAAE,SAAS;YAClB,IAAI,EAAE,aAAa;SACpB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,cAAc,EAAE,GAAG,EAAE;QACtB,MAAM,GAAG,GAAG,oDAAoD,CAAC;QAEjE,MAAM,CAAC,IAAA,yBAAW,EAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC;YAC/B,GAAG,EAAE,8CAA8C;YACnD,OAAO,EAAE,OAAO;YAChB,IAAI,EAAE,aAAa;SACpB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,cAAc,EAAE,GAAG,EAAE;QACtB,MAAM,GAAG,GAAG,aAAa,CAAC;QAE1B,MAAM,CAAC,IAAA,yBAAW,EAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC;YAC/B,GAAG,EAAE,aAAa;YAClB,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,EAAE;SACT,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const versionUtil_1 = require("../versionUtil");
|
|
4
|
+
describe('Latest', () => {
|
|
5
|
+
it('Single version', () => {
|
|
6
|
+
const v = versionUtil_1.versionUtil.latest(['1.0.0']);
|
|
7
|
+
expect(v).toBe('1.0.0');
|
|
8
|
+
});
|
|
9
|
+
it('Path versions', () => {
|
|
10
|
+
const v = versionUtil_1.versionUtil.latest(['^1.0.0', '^1.0.1']);
|
|
11
|
+
expect(v).toBe('1.0.1');
|
|
12
|
+
});
|
|
13
|
+
it('Minor versions', () => {
|
|
14
|
+
const v = versionUtil_1.versionUtil.latest(['^1.1.0', '^1.0.23']);
|
|
15
|
+
expect(v).toBe('1.1.0');
|
|
16
|
+
});
|
|
17
|
+
it('Major versions', () => {
|
|
18
|
+
const v = versionUtil_1.versionUtil.latest(['^2.0.0', '^1.10.23']);
|
|
19
|
+
expect(v).toBe('2.0.0');
|
|
20
|
+
});
|
|
21
|
+
});
|
|
22
|
+
describe('Validate', () => {
|
|
23
|
+
it('Pass', () => {
|
|
24
|
+
expect(versionUtil_1.versionUtil.validate('')).toBe(false);
|
|
25
|
+
expect(versionUtil_1.versionUtil.validate('123')).toBe(false);
|
|
26
|
+
expect(versionUtil_1.versionUtil.validate('1.2.3')).toBe(true);
|
|
27
|
+
expect(versionUtil_1.versionUtil.validate('1.2.3', true)).toBe(true);
|
|
28
|
+
expect(versionUtil_1.versionUtil.validate('^1.2.3', true)).toBe(true);
|
|
29
|
+
expect(versionUtil_1.versionUtil.validate('^1.2.3')).toBe(false);
|
|
30
|
+
expect(versionUtil_1.versionUtil.validate('*')).toBe(false);
|
|
31
|
+
expect(versionUtil_1.versionUtil.validate('*', true)).toBe(true);
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
describe('Compare', () => {
|
|
35
|
+
it('Major mode', () => {
|
|
36
|
+
expect(versionUtil_1.versionUtil.compare([1, 2, 3], [1, 3, 4], 0)).toBe(true);
|
|
37
|
+
expect(versionUtil_1.versionUtil.compare([1, 3, 3], [1, 2, 4], 0)).toBe(false);
|
|
38
|
+
expect(versionUtil_1.versionUtil.compare([1, 2, 3], [1, 2, 4], 1)).toBe(true);
|
|
39
|
+
expect(versionUtil_1.versionUtil.compare([1, 2, 4], [1, 2, 3], 1)).toBe(false);
|
|
40
|
+
});
|
|
41
|
+
it('Minor mode', () => {
|
|
42
|
+
expect(versionUtil_1.versionUtil.compare([1, 2, 3], [1, 2, 4], 1)).toBe(true);
|
|
43
|
+
expect(versionUtil_1.versionUtil.compare([1, 2, 4], [1, 2, 3], 1)).toBe(false);
|
|
44
|
+
});
|
|
45
|
+
it('Path mode', () => {
|
|
46
|
+
expect(versionUtil_1.versionUtil.compare([1, 2, 3], [1, 2, 3], 2)).toBe(true);
|
|
47
|
+
expect(versionUtil_1.versionUtil.compare([1, 2, 4], [1, 2, 3], 2)).toBe(false);
|
|
48
|
+
expect(versionUtil_1.versionUtil.compare([1, 2, 3], [1, 2, 4], 2)).toBe(false);
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
//# sourceMappingURL=versionUtil.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"versionUtil.test.js","sourceRoot":"","sources":["../../../src/__tests__/versionUtil.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.buildGraph = void 0;
|
|
7
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
+
const pkgJsonUtil_1 = require("./pkgJsonUtil");
|
|
9
|
+
const log_1 = require("./log");
|
|
10
|
+
const git_1 = require("./git");
|
|
11
|
+
const parseGitUrl_1 = require("./parseGitUrl");
|
|
12
|
+
const versionUtil_1 = require("./versionUtil");
|
|
13
|
+
const buildGraph = () => {
|
|
14
|
+
const baseJson = pkgJsonUtil_1.pkgJsonUtil.read();
|
|
15
|
+
const baseTree = {};
|
|
16
|
+
if (!baseJson)
|
|
17
|
+
return log_1.log.error('Not a npm project');
|
|
18
|
+
if (!baseJson.sv)
|
|
19
|
+
return log_1.log.message('There is no dependencies');
|
|
20
|
+
const recursiveBuilder = (dependencies = {}, parent = '*') => {
|
|
21
|
+
Object.entries(dependencies).forEach(([url, version]) => {
|
|
22
|
+
const { name } = (0, parseGitUrl_1.parseGitUrl)(url);
|
|
23
|
+
const jsonPath = pkgJsonUtil_1.pkgJsonUtil.getPkgJsonPath(name);
|
|
24
|
+
if (!versionUtil_1.versionUtil.validate(version, true)) {
|
|
25
|
+
const em = `<${version}> for [${name}] in [${parent}]`;
|
|
26
|
+
return log_1.log.error('Unknown version', em);
|
|
27
|
+
}
|
|
28
|
+
if (!jsonPath) {
|
|
29
|
+
git_1.git.addSumbmodule(url);
|
|
30
|
+
}
|
|
31
|
+
const exists = baseTree[name] || null;
|
|
32
|
+
const mJson = exists ? null : pkgJsonUtil_1.pkgJsonUtil.read(name);
|
|
33
|
+
if (!version)
|
|
34
|
+
return log_1.log.error('Module', name, 'not installed');
|
|
35
|
+
const meta = exists?.meta || { version: mJson.version, sv: mJson.sv };
|
|
36
|
+
const parents = exists?.parents || {};
|
|
37
|
+
baseTree[name] = {
|
|
38
|
+
meta,
|
|
39
|
+
parents: { ...parents, [parent]: version },
|
|
40
|
+
};
|
|
41
|
+
recursiveBuilder(meta.sv, name);
|
|
42
|
+
});
|
|
43
|
+
};
|
|
44
|
+
recursiveBuilder(baseJson.sv, baseJson.name);
|
|
45
|
+
const graph = Object.entries(baseTree).reduce((acc, [name, data]) => {
|
|
46
|
+
const versions = git_1.git.listVersions(name);
|
|
47
|
+
const { parents, meta } = data;
|
|
48
|
+
const used = Object.entries(parents).reduce((selective, [, v]) => (versionUtil_1.versionUtil.pick(selective, v)), versions);
|
|
49
|
+
if (!used.length) {
|
|
50
|
+
const longestVersion = Object.values(parents).reduce((len, v) => (v.length > len ? v.length : len), 0);
|
|
51
|
+
const formattedName = chalk_1.default.green.bold(name);
|
|
52
|
+
const baseMsg = `${chalk_1.default.red('Confilict')} for ${formattedName}:`;
|
|
53
|
+
const conflictMsg = Object.entries(parents).reduce((msg, [pName, v]) => {
|
|
54
|
+
const formatedV = chalk_1.default.bold.red(String(v).padEnd(longestVersion, ' '));
|
|
55
|
+
return [
|
|
56
|
+
...msg,
|
|
57
|
+
` - Version ${formatedV} used in ${chalk_1.default.green.bold(pName)}`,
|
|
58
|
+
];
|
|
59
|
+
}, [baseMsg]);
|
|
60
|
+
log_1.log.error(conflictMsg.join('\n'));
|
|
61
|
+
}
|
|
62
|
+
if (!used.includes(meta.version)) {
|
|
63
|
+
git_1.git.checkout(name, versionUtil_1.versionUtil.latest(used));
|
|
64
|
+
}
|
|
65
|
+
return {
|
|
66
|
+
...acc,
|
|
67
|
+
[name]: { versions, parents, used, version: meta.version },
|
|
68
|
+
};
|
|
69
|
+
}, {});
|
|
70
|
+
return graph;
|
|
71
|
+
};
|
|
72
|
+
exports.buildGraph = buildGraph;
|
|
73
|
+
//# sourceMappingURL=buildGraph.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buildGraph.js","sourceRoot":"","sources":["../../src/buildGraph.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":";;;AAAa,QAAA,MAAM,GAAG;IACpB,GAAG,EAAE,SAAS;IACd,GAAG,EAAE,QAAQ;CACd,CAAC"}
|
package/dist/src/git.js
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.git = void 0;
|
|
7
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
+
const child_process_1 = require("child_process");
|
|
9
|
+
const path_1 = __importDefault(require("path"));
|
|
10
|
+
const config_1 = require("./config");
|
|
11
|
+
const log_1 = require("./log");
|
|
12
|
+
const parseGitUrl_1 = require("./parseGitUrl");
|
|
13
|
+
const versionUtil_1 = require("./versionUtil");
|
|
14
|
+
const addSumbmodule = (url) => {
|
|
15
|
+
const { name } = (0, parseGitUrl_1.parseGitUrl)(url);
|
|
16
|
+
const module = path_1.default.join(config_1.config.dir, name);
|
|
17
|
+
try {
|
|
18
|
+
(0, child_process_1.execSync)(`git submodule add ${url} ${module}`);
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
log_1.log.error(url, 'Is not a git repo');
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
const checkout = (name, version) => {
|
|
25
|
+
const module = path_1.default.join(config_1.config.dir, name);
|
|
26
|
+
const styledName = chalk_1.default.green.bold(name);
|
|
27
|
+
const styledVer = chalk_1.default.green.bold(version);
|
|
28
|
+
log_1.log.message('Checkout', styledName, 'to', styledVer);
|
|
29
|
+
try {
|
|
30
|
+
(0, child_process_1.execSync)(`git -C ${module} fetch`);
|
|
31
|
+
(0, child_process_1.execSync)(`git -C ${module} checkout ${version} -q`);
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
log_1.log.error('Checkout failded');
|
|
35
|
+
}
|
|
36
|
+
;
|
|
37
|
+
};
|
|
38
|
+
const listVersions = (projectName) => {
|
|
39
|
+
const module = path_1.default.join(config_1.config.dir, projectName);
|
|
40
|
+
(0, child_process_1.execSync)(`git -C ${module} fetch`);
|
|
41
|
+
const res = (0, child_process_1.execSync)(`git -C ${module} tag -l`);
|
|
42
|
+
const tagList = res.toString().split(/\r?\n/);
|
|
43
|
+
return tagList.filter(tag => {
|
|
44
|
+
if (!tag)
|
|
45
|
+
return false;
|
|
46
|
+
return versionUtil_1.versionUtil.validate(tag);
|
|
47
|
+
});
|
|
48
|
+
};
|
|
49
|
+
exports.git = {
|
|
50
|
+
addSumbmodule,
|
|
51
|
+
checkout,
|
|
52
|
+
listVersions,
|
|
53
|
+
};
|
|
54
|
+
//# sourceMappingURL=git.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/git.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,iDAAyC;AACzC,gDAAwB;AACxB,qCAAkC;AAClC,+BAA4B;AAC5B,+CAA4C;AAC5C,+CAA4C;AAE5C,MAAM,aAAa,GAAG,CAAC,GAAW,EAAE,EAAE;IACpC,MAAM,EAAE,IAAI,EAAE,GAAG,IAAA,yBAAW,EAAC,GAAG,CAAC,CAAC;IAClC,MAAM,MAAM,GAAG,cAAI,CAAC,IAAI,CAAC,eAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAE3C,IAAI;QACF,IAAA,wBAAQ,EAAC,qBAAqB,GAAG,IAAI,MAAM,EAAE,CAAC,CAAC;KAChD;IAAC,MAAM;QACN,SAAG,CAAC,KAAK,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC;KACrC;AACH,CAAC,CAAC;AAEF,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAE,OAAe,EAAE,EAAE;IACjD,MAAM,MAAM,GAAG,cAAI,CAAC,IAAI,CAAC,eAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC3C,MAAM,UAAU,GAAG,eAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1C,MAAM,SAAS,GAAG,eAAK,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5C,SAAG,CAAC,OAAO,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;IAErD,IAAI;QACF,IAAA,wBAAQ,EAAC,UAAU,MAAM,QAAQ,CAAC,CAAC;QACnC,IAAA,wBAAQ,EAAC,UAAU,MAAM,aAAa,OAAO,KAAK,CAAC,CAAC;KACrD;IAAC,MAAM;QACN,SAAG,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;KAC/B;IAAA,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,WAAmB,EAAE,EAAE;IAC3C,MAAM,MAAM,GAAG,cAAI,CAAC,IAAI,CAAC,eAAM,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IAClD,IAAA,wBAAQ,EAAC,UAAU,MAAM,QAAQ,CAAC,CAAC;IACnC,MAAM,GAAG,GAAG,IAAA,wBAAQ,EAAC,UAAU,MAAM,SAAS,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAE9C,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;QAC1B,IAAI,CAAC,GAAG;YAAE,OAAO,KAAK,CAAC;QAEvB,OAAO,yBAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEW,QAAA,GAAG,GAAG;IACjB,aAAa;IACb,QAAQ;IACR,YAAY;CACb,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const install: (arg: any) => void;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.install = void 0;
|
|
7
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
+
const parseGitUrl_1 = require("./parseGitUrl");
|
|
9
|
+
const pkgJsonUtil_1 = require("./pkgJsonUtil");
|
|
10
|
+
const log_1 = require("./log");
|
|
11
|
+
const git_1 = require("./git");
|
|
12
|
+
const versionUtil_1 = require("./versionUtil");
|
|
13
|
+
const buildGraph_1 = require("./buildGraph");
|
|
14
|
+
/* Yargs typed as any */
|
|
15
|
+
const install = (arg) => {
|
|
16
|
+
const { target } = arg;
|
|
17
|
+
const { url, version, name } = (0, parseGitUrl_1.parseGitUrl)(arg.url);
|
|
18
|
+
if (!name) {
|
|
19
|
+
return log_1.log.error(chalk_1.default.red.bold(url), '- is not a git url!');
|
|
20
|
+
}
|
|
21
|
+
const targetPkg = pkgJsonUtil_1.pkgJsonUtil.read(target);
|
|
22
|
+
let installedPkg = pkgJsonUtil_1.pkgJsonUtil.read(name);
|
|
23
|
+
if (!installedPkg) {
|
|
24
|
+
git_1.git.addSumbmodule(url);
|
|
25
|
+
installedPkg = pkgJsonUtil_1.pkgJsonUtil.read(name);
|
|
26
|
+
}
|
|
27
|
+
const versions = git_1.git.listVersions(name);
|
|
28
|
+
const latestVersion = versionUtil_1.versionUtil.latest(versions);
|
|
29
|
+
const requestedVersion = version || latestVersion;
|
|
30
|
+
if (!versions.includes(requestedVersion)) {
|
|
31
|
+
const styledName = `Package ${chalk_1.default.bold.green(name)}`;
|
|
32
|
+
const styledVer = chalk_1.default.bgRed.bold.white(` ${requestedVersion} `);
|
|
33
|
+
const errMsg = `does not contain version ${styledVer}.`;
|
|
34
|
+
const styledVList = chalk_1.default.bold.green(versions.join(', '));
|
|
35
|
+
const helpMsg = `Use one from [${styledVList}]`;
|
|
36
|
+
log_1.log.error(styledName, errMsg, helpMsg);
|
|
37
|
+
}
|
|
38
|
+
targetPkg.sv[url] = `^${requestedVersion}`;
|
|
39
|
+
pkgJsonUtil_1.pkgJsonUtil.write(targetPkg, target);
|
|
40
|
+
(0, buildGraph_1.buildGraph)();
|
|
41
|
+
};
|
|
42
|
+
exports.install = install;
|
|
43
|
+
//# sourceMappingURL=install.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/install.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,+CAA4C;AAC5C,+CAA4C;AAC5C,+BAA4B;AAC5B,+BAA4B;AAC5B,+CAA4C;AAC5C,6CAA0C;AAO1C,wBAAwB;AACjB,MAAM,OAAO,GAAG,CAAC,GAAQ,EAAE,EAAE;IAClC,MAAM,EAAE,MAAM,EAAE,GAAG,GAAW,CAAC;IAC/B,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,IAAA,yBAAW,EAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAEpD,IAAI,CAAC,IAAI,EAAE;QACT,OAAO,SAAG,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,qBAAqB,CAAC,CAAC;KAC9D;IAED,MAAM,SAAS,GAAG,yBAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3C,IAAI,YAAY,GAAG,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE1C,IAAI,CAAC,YAAY,EAAE;QACjB,SAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QACvB,YAAY,GAAG,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACvC;IAED,MAAM,QAAQ,GAAG,SAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,aAAa,GAAG,yBAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACnD,MAAM,gBAAgB,GAAG,OAAO,IAAI,aAAa,CAAC;IAElD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE;QACxC,MAAM,UAAU,GAAG,WAAW,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACvD,MAAM,SAAS,GAAG,eAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,gBAAgB,GAAG,CAAC,CAAC;QAClE,MAAM,MAAM,GAAG,4BAA4B,SAAS,GAAG,CAAC;QACxD,MAAM,WAAW,GAAG,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1D,MAAM,OAAO,GAAG,iBAAiB,WAAW,GAAG,CAAC;QAChD,SAAG,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;KACxC;IAED,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,gBAAgB,EAAE,CAAC;IAC3C,yBAAW,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACrC,IAAA,uBAAU,GAAE,CAAC;AACf,CAAC,CAAC;AAhCW,QAAA,OAAO,WAgClB"}
|
package/dist/src/log.js
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.log = void 0;
|
|
7
|
+
const yargs_1 = __importDefault(require("yargs"));
|
|
8
|
+
const message = (...args) => {
|
|
9
|
+
// eslint-disable-next-line no-console
|
|
10
|
+
console.log(...args);
|
|
11
|
+
};
|
|
12
|
+
const error = (...args) => {
|
|
13
|
+
message(...args);
|
|
14
|
+
yargs_1.default.exit(1, new Error(args.join(' ')));
|
|
15
|
+
};
|
|
16
|
+
exports.log = {
|
|
17
|
+
message,
|
|
18
|
+
error,
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=log.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log.js","sourceRoot":"","sources":["../../src/log.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAE1B,MAAM,OAAO,GAAG,CAAC,GAAG,IAAc,EAAE,EAAE;IACpC,sCAAsC;IACtC,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;AACvB,CAAC,CAAC;AAEF,MAAM,KAAK,GAAG,CAAC,GAAG,IAAc,EAAE,EAAE;IAClC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;IACjB,eAAK,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC3C,CAAC,CAAC;AAEW,QAAA,GAAG,GAAG;IACjB,OAAO;IACP,KAAK;CACN,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseGitUrl = void 0;
|
|
4
|
+
const PARSE_REGEX = /^(?<url>.*\.git)(@(?<version>.*))?$/;
|
|
5
|
+
const NAME_REGEX = /\/(?<name>.*)\.git/;
|
|
6
|
+
const makeEmptyObject = (url) => ({
|
|
7
|
+
name: '',
|
|
8
|
+
url,
|
|
9
|
+
version: null,
|
|
10
|
+
});
|
|
11
|
+
const parseGitUrl = (url) => {
|
|
12
|
+
const { groups } = PARSE_REGEX.exec(url) || {};
|
|
13
|
+
if (!groups || !groups.url)
|
|
14
|
+
return makeEmptyObject(url);
|
|
15
|
+
const { groups: nameGroups } = NAME_REGEX.exec(url) || {};
|
|
16
|
+
const { name } = nameGroups || {};
|
|
17
|
+
if (!name)
|
|
18
|
+
return makeEmptyObject(url);
|
|
19
|
+
return {
|
|
20
|
+
url: groups.url,
|
|
21
|
+
version: groups.version,
|
|
22
|
+
name,
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
exports.parseGitUrl = parseGitUrl;
|
|
26
|
+
//# sourceMappingURL=parseGitUrl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseGitUrl.js","sourceRoot":"","sources":["../../src/parseGitUrl.ts"],"names":[],"mappings":";;;AAMA,MAAM,WAAW,GAAG,qCAAqC,CAAC;AAC1D,MAAM,UAAU,GAAG,oBAAoB,CAAC;AAExC,MAAM,eAAe,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,CAAC;IACxC,IAAI,EAAE,EAAE;IACR,GAAG;IACH,OAAO,EAAE,IAAI;CACd,CAAC,CAAC;AAEI,MAAM,WAAW,GAAG,CAAC,GAAW,EAAgB,EAAE;IACvD,MAAM,EAAE,MAAM,EAAE,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;IAE/C,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG;QAAE,OAAO,eAAe,CAAC,GAAG,CAAC,CAAC;IAExD,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;IAC1D,MAAM,EAAE,IAAI,EAAE,GAAG,UAAU,IAAI,EAAE,CAAC;IAElC,IAAI,CAAC,IAAI;QAAE,OAAO,eAAe,CAAC,GAAG,CAAC,CAAC;IAEvC,OAAO;QACL,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,IAAI;KACL,CAAC;AACJ,CAAC,CAAC;AAfW,QAAA,WAAW,eAetB"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.pkgJsonUtil = void 0;
|
|
7
|
+
const fs_1 = __importDefault(require("fs"));
|
|
8
|
+
const path_1 = __importDefault(require("path"));
|
|
9
|
+
const config_1 = require("./config");
|
|
10
|
+
const JSON_NAME = 'package.json';
|
|
11
|
+
const getPkgJsonPath = (name) => {
|
|
12
|
+
const folder = name ? [config_1.config.dir, name] : [];
|
|
13
|
+
const jsonPath = path_1.default.join(process.cwd(), ...folder, JSON_NAME);
|
|
14
|
+
const isJsonExists = fs_1.default.existsSync(jsonPath);
|
|
15
|
+
if (!isJsonExists)
|
|
16
|
+
return null;
|
|
17
|
+
return jsonPath;
|
|
18
|
+
};
|
|
19
|
+
const read = (name) => {
|
|
20
|
+
const jsonPath = getPkgJsonPath(name);
|
|
21
|
+
if (!jsonPath)
|
|
22
|
+
return null;
|
|
23
|
+
const jsonString = fs_1.default.readFileSync(jsonPath, 'utf-8');
|
|
24
|
+
return JSON.parse(jsonString);
|
|
25
|
+
};
|
|
26
|
+
const write = (data, name) => {
|
|
27
|
+
const jsonPath = getPkgJsonPath(name);
|
|
28
|
+
if (!jsonPath)
|
|
29
|
+
return null;
|
|
30
|
+
fs_1.default.writeFileSync(jsonPath, JSON.stringify(data, null, 2));
|
|
31
|
+
};
|
|
32
|
+
exports.pkgJsonUtil = {
|
|
33
|
+
getPkgJsonPath,
|
|
34
|
+
read,
|
|
35
|
+
write,
|
|
36
|
+
};
|
|
37
|
+
module.exports = { pkgJsonUtil: exports.pkgJsonUtil };
|
|
38
|
+
//# sourceMappingURL=pkgJsonUtil.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pkgJsonUtil.js","sourceRoot":"","sources":["../../src/pkgJsonUtil.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAoB;AACpB,gDAAwB;AACxB,qCAAkC;AAElC,MAAM,SAAS,GAAG,cAAc,CAAC;AAEjC,MAAM,cAAc,GAAG,CAAC,IAAa,EAAE,EAAE;IACvC,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,eAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9C,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,GAAG,MAAM,EAAE,SAAS,CAAC,CAAC;IAChE,MAAM,YAAY,GAAG,YAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC7C,IAAI,CAAC,YAAY;QAAE,OAAO,IAAI,CAAC;IAE/B,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,IAAI,GAAG,CAAC,IAAa,EAAE,EAAE;IAC7B,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC3B,MAAM,UAAU,GAAG,YAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAEtD,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;AAChC,CAAC,CAAC;AAEF,MAAM,KAAK,GAAG,CAAC,IAAY,EAAE,IAAa,EAAE,EAAE;IAC5C,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC3B,YAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5D,CAAC,CAAC;AAEW,QAAA,WAAW,GAAG;IACzB,cAAc;IACd,IAAI;IACJ,KAAK;CACN,CAAC;AAEF,MAAM,CAAC,OAAO,GAAG,EAAE,WAAW,EAAX,mBAAW,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
7
|
+
const yargs_1 = __importDefault(require("yargs"));
|
|
8
|
+
const buildGraph_1 = require("./buildGraph");
|
|
9
|
+
const versionUtil_1 = require("./versionUtil");
|
|
10
|
+
const install_1 = require("./install");
|
|
11
|
+
const log_1 = require("./log");
|
|
12
|
+
const git_1 = require("./git");
|
|
13
|
+
const mainProcess = () => {
|
|
14
|
+
(0, buildGraph_1.buildGraph)();
|
|
15
|
+
log_1.log.message(chalk_1.default.green.bold('Everything is up to date!🔥'));
|
|
16
|
+
};
|
|
17
|
+
const update = () => {
|
|
18
|
+
const graph = (0, buildGraph_1.buildGraph)();
|
|
19
|
+
if (!graph)
|
|
20
|
+
return;
|
|
21
|
+
Object.entries(graph).forEach(([name, data]) => {
|
|
22
|
+
const { version, used } = data;
|
|
23
|
+
const latestVersion = versionUtil_1.versionUtil.latest(used);
|
|
24
|
+
if (latestVersion !== version) {
|
|
25
|
+
git_1.git.checkout(name, latestVersion);
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
};
|
|
29
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-expressions
|
|
30
|
+
yargs_1.default.scriptName('sv')
|
|
31
|
+
.usage('$0 <cmd> [args]')
|
|
32
|
+
.command(['validate', '$0', 'v'], 'Validate and install modules', () => { }, mainProcess)
|
|
33
|
+
.command(['update', 'u'], 'Update git modules to actual versions', () => { }, update)
|
|
34
|
+
.command(['install <url> [target]', 'i'], 'Install new submodule', y => y.positional('url', {
|
|
35
|
+
type: 'string',
|
|
36
|
+
describe: 'Git submodule url',
|
|
37
|
+
}).positional('target', {
|
|
38
|
+
type: 'string',
|
|
39
|
+
describe: 'Target module name',
|
|
40
|
+
}), install_1.install)
|
|
41
|
+
.help()
|
|
42
|
+
.argv;
|
|
43
|
+
//# sourceMappingURL=submoduleVersion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"submoduleVersion.js","sourceRoot":"","sources":["../../src/submoduleVersion.ts"],"names":[],"mappings":";;;;;AAAA,kDAA0B;AAC1B,kDAA0B;AAC1B,6CAA0C;AAC1C,+CAA4C;AAC5C,uCAAoC;AACpC,+BAA4B;AAC5B,+BAA4B;AAE5B,MAAM,WAAW,GAAG,GAAG,EAAE;IACvB,IAAA,uBAAU,GAAE,CAAC;IACb,SAAG,CAAC,OAAO,CAAC,eAAK,CAAC,KAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC,CAAC;AAC/D,CAAC,CAAC;AAEF,MAAM,MAAM,GAAG,GAAG,EAAE;IAClB,MAAM,KAAK,GAAG,IAAA,uBAAU,GAAE,CAAC;IAC3B,IAAI,CAAC,KAAK;QAAE,OAAO;IACnB,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;QAC7C,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;QAC/B,MAAM,aAAa,GAAG,yBAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,aAAa,KAAK,OAAO,EAAE;YAC7B,SAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;SACnC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,oEAAoE;AACpE,eAAK,CAAC,UAAU,CAAC,IAAI,CAAC;KACnB,KAAK,CAAC,iBAAiB,CAAC;KACxB,OAAO,CACN,CAAC,UAAU,EAAE,IAAI,EAAE,GAAG,CAAC,EACvB,8BAA8B,EAC9B,GAAG,EAAE,GAAE,CAAC,EACR,WAAW,CACZ;KACA,OAAO,CACN,CAAC,QAAQ,EAAE,GAAG,CAAC,EACf,uCAAuC,EACvC,GAAG,EAAE,GAAE,CAAC,EACR,MAAM,CACP;KACA,OAAO,CACN,CAAC,wBAAwB,EAAE,GAAG,CAAC,EAC/B,uBAAuB,EACvB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE;IACvB,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,mBAAmB;CAC9B,CAAC,CAAC,UAAU,CAAC,QAAQ,EAAE;IACtB,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,oBAAoB;CAC/B,CAAC,EACF,iBAAO,CACR;KACA,IAAI,EAAE;KACN,IAAI,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
declare enum ComapreMode {
|
|
2
|
+
major = 0,
|
|
3
|
+
minor = 1,
|
|
4
|
+
path = 2
|
|
5
|
+
}
|
|
6
|
+
export declare const versionUtil: {
|
|
7
|
+
compare: (baseVer: number[], actualVer: number[], compareMode: ComapreMode) => any;
|
|
8
|
+
pick: (allVersions: string[], v: string) => string[];
|
|
9
|
+
validate: (v: string, relative?: boolean) => boolean;
|
|
10
|
+
latest: (versions: string[]) => string;
|
|
11
|
+
};
|
|
12
|
+
export {};
|