submodule-version 2.0.2 → 2.0.3
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 +26 -9
- package/dist/src/buildGraph.js +28 -13
- package/dist/src/buildGraph.js.map +1 -1
- package/dist/src/git.js +4 -3
- package/dist/src/git.js.map +1 -1
- package/dist/src/install.js +2 -2
- package/dist/src/install.js.map +1 -1
- package/dist/src/versionUtil.js +1 -1
- package/dist/src/versionUtil.js.map +1 -1
- package/package.json +1 -1
- package/src/buildGraph.ts +33 -12
- package/src/git.ts +4 -3
- package/src/install.ts +2 -2
- package/src/versionUtil.ts +1 -1
package/README.md
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
`Submodule version` is a tool to manage git submodules as versioned packages.
|
|
8
8
|
|
|
9
|
-
This tool
|
|
9
|
+
This tool designed 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
|
|
|
@@ -16,16 +16,17 @@ Take a look on the next situation:
|
|
|
16
16
|
|
|
17
17
|
- Project has 2 submodules `ui-button-element` and `render-engine`
|
|
18
18
|
- Package `ui-button-element` dependents on the `render-engine`
|
|
19
|
-
- Third repo `ui-slider-element` dependets on newest version of the `render-engine`
|
|
19
|
+
- Third repo `ui-slider-element` dependets on newest version of the `render-engine` and not include in the project
|
|
20
20
|
|
|
21
21
|
This cause next problems:
|
|
22
22
|
|
|
23
|
-
- Add `ui-slider-element` cause difficulties with handle different `render-engine` versions
|
|
24
|
-
-
|
|
23
|
+
- Add submodule `ui-slider-element` cause difficulties with handle different `render-engine` versions
|
|
24
|
+
- Manual swithing branches in submodules with big codebase can confuse
|
|
25
|
+
- Updated `ui-button-element` with new version of `render-engine` should be used in another project with the same version
|
|
25
26
|
|
|
26
27
|
Submodule version helps to
|
|
27
28
|
|
|
28
|
-
-
|
|
29
|
+
- Handle which project should be updated and which version should be installed
|
|
29
30
|
- Help update submodules and theirs dependencies
|
|
30
31
|
- Install new submodules
|
|
31
32
|
|
|
@@ -50,11 +51,27 @@ Submodule version helps to
|
|
|
50
51
|
"git@github.com:guljeny/submodule-version.git": "^1.0.0"
|
|
51
52
|
}
|
|
52
53
|
```
|
|
54
|
+
- Each submodule has a [version](#versioning) tags, and `sv` use list of this tags to resolve dependencies
|
|
53
55
|
- `Submodule version` creates a graph of whole project and install only possible and actual versions
|
|
54
56
|
|
|
57
|
+
## Versioning
|
|
58
|
+
|
|
59
|
+
Sumodules without specified version tags will be installed with ref to the latest commit. You should manage them manually.
|
|
60
|
+
|
|
61
|
+
To add new version in submodule:
|
|
62
|
+
- Specify version in `package.json`
|
|
63
|
+
- Add and push git tag with the same version (`git tag 1.0.1`)
|
|
64
|
+
|
|
65
|
+
|
|
55
66
|
## Commands
|
|
56
67
|
|
|
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
|
|
68
|
+
- `npx sv validate` - Validate all dependencis and install missing modules
|
|
69
|
+
- `npx sv install <git_url> [target_submodule]` - Install new dependency
|
|
70
|
+
- `npx sv update` - Update all dependencies to the latest possible versions
|
|
71
|
+
- `npx sv help` - Description of all commands
|
|
72
|
+
|
|
73
|
+
## Submodule dependencies
|
|
74
|
+
|
|
75
|
+
Sumbodules can contains their own dependencies specified in `package.json` as `sv` object.
|
|
76
|
+
|
|
77
|
+
To install submodule in submodule run `npx install <git_url> [target_submodule]`
|
package/dist/src/buildGraph.js
CHANGED
|
@@ -4,6 +4,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.buildGraph = void 0;
|
|
7
|
+
const fs_1 = __importDefault(require("fs"));
|
|
8
|
+
const path_1 = __importDefault(require("path"));
|
|
9
|
+
const config_1 = require("./config");
|
|
7
10
|
const chalk_1 = __importDefault(require("chalk"));
|
|
8
11
|
const pkgJsonUtil_1 = require("./pkgJsonUtil");
|
|
9
12
|
const log_1 = require("./log");
|
|
@@ -17,23 +20,28 @@ const buildGraph = () => {
|
|
|
17
20
|
return log_1.log.error('Not a npm project');
|
|
18
21
|
if (!baseJson.sv)
|
|
19
22
|
return log_1.log.message('There is no dependencies');
|
|
23
|
+
// First pass of graph creation. Read and validate data w/o networking
|
|
20
24
|
const recursiveBuilder = (dependencies = {}, parent = '*') => {
|
|
21
25
|
Object.entries(dependencies).forEach(([url, version]) => {
|
|
22
26
|
const { name } = (0, parseGitUrl_1.parseGitUrl)(url);
|
|
23
|
-
const
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
+
const moduleDir = path_1.default.join(process.cwd(), config_1.config.dir, name);
|
|
28
|
+
const isInstalled = fs_1.default.existsSync(moduleDir);
|
|
29
|
+
if (version && !versionUtil_1.versionUtil.validate(version, true)) {
|
|
30
|
+
const stV = chalk_1.default.bgRed.bold.white(` ${version} `);
|
|
31
|
+
const stName = chalk_1.default.red.bold(name);
|
|
32
|
+
const stParent = chalk_1.default.green.bold(parent);
|
|
33
|
+
return log_1.log.error('Unknown version', stV, 'for', stName, 'in', stParent);
|
|
27
34
|
}
|
|
28
|
-
if (!
|
|
35
|
+
if (!isInstalled) {
|
|
29
36
|
git_1.git.addSumbmodule(url);
|
|
30
37
|
}
|
|
31
|
-
const
|
|
32
|
-
const mJson =
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
38
|
+
const existEntry = baseTree[name] || null;
|
|
39
|
+
const mJson = existEntry ? null : pkgJsonUtil_1.pkgJsonUtil.read(name);
|
|
40
|
+
const meta = {
|
|
41
|
+
version: existEntry?.meta.version || mJson?.version || version || '*',
|
|
42
|
+
sv: existEntry?.meta.sv || mJson?.sv || {},
|
|
43
|
+
};
|
|
44
|
+
const parents = existEntry?.parents || {};
|
|
37
45
|
baseTree[name] = {
|
|
38
46
|
meta,
|
|
39
47
|
parents: { ...parents, [parent]: version },
|
|
@@ -46,7 +54,8 @@ const buildGraph = () => {
|
|
|
46
54
|
const versions = git_1.git.listVersions(name);
|
|
47
55
|
const { parents, meta } = data;
|
|
48
56
|
const used = Object.entries(parents).reduce((selective, [, v]) => (versionUtil_1.versionUtil.pick(selective, v)), versions);
|
|
49
|
-
|
|
57
|
+
// No comatible version found and module has version tags
|
|
58
|
+
if (!used.length && versions.length) {
|
|
50
59
|
const longestVersion = Object.values(parents).reduce((len, v) => (v.length > len ? v.length : len), 0);
|
|
51
60
|
const formattedName = chalk_1.default.green.bold(name);
|
|
52
61
|
const baseMsg = `${chalk_1.default.red('Confilict')} for ${formattedName}:`;
|
|
@@ -60,7 +69,13 @@ const buildGraph = () => {
|
|
|
60
69
|
log_1.log.error(conflictMsg.join('\n'));
|
|
61
70
|
}
|
|
62
71
|
if (!used.includes(meta.version)) {
|
|
63
|
-
|
|
72
|
+
const latest = versionUtil_1.versionUtil.latest(used);
|
|
73
|
+
if (latest) {
|
|
74
|
+
git_1.git.checkout(name, versionUtil_1.versionUtil.latest(used));
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
log_1.log.message(chalk_1.default.yellow('⚠️ WARN: Module'), chalk_1.default.bgYellow.black(` ${name} `), chalk_1.default.yellow('does not contain any version tag!'));
|
|
78
|
+
}
|
|
64
79
|
}
|
|
65
80
|
return {
|
|
66
81
|
...acc,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildGraph.js","sourceRoot":"","sources":["../../src/buildGraph.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,+CAA4C;AAC5C,+BAA4B;AAC5B,+BAA4B;AAC5B,+CAA4C;AAC5C,+CAA4C;AAqBrC,MAAM,UAAU,GAAG,GAAuC,EAAE;IACjE,MAAM,QAAQ,GAAG,yBAAW,CAAC,IAAI,EAAE,CAAC;IACpC,MAAM,QAAQ,GAAc,EAAE,CAAC;IAE/B,IAAI,CAAC,QAAQ;QAAE,OAAO,SAAG,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACrD,IAAI,CAAC,QAAQ,CAAC,EAAE;QAAE,OAAO,SAAG,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;IAEjE,MAAM,gBAAgB,GAAG,CAAC,eAAoB,EAAE,EAAE,MAAM,GAAG,GAAG,EAAE,EAAE;QAChE,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE;YACtD,MAAM,EAAE,IAAI,EAAE,GAAG,IAAA,yBAAW,EAAC,GAAG,CAAC,CAAC;YAClC,MAAM,
|
|
1
|
+
{"version":3,"file":"buildGraph.js","sourceRoot":"","sources":["../../src/buildGraph.ts"],"names":[],"mappings":"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"}
|
package/dist/src/git.js
CHANGED
|
@@ -25,9 +25,8 @@ const checkout = (name, version) => {
|
|
|
25
25
|
const module = path_1.default.join(config_1.config.dir, name);
|
|
26
26
|
const styledName = chalk_1.default.green.bold(name);
|
|
27
27
|
const styledVer = chalk_1.default.green.bold(version);
|
|
28
|
-
log_1.log.message('Checkout', styledName, 'to', styledVer);
|
|
29
28
|
try {
|
|
30
|
-
(
|
|
29
|
+
log_1.log.message('Checkout', styledName, 'to', styledVer);
|
|
31
30
|
(0, child_process_1.execSync)(`git -C ${module} checkout ${version} -q`);
|
|
32
31
|
}
|
|
33
32
|
catch {
|
|
@@ -37,7 +36,9 @@ const checkout = (name, version) => {
|
|
|
37
36
|
};
|
|
38
37
|
const listVersions = (projectName) => {
|
|
39
38
|
const module = path_1.default.join(config_1.config.dir, projectName);
|
|
40
|
-
|
|
39
|
+
const styledName = chalk_1.default.green.bold(projectName);
|
|
40
|
+
log_1.log.message('Fetching tag list for', styledName);
|
|
41
|
+
(0, child_process_1.execSync)(`git -C ${module} fetch --tags`);
|
|
41
42
|
const res = (0, child_process_1.execSync)(`git -C ${module} tag -l`);
|
|
42
43
|
const tagList = res.toString().split(/\r?\n/);
|
|
43
44
|
return tagList.filter(tag => {
|
package/dist/src/git.js.map
CHANGED
|
@@ -1 +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;
|
|
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;IAE5C,IAAI;QACF,SAAG,CAAC,OAAO,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;QACrD,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,MAAM,UAAU,GAAG,eAAK,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACjD,SAAG,CAAC,OAAO,CAAC,uBAAuB,EAAE,UAAU,CAAC,CAAC;IACjD,IAAA,wBAAQ,EAAC,UAAU,MAAM,eAAe,CAAC,CAAC;IAC1C,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"}
|
package/dist/src/install.js
CHANGED
|
@@ -27,7 +27,7 @@ const install = (arg) => {
|
|
|
27
27
|
const versions = git_1.git.listVersions(name);
|
|
28
28
|
const latestVersion = versionUtil_1.versionUtil.latest(versions);
|
|
29
29
|
const requestedVersion = version || latestVersion;
|
|
30
|
-
if (!versions.includes(requestedVersion)) {
|
|
30
|
+
if (!versions.includes(requestedVersion) && versions.length) {
|
|
31
31
|
const styledName = `Package ${chalk_1.default.bold.green(name)}`;
|
|
32
32
|
const styledVer = chalk_1.default.bgRed.bold.white(` ${requestedVersion} `);
|
|
33
33
|
const errMsg = `does not contain version ${styledVer}.`;
|
|
@@ -35,7 +35,7 @@ const install = (arg) => {
|
|
|
35
35
|
const helpMsg = `Use one from [${styledVList}]`;
|
|
36
36
|
log_1.log.error(styledName, errMsg, helpMsg);
|
|
37
37
|
}
|
|
38
|
-
targetPkg.sv[url] = `^${requestedVersion}
|
|
38
|
+
targetPkg.sv[url] = requestedVersion ? `^${requestedVersion}` : '*';
|
|
39
39
|
pkgJsonUtil_1.pkgJsonUtil.write(targetPkg, target);
|
|
40
40
|
(0, buildGraph_1.buildGraph)();
|
|
41
41
|
};
|
package/dist/src/install.js.map
CHANGED
|
@@ -1 +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;
|
|
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,IAAI,QAAQ,CAAC,MAAM,EAAE;QAC3D,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,gBAAgB,CAAC,CAAC,CAAC,IAAI,gBAAgB,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;IACpE,yBAAW,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACrC,IAAA,uBAAU,GAAE,CAAC;AACf,CAAC,CAAC;AAhCW,QAAA,OAAO,WAgClB"}
|
package/dist/src/versionUtil.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"versionUtil.js","sourceRoot":"","sources":["../../src/versionUtil.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"versionUtil.js","sourceRoot":"","sources":["../../src/versionUtil.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/buildGraph.ts
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import { config } from './config';
|
|
1
4
|
import chalk from 'chalk';
|
|
2
5
|
import { pkgJsonUtil } from './pkgJsonUtil';
|
|
3
6
|
import { log } from './log';
|
|
@@ -31,26 +34,34 @@ export const buildGraph = (): Record<string, IGraphEntry> | void => {
|
|
|
31
34
|
if (!baseJson) return log.error('Not a npm project');
|
|
32
35
|
if (!baseJson.sv) return log.message('There is no dependencies');
|
|
33
36
|
|
|
37
|
+
// First pass of graph creation. Read and validate data w/o networking
|
|
34
38
|
const recursiveBuilder = (dependencies: TSV = {}, parent = '*') => {
|
|
35
39
|
Object.entries(dependencies).forEach(([url, version]) => {
|
|
36
40
|
const { name } = parseGitUrl(url);
|
|
37
|
-
const
|
|
38
|
-
|
|
39
|
-
const em = `<${version}> for [${name}] in [${parent}]`;
|
|
41
|
+
const moduleDir = path.join(process.cwd(), config.dir, name);
|
|
42
|
+
const isInstalled = fs.existsSync(moduleDir);
|
|
40
43
|
|
|
41
|
-
|
|
44
|
+
if (version && !versionUtil.validate(version, true)) {
|
|
45
|
+
const stV = chalk.bgRed.bold.white(` ${version} `);
|
|
46
|
+
const stName = chalk.red.bold(name);
|
|
47
|
+
const stParent = chalk.green.bold(parent);
|
|
48
|
+
|
|
49
|
+
return log.error('Unknown version', stV, 'for', stName, 'in', stParent);
|
|
42
50
|
}
|
|
43
|
-
|
|
51
|
+
|
|
52
|
+
if (!isInstalled) {
|
|
44
53
|
git.addSumbmodule(url);
|
|
45
54
|
}
|
|
46
55
|
|
|
47
|
-
const
|
|
48
|
-
const mJson =
|
|
56
|
+
const existEntry = baseTree[name] || null;
|
|
57
|
+
const mJson = existEntry ? null : pkgJsonUtil.read(name);
|
|
49
58
|
|
|
50
|
-
|
|
59
|
+
const meta = {
|
|
60
|
+
version: existEntry?.meta.version || mJson?.version || version || '*',
|
|
61
|
+
sv: existEntry?.meta.sv || mJson?.sv || {},
|
|
62
|
+
};
|
|
51
63
|
|
|
52
|
-
const
|
|
53
|
-
const parents = exists?.parents || {};
|
|
64
|
+
const parents = existEntry?.parents || {};
|
|
54
65
|
|
|
55
66
|
baseTree[name] = {
|
|
56
67
|
meta,
|
|
@@ -71,7 +82,8 @@ export const buildGraph = (): Record<string, IGraphEntry> | void => {
|
|
|
71
82
|
versionUtil.pick(selective, v)
|
|
72
83
|
), versions);
|
|
73
84
|
|
|
74
|
-
|
|
85
|
+
// No comatible version found and module has version tags
|
|
86
|
+
if (!used.length && versions.length) {
|
|
75
87
|
const longestVersion = Object.values(parents).reduce((len, v) => (
|
|
76
88
|
v.length > len ? v.length : len
|
|
77
89
|
), 0);
|
|
@@ -92,7 +104,16 @@ export const buildGraph = (): Record<string, IGraphEntry> | void => {
|
|
|
92
104
|
}
|
|
93
105
|
|
|
94
106
|
if (!used.includes(meta.version)) {
|
|
95
|
-
|
|
107
|
+
const latest = versionUtil.latest(used);
|
|
108
|
+
if (latest) {
|
|
109
|
+
git.checkout(name, versionUtil.latest(used));
|
|
110
|
+
} else {
|
|
111
|
+
log.message(
|
|
112
|
+
chalk.yellow('⚠️ WARN: Module'),
|
|
113
|
+
chalk.bgYellow.black(` ${name} `),
|
|
114
|
+
chalk.yellow('does not contain any version tag!'),
|
|
115
|
+
);
|
|
116
|
+
}
|
|
96
117
|
}
|
|
97
118
|
|
|
98
119
|
return {
|
package/src/git.ts
CHANGED
|
@@ -21,10 +21,9 @@ const checkout = (name: string, version: string) => {
|
|
|
21
21
|
const module = path.join(config.dir, name);
|
|
22
22
|
const styledName = chalk.green.bold(name);
|
|
23
23
|
const styledVer = chalk.green.bold(version);
|
|
24
|
-
log.message('Checkout', styledName, 'to', styledVer);
|
|
25
24
|
|
|
26
25
|
try {
|
|
27
|
-
|
|
26
|
+
log.message('Checkout', styledName, 'to', styledVer);
|
|
28
27
|
execSync(`git -C ${module} checkout ${version} -q`);
|
|
29
28
|
} catch {
|
|
30
29
|
log.error('Checkout failded');
|
|
@@ -33,7 +32,9 @@ const checkout = (name: string, version: string) => {
|
|
|
33
32
|
|
|
34
33
|
const listVersions = (projectName: string) => {
|
|
35
34
|
const module = path.join(config.dir, projectName);
|
|
36
|
-
|
|
35
|
+
const styledName = chalk.green.bold(projectName);
|
|
36
|
+
log.message('Fetching tag list for', styledName);
|
|
37
|
+
execSync(`git -C ${module} fetch --tags`);
|
|
37
38
|
const res = execSync(`git -C ${module} tag -l`);
|
|
38
39
|
const tagList = res.toString().split(/\r?\n/);
|
|
39
40
|
|
package/src/install.ts
CHANGED
|
@@ -32,7 +32,7 @@ export const install = (arg: any) => {
|
|
|
32
32
|
const latestVersion = versionUtil.latest(versions);
|
|
33
33
|
const requestedVersion = version || latestVersion;
|
|
34
34
|
|
|
35
|
-
if (!versions.includes(requestedVersion)) {
|
|
35
|
+
if (!versions.includes(requestedVersion) && versions.length) {
|
|
36
36
|
const styledName = `Package ${chalk.bold.green(name)}`;
|
|
37
37
|
const styledVer = chalk.bgRed.bold.white(` ${requestedVersion} `);
|
|
38
38
|
const errMsg = `does not contain version ${styledVer}.`;
|
|
@@ -41,7 +41,7 @@ export const install = (arg: any) => {
|
|
|
41
41
|
log.error(styledName, errMsg, helpMsg);
|
|
42
42
|
}
|
|
43
43
|
|
|
44
|
-
targetPkg.sv[url] = `^${requestedVersion}
|
|
44
|
+
targetPkg.sv[url] = requestedVersion ? `^${requestedVersion}` : '*';
|
|
45
45
|
pkgJsonUtil.write(targetPkg, target);
|
|
46
46
|
buildGraph();
|
|
47
47
|
};
|