submodule-version 2.0.3 → 2.1.0

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.
Files changed (101) hide show
  1. package/README.md +1 -1
  2. package/dist/index.d.ts +1 -1
  3. package/dist/index.js +1 -1
  4. package/dist/index.js.map +1 -1
  5. package/dist/src/Graph/Graph.d.ts +12 -0
  6. package/dist/src/Graph/Graph.js +85 -0
  7. package/dist/src/Graph/Graph.js.map +1 -0
  8. package/dist/src/Graph/GraphError.d.ts +11 -0
  9. package/dist/src/Graph/GraphError.js +11 -0
  10. package/dist/src/Graph/GraphError.js.map +1 -0
  11. package/dist/src/Graph/index.d.ts +2 -0
  12. package/dist/src/Graph/index.js +8 -0
  13. package/dist/src/Graph/index.js.map +1 -0
  14. package/dist/src/PkgJSONManager.d.ts +6 -0
  15. package/dist/src/PkgJSONManager.js +53 -0
  16. package/dist/src/PkgJSONManager.js.map +1 -0
  17. package/dist/src/git/__tests__/parseGitUrl.test.js.map +1 -0
  18. package/dist/src/git/git.d.ts +6 -0
  19. package/dist/src/git/git.js +53 -0
  20. package/dist/src/git/git.js.map +1 -0
  21. package/dist/src/git/index.d.ts +1 -0
  22. package/dist/src/git/index.js +6 -0
  23. package/dist/src/git/index.js.map +1 -0
  24. package/dist/src/{parseGitUrl.d.ts → git/parseGitUrl.d.ts} +1 -2
  25. package/dist/src/git/parseGitUrl.js.map +1 -0
  26. package/dist/src/index.d.ts +1 -0
  27. package/dist/src/index.js +6 -0
  28. package/dist/src/index.js.map +1 -0
  29. package/dist/src/runOptions.d.ts +4 -0
  30. package/dist/src/runOptions.js +9 -0
  31. package/dist/src/runOptions.js.map +1 -0
  32. package/dist/src/runner/handleErrors/handleBuildGraphError.d.ts +1 -0
  33. package/dist/src/runner/handleErrors/handleBuildGraphError.js +42 -0
  34. package/dist/src/runner/handleErrors/handleBuildGraphError.js.map +1 -0
  35. package/dist/src/runner/handleErrors/handleErrors.d.ts +1 -0
  36. package/dist/src/runner/handleErrors/handleErrors.js +13 -0
  37. package/dist/src/runner/handleErrors/handleErrors.js.map +1 -0
  38. package/dist/src/runner/handleErrors/handleInstallError.d.ts +1 -0
  39. package/dist/src/runner/handleErrors/handleInstallError.js +30 -0
  40. package/dist/src/runner/handleErrors/handleInstallError.js.map +1 -0
  41. package/dist/src/runner/handleErrors/index.d.ts +1 -0
  42. package/dist/src/runner/handleErrors/index.js +6 -0
  43. package/dist/src/runner/handleErrors/index.js.map +1 -0
  44. package/dist/src/runner/index.d.ts +1 -0
  45. package/dist/src/runner/index.js +4 -0
  46. package/dist/src/runner/index.js.map +1 -0
  47. package/dist/src/runner/runer.js +54 -0
  48. package/dist/src/runner/runer.js.map +1 -0
  49. package/dist/src/sv.d.ts +8 -0
  50. package/dist/src/sv.js +55 -0
  51. package/dist/src/sv.js.map +1 -0
  52. package/dist/src/versionUtil.js.map +1 -1
  53. package/index-dev.ts +1 -1
  54. package/index.ts +1 -1
  55. package/package.json +12 -3
  56. package/src/Graph/Graph.ts +121 -0
  57. package/src/Graph/GraphError.ts +12 -0
  58. package/src/Graph/index.ts +2 -0
  59. package/src/PkgJSONManager.ts +57 -0
  60. package/src/git/git.ts +64 -0
  61. package/src/git/index.ts +1 -0
  62. package/src/{parseGitUrl.ts → git/parseGitUrl.ts} +1 -1
  63. package/src/index.ts +1 -0
  64. package/src/runOptions.ts +4 -0
  65. package/src/runner/handleErrors/handleBuildGraphError.ts +49 -0
  66. package/src/runner/handleErrors/handleErrors.ts +9 -0
  67. package/src/runner/handleErrors/handleInstallError.ts +26 -0
  68. package/src/runner/handleErrors/index.ts +1 -0
  69. package/src/runner/index.ts +1 -0
  70. package/src/runner/runer.ts +76 -0
  71. package/src/sv.ts +67 -0
  72. package/dist/src/__tests__/parseGitUrl.test.js.map +0 -1
  73. package/dist/src/buildGraph.d.ts +0 -7
  74. package/dist/src/buildGraph.js +0 -88
  75. package/dist/src/buildGraph.js.map +0 -1
  76. package/dist/src/config.d.ts +0 -4
  77. package/dist/src/config.js +0 -8
  78. package/dist/src/config.js.map +0 -1
  79. package/dist/src/git.d.ts +0 -5
  80. package/dist/src/git.js +0 -55
  81. package/dist/src/git.js.map +0 -1
  82. package/dist/src/install.d.ts +0 -1
  83. package/dist/src/install.js +0 -43
  84. package/dist/src/install.js.map +0 -1
  85. package/dist/src/parseGitUrl.js.map +0 -1
  86. package/dist/src/pkgJsonUtil.d.ts +0 -5
  87. package/dist/src/pkgJsonUtil.js +0 -38
  88. package/dist/src/pkgJsonUtil.js.map +0 -1
  89. package/dist/src/submoduleVersion.js +0 -43
  90. package/dist/src/submoduleVersion.js.map +0 -1
  91. package/src/buildGraph.ts +0 -126
  92. package/src/config.ts +0 -4
  93. package/src/git.ts +0 -52
  94. package/src/install.ts +0 -47
  95. package/src/pkgJsonUtil.ts +0 -36
  96. package/src/submoduleVersion.ts +0 -54
  97. /package/dist/src/{__tests__ → git/__tests__}/parseGitUrl.test.d.ts +0 -0
  98. /package/dist/src/{__tests__ → git/__tests__}/parseGitUrl.test.js +0 -0
  99. /package/dist/src/{parseGitUrl.js → git/parseGitUrl.js} +0 -0
  100. /package/dist/src/{submoduleVersion.d.ts → runner/runer.d.ts} +0 -0
  101. /package/src/{__tests__ → git/__tests__}/parseGitUrl.test.ts +0 -0
@@ -1,88 +0,0 @@
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 fs_1 = __importDefault(require("fs"));
8
- const path_1 = __importDefault(require("path"));
9
- const config_1 = require("./config");
10
- const chalk_1 = __importDefault(require("chalk"));
11
- const pkgJsonUtil_1 = require("./pkgJsonUtil");
12
- const log_1 = require("./log");
13
- const git_1 = require("./git");
14
- const parseGitUrl_1 = require("./parseGitUrl");
15
- const versionUtil_1 = require("./versionUtil");
16
- const buildGraph = () => {
17
- const baseJson = pkgJsonUtil_1.pkgJsonUtil.read();
18
- const baseTree = {};
19
- if (!baseJson)
20
- return log_1.log.error('Not a npm project');
21
- if (!baseJson.sv)
22
- return log_1.log.message('There is no dependencies');
23
- // First pass of graph creation. Read and validate data w/o networking
24
- const recursiveBuilder = (dependencies = {}, parent = '*') => {
25
- Object.entries(dependencies).forEach(([url, version]) => {
26
- const { name } = (0, parseGitUrl_1.parseGitUrl)(url);
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);
34
- }
35
- if (!isInstalled) {
36
- git_1.git.addSumbmodule(url);
37
- }
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 || {};
45
- baseTree[name] = {
46
- meta,
47
- parents: { ...parents, [parent]: version },
48
- };
49
- recursiveBuilder(meta.sv, name);
50
- });
51
- };
52
- recursiveBuilder(baseJson.sv, baseJson.name);
53
- const graph = Object.entries(baseTree).reduce((acc, [name, data]) => {
54
- const versions = git_1.git.listVersions(name);
55
- const { parents, meta } = data;
56
- const used = Object.entries(parents).reduce((selective, [, v]) => (versionUtil_1.versionUtil.pick(selective, v)), versions);
57
- // No comatible version found and module has version tags
58
- if (!used.length && versions.length) {
59
- const longestVersion = Object.values(parents).reduce((len, v) => (v.length > len ? v.length : len), 0);
60
- const formattedName = chalk_1.default.green.bold(name);
61
- const baseMsg = `${chalk_1.default.red('Confilict')} for ${formattedName}:`;
62
- const conflictMsg = Object.entries(parents).reduce((msg, [pName, v]) => {
63
- const formatedV = chalk_1.default.bold.red(String(v).padEnd(longestVersion, ' '));
64
- return [
65
- ...msg,
66
- ` - Version ${formatedV} used in ${chalk_1.default.green.bold(pName)}`,
67
- ];
68
- }, [baseMsg]);
69
- log_1.log.error(conflictMsg.join('\n'));
70
- }
71
- if (!used.includes(meta.version)) {
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
- }
79
- }
80
- return {
81
- ...acc,
82
- [name]: { versions, parents, used, version: meta.version },
83
- };
84
- }, {});
85
- return graph;
86
- };
87
- exports.buildGraph = buildGraph;
88
- //# sourceMappingURL=buildGraph.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"buildGraph.js","sourceRoot":"","sources":["../../src/buildGraph.ts"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- export declare const config: {
2
- dir: string;
3
- tag: string;
4
- };
@@ -1,8 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.config = void 0;
4
- exports.config = {
5
- dir: 'modules',
6
- tag: 'master',
7
- };
8
- //# sourceMappingURL=config.js.map
@@ -1 +0,0 @@
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.d.ts DELETED
@@ -1,5 +0,0 @@
1
- export declare const git: {
2
- addSumbmodule: (url: string) => void;
3
- checkout: (name: string, version: string) => void;
4
- listVersions: (projectName: string) => string[];
5
- };
package/dist/src/git.js DELETED
@@ -1,55 +0,0 @@
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
- try {
29
- log_1.log.message('Checkout', styledName, 'to', styledVer);
30
- (0, child_process_1.execSync)(`git -C ${module} checkout ${version} -q`);
31
- }
32
- catch {
33
- log_1.log.error('Checkout failded');
34
- }
35
- ;
36
- };
37
- const listVersions = (projectName) => {
38
- const module = path_1.default.join(config_1.config.dir, projectName);
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`);
42
- const res = (0, child_process_1.execSync)(`git -C ${module} tag -l`);
43
- const tagList = res.toString().split(/\r?\n/);
44
- return tagList.filter(tag => {
45
- if (!tag)
46
- return false;
47
- return versionUtil_1.versionUtil.validate(tag);
48
- });
49
- };
50
- exports.git = {
51
- addSumbmodule,
52
- checkout,
53
- listVersions,
54
- };
55
- //# sourceMappingURL=git.js.map
@@ -1 +0,0 @@
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"}
@@ -1 +0,0 @@
1
- export declare const install: (arg: any) => void;
@@ -1,43 +0,0 @@
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) && versions.length) {
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 ? `^${requestedVersion}` : '*';
39
- pkgJsonUtil_1.pkgJsonUtil.write(targetPkg, target);
40
- (0, buildGraph_1.buildGraph)();
41
- };
42
- exports.install = install;
43
- //# sourceMappingURL=install.js.map
@@ -1 +0,0 @@
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"}
@@ -1 +0,0 @@
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"}
@@ -1,5 +0,0 @@
1
- export declare const pkgJsonUtil: {
2
- getPkgJsonPath: (name?: string) => string | null;
3
- read: (name?: string) => any;
4
- write: (data: Object, name?: string) => null | undefined;
5
- };
@@ -1,38 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,43 +0,0 @@
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
@@ -1 +0,0 @@
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"}
package/src/buildGraph.ts DELETED
@@ -1,126 +0,0 @@
1
- import fs from 'fs';
2
- import path from 'path';
3
- import { config } from './config';
4
- import chalk from 'chalk';
5
- import { pkgJsonUtil } from './pkgJsonUtil';
6
- import { log } from './log';
7
- import { git } from './git';
8
- import { parseGitUrl } from './parseGitUrl';
9
- import { versionUtil } from './versionUtil';
10
-
11
- type TSV = Record<string, string>;
12
-
13
- interface ITreeEntry {
14
- meta: {
15
- version: string;
16
- sv: TSV;
17
- };
18
- parents: Record<string, string>;
19
- }
20
-
21
- type TBaseTree = Record<string, ITreeEntry>;
22
-
23
- export interface IGraphEntry {
24
- versions: string[];
25
- parents: Record<string, string>;
26
- used: string[];
27
- version: string;
28
- }
29
-
30
- export const buildGraph = (): Record<string, IGraphEntry> | void => {
31
- const baseJson = pkgJsonUtil.read();
32
- const baseTree: TBaseTree = {};
33
-
34
- if (!baseJson) return log.error('Not a npm project');
35
- if (!baseJson.sv) return log.message('There is no dependencies');
36
-
37
- // First pass of graph creation. Read and validate data w/o networking
38
- const recursiveBuilder = (dependencies: TSV = {}, parent = '*') => {
39
- Object.entries(dependencies).forEach(([url, version]) => {
40
- const { name } = parseGitUrl(url);
41
- const moduleDir = path.join(process.cwd(), config.dir, name);
42
- const isInstalled = fs.existsSync(moduleDir);
43
-
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);
50
- }
51
-
52
- if (!isInstalled) {
53
- git.addSumbmodule(url);
54
- }
55
-
56
- const existEntry = baseTree[name] || null;
57
- const mJson = existEntry ? null : pkgJsonUtil.read(name);
58
-
59
- const meta = {
60
- version: existEntry?.meta.version || mJson?.version || version || '*',
61
- sv: existEntry?.meta.sv || mJson?.sv || {},
62
- };
63
-
64
- const parents = existEntry?.parents || {};
65
-
66
- baseTree[name] = {
67
- meta,
68
- parents: { ...parents, [parent]: version },
69
- };
70
-
71
- recursiveBuilder(meta.sv, name);
72
- });
73
- };
74
-
75
- recursiveBuilder(baseJson.sv, baseJson.name);
76
-
77
- const graph = Object.entries(baseTree).reduce((acc, [name, data]) => {
78
- const versions = git.listVersions(name);
79
- const { parents, meta } = data;
80
-
81
- const used = Object.entries(parents).reduce((selective, [, v]) => (
82
- versionUtil.pick(selective, v)
83
- ), versions);
84
-
85
- // No comatible version found and module has version tags
86
- if (!used.length && versions.length) {
87
- const longestVersion = Object.values(parents).reduce((len, v) => (
88
- v.length > len ? v.length : len
89
- ), 0);
90
-
91
- const formattedName = chalk.green.bold(name);
92
- const baseMsg = `${chalk.red('Confilict')} for ${formattedName}:`;
93
-
94
- const conflictMsg = Object.entries(parents).reduce((msg, [pName, v]) => {
95
- const formatedV = chalk.bold.red(String(v).padEnd(longestVersion, ' '));
96
-
97
- return [
98
- ...msg,
99
- ` - Version ${formatedV} used in ${chalk.green.bold(pName)}`,
100
- ];
101
- }, [baseMsg]);
102
-
103
- log.error(conflictMsg.join('\n'));
104
- }
105
-
106
- if (!used.includes(meta.version)) {
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
- }
117
- }
118
-
119
- return {
120
- ...acc,
121
- [name]: { versions, parents, used, version: meta.version },
122
- };
123
- }, {});
124
-
125
- return graph;
126
- };
package/src/config.ts DELETED
@@ -1,4 +0,0 @@
1
- export const config = {
2
- dir: 'modules',
3
- tag: 'master',
4
- };
package/src/git.ts DELETED
@@ -1,52 +0,0 @@
1
- import chalk from 'chalk';
2
- import { execSync } from 'child_process';
3
- import path from 'path';
4
- import { config } from './config';
5
- import { log } from './log';
6
- import { parseGitUrl } from './parseGitUrl';
7
- import { versionUtil } from './versionUtil';
8
-
9
- const addSumbmodule = (url: string) => {
10
- const { name } = parseGitUrl(url);
11
- const module = path.join(config.dir, name);
12
-
13
- try {
14
- execSync(`git submodule add ${url} ${module}`);
15
- } catch {
16
- log.error(url, 'Is not a git repo');
17
- }
18
- };
19
-
20
- const checkout = (name: string, version: string) => {
21
- const module = path.join(config.dir, name);
22
- const styledName = chalk.green.bold(name);
23
- const styledVer = chalk.green.bold(version);
24
-
25
- try {
26
- log.message('Checkout', styledName, 'to', styledVer);
27
- execSync(`git -C ${module} checkout ${version} -q`);
28
- } catch {
29
- log.error('Checkout failded');
30
- };
31
- };
32
-
33
- const listVersions = (projectName: string) => {
34
- const module = path.join(config.dir, projectName);
35
- const styledName = chalk.green.bold(projectName);
36
- log.message('Fetching tag list for', styledName);
37
- execSync(`git -C ${module} fetch --tags`);
38
- const res = execSync(`git -C ${module} tag -l`);
39
- const tagList = res.toString().split(/\r?\n/);
40
-
41
- return tagList.filter(tag => {
42
- if (!tag) return false;
43
-
44
- return versionUtil.validate(tag);
45
- });
46
- };
47
-
48
- export const git = {
49
- addSumbmodule,
50
- checkout,
51
- listVersions,
52
- };
package/src/install.ts DELETED
@@ -1,47 +0,0 @@
1
- import chalk from "chalk";
2
- import { parseGitUrl } from "./parseGitUrl";
3
- import { pkgJsonUtil } from "./pkgJsonUtil";
4
- import { log } from "./log";
5
- import { git } from "./git";
6
- import { versionUtil } from "./versionUtil";
7
- import { buildGraph } from "./buildGraph";
8
-
9
- interface IArg {
10
- url: string;
11
- target?: string;
12
- }
13
-
14
- /* Yargs typed as any */
15
- export const install = (arg: any) => {
16
- const { target } = arg as IArg;
17
- const { url, version, name } = parseGitUrl(arg.url);
18
-
19
- if (!name) {
20
- return log.error(chalk.red.bold(url), '- is not a git url!');
21
- }
22
-
23
- const targetPkg = pkgJsonUtil.read(target);
24
- let installedPkg = pkgJsonUtil.read(name);
25
-
26
- if (!installedPkg) {
27
- git.addSumbmodule(url);
28
- installedPkg = pkgJsonUtil.read(name);
29
- }
30
-
31
- const versions = git.listVersions(name);
32
- const latestVersion = versionUtil.latest(versions);
33
- const requestedVersion = version || latestVersion;
34
-
35
- if (!versions.includes(requestedVersion) && versions.length) {
36
- const styledName = `Package ${chalk.bold.green(name)}`;
37
- const styledVer = chalk.bgRed.bold.white(` ${requestedVersion} `);
38
- const errMsg = `does not contain version ${styledVer}.`;
39
- const styledVList = chalk.bold.green(versions.join(', '));
40
- const helpMsg = `Use one from [${styledVList}]`;
41
- log.error(styledName, errMsg, helpMsg);
42
- }
43
-
44
- targetPkg.sv[url] = requestedVersion ? `^${requestedVersion}` : '*';
45
- pkgJsonUtil.write(targetPkg, target);
46
- buildGraph();
47
- };
@@ -1,36 +0,0 @@
1
- import fs from 'fs';
2
- import path from 'path';
3
- import { config } from './config';
4
-
5
- const JSON_NAME = 'package.json';
6
-
7
- const getPkgJsonPath = (name?: string) => {
8
- const folder = name ? [config.dir, name] : [];
9
- const jsonPath = path.join(process.cwd(), ...folder, JSON_NAME);
10
- const isJsonExists = fs.existsSync(jsonPath);
11
- if (!isJsonExists) return null;
12
-
13
- return jsonPath;
14
- };
15
-
16
- const read = (name?: string) => {
17
- const jsonPath = getPkgJsonPath(name);
18
- if (!jsonPath) return null;
19
- const jsonString = fs.readFileSync(jsonPath, 'utf-8');
20
-
21
- return JSON.parse(jsonString);
22
- };
23
-
24
- const write = (data: Object, name?: string) => {
25
- const jsonPath = getPkgJsonPath(name);
26
- if (!jsonPath) return null;
27
- fs.writeFileSync(jsonPath, JSON.stringify(data, null, 2));
28
- };
29
-
30
- export const pkgJsonUtil = {
31
- getPkgJsonPath,
32
- read,
33
- write,
34
- };
35
-
36
- module.exports = { pkgJsonUtil };
@@ -1,54 +0,0 @@
1
- import chalk from 'chalk';
2
- import yargs from 'yargs';
3
- import { buildGraph } from './buildGraph';
4
- import { versionUtil } from './versionUtil';
5
- import { install } from './install';
6
- import { log } from './log';
7
- import { git } from './git';
8
-
9
- const mainProcess = () => {
10
- buildGraph();
11
- log.message(chalk.green.bold('Everything is up to date!🔥'));
12
- };
13
-
14
- const update = () => {
15
- const graph = buildGraph();
16
- if (!graph) return;
17
- Object.entries(graph).forEach(([name, data]) => {
18
- const { version, used } = data;
19
- const latestVersion = versionUtil.latest(used);
20
- if (latestVersion !== version) {
21
- git.checkout(name, latestVersion);
22
- }
23
- });
24
- };
25
-
26
- // eslint-disable-next-line @typescript-eslint/no-unused-expressions
27
- yargs.scriptName('sv')
28
- .usage('$0 <cmd> [args]')
29
- .command(
30
- ['validate', '$0', 'v'],
31
- 'Validate and install modules',
32
- () => {},
33
- mainProcess,
34
- )
35
- .command(
36
- ['update', 'u'],
37
- 'Update git modules to actual versions',
38
- () => {},
39
- update,
40
- )
41
- .command(
42
- ['install <url> [target]', 'i'],
43
- 'Install new submodule',
44
- y => y.positional('url', {
45
- type: 'string',
46
- describe: 'Git submodule url',
47
- }).positional('target', {
48
- type: 'string',
49
- describe: 'Target module name',
50
- }),
51
- install,
52
- )
53
- .help()
54
- .argv;