submodule-version 2.0.4 → 2.1.1

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 (117) hide show
  1. package/dist/runner/handleErrors/handleBuildGraphError.d.ts +1 -0
  2. package/dist/runner/handleErrors/handleBuildGraphError.js +42 -0
  3. package/dist/runner/handleErrors/handleBuildGraphError.js.map +1 -0
  4. package/dist/runner/handleErrors/handleErrors.d.ts +1 -0
  5. package/dist/runner/handleErrors/handleErrors.js +15 -0
  6. package/dist/runner/handleErrors/handleErrors.js.map +1 -0
  7. package/dist/runner/handleErrors/handleGitError.d.ts +1 -0
  8. package/dist/runner/handleErrors/handleGitError.js +18 -0
  9. package/dist/runner/handleErrors/handleGitError.js.map +1 -0
  10. package/dist/runner/handleErrors/handleInstallError.d.ts +1 -0
  11. package/dist/runner/handleErrors/handleInstallError.js +30 -0
  12. package/dist/runner/handleErrors/handleInstallError.js.map +1 -0
  13. package/dist/runner/handleErrors/index.d.ts +1 -0
  14. package/dist/runner/handleErrors/index.js +6 -0
  15. package/dist/runner/handleErrors/index.js.map +1 -0
  16. package/dist/runner/index-dev.d.ts +2 -0
  17. package/dist/runner/index-dev.js +11 -0
  18. package/dist/runner/index-dev.js.map +1 -0
  19. package/dist/runner/index.d.ts +2 -0
  20. package/dist/{index.js → runner/index.js} +1 -1
  21. package/dist/runner/index.js.map +1 -0
  22. package/dist/runner/log.js.map +1 -0
  23. package/dist/runner/runner.d.ts +9 -0
  24. package/dist/runner/runner.js +63 -0
  25. package/dist/runner/runner.js.map +1 -0
  26. package/dist/src/Graph/Graph.d.ts +12 -0
  27. package/dist/src/Graph/Graph.js +85 -0
  28. package/dist/src/Graph/Graph.js.map +1 -0
  29. package/dist/src/Graph/GraphError.d.ts +11 -0
  30. package/dist/src/Graph/GraphError.js +11 -0
  31. package/dist/src/Graph/GraphError.js.map +1 -0
  32. package/dist/src/Graph/index.d.ts +2 -0
  33. package/dist/src/Graph/index.js +8 -0
  34. package/dist/src/Graph/index.js.map +1 -0
  35. package/dist/src/PkgJSONManager.d.ts +6 -0
  36. package/dist/src/PkgJSONManager.js +53 -0
  37. package/dist/src/PkgJSONManager.js.map +1 -0
  38. package/dist/src/git/GitError.d.ts +4 -0
  39. package/dist/src/git/GitError.js +11 -0
  40. package/dist/src/git/GitError.js.map +1 -0
  41. package/dist/src/git/__tests__/parseGitUrl.test.js.map +1 -0
  42. package/dist/src/git/git.d.ts +7 -0
  43. package/dist/src/git/git.js +52 -0
  44. package/dist/src/git/git.js.map +1 -0
  45. package/dist/src/git/index.d.ts +2 -0
  46. package/dist/src/git/index.js +8 -0
  47. package/dist/src/git/index.js.map +1 -0
  48. package/dist/src/{parseGitUrl.d.ts → git/parseGitUrl.d.ts} +1 -2
  49. package/dist/src/git/parseGitUrl.js.map +1 -0
  50. package/dist/src/index.d.ts +1 -0
  51. package/dist/src/index.js +6 -0
  52. package/dist/src/index.js.map +1 -0
  53. package/dist/src/runOptions.d.ts +4 -0
  54. package/dist/src/runOptions.js +9 -0
  55. package/dist/src/runOptions.js.map +1 -0
  56. package/dist/src/sv.d.ts +9 -0
  57. package/dist/src/sv.js +59 -0
  58. package/dist/src/sv.js.map +1 -0
  59. package/dist/src/versionUtil.js.map +1 -1
  60. package/package.json +5 -4
  61. package/runner/handleErrors/handleBuildGraphError.ts +49 -0
  62. package/runner/handleErrors/handleErrors.ts +11 -0
  63. package/runner/handleErrors/handleGitError.ts +16 -0
  64. package/runner/handleErrors/handleInstallError.ts +26 -0
  65. package/runner/handleErrors/index.ts +1 -0
  66. package/{index-dev.ts → runner/index-dev.ts} +2 -2
  67. package/runner/index.ts +3 -0
  68. package/runner/runner.ts +90 -0
  69. package/src/Graph/Graph.ts +121 -0
  70. package/src/Graph/GraphError.ts +12 -0
  71. package/src/Graph/index.ts +2 -0
  72. package/src/PkgJSONManager.ts +57 -0
  73. package/src/git/GitError.ts +5 -0
  74. package/src/git/git.ts +69 -0
  75. package/src/git/index.ts +2 -0
  76. package/src/{parseGitUrl.ts → git/parseGitUrl.ts} +1 -1
  77. package/src/index.ts +1 -0
  78. package/src/runOptions.ts +4 -0
  79. package/src/sv.ts +72 -0
  80. package/tsconfig.json +1 -1
  81. package/dist/index.d.ts +0 -2
  82. package/dist/index.js.map +0 -1
  83. package/dist/src/__tests__/parseGitUrl.test.js.map +0 -1
  84. package/dist/src/buildGraph.d.ts +0 -7
  85. package/dist/src/buildGraph.js +0 -88
  86. package/dist/src/buildGraph.js.map +0 -1
  87. package/dist/src/config.d.ts +0 -4
  88. package/dist/src/config.js +0 -8
  89. package/dist/src/config.js.map +0 -1
  90. package/dist/src/git.d.ts +0 -5
  91. package/dist/src/git.js +0 -55
  92. package/dist/src/git.js.map +0 -1
  93. package/dist/src/install.d.ts +0 -1
  94. package/dist/src/install.js +0 -43
  95. package/dist/src/install.js.map +0 -1
  96. package/dist/src/log.js.map +0 -1
  97. package/dist/src/parseGitUrl.js.map +0 -1
  98. package/dist/src/pkgJsonUtil.d.ts +0 -5
  99. package/dist/src/pkgJsonUtil.js +0 -38
  100. package/dist/src/pkgJsonUtil.js.map +0 -1
  101. package/dist/src/submoduleVersion.d.ts +0 -1
  102. package/dist/src/submoduleVersion.js +0 -43
  103. package/dist/src/submoduleVersion.js.map +0 -1
  104. package/index.ts +0 -3
  105. package/src/buildGraph.ts +0 -126
  106. package/src/config.ts +0 -4
  107. package/src/git.ts +0 -52
  108. package/src/install.ts +0 -47
  109. package/src/pkgJsonUtil.ts +0 -36
  110. package/src/submoduleVersion.ts +0 -54
  111. /package/dist/{src → runner}/log.d.ts +0 -0
  112. /package/dist/{src → runner}/log.js +0 -0
  113. /package/dist/src/{__tests__ → git/__tests__}/parseGitUrl.test.d.ts +0 -0
  114. /package/dist/src/{__tests__ → git/__tests__}/parseGitUrl.test.js +0 -0
  115. /package/dist/src/{parseGitUrl.js → git/parseGitUrl.js} +0 -0
  116. /package/{src → runner}/log.ts +0 -0
  117. /package/src/{__tests__ → git/__tests__}/parseGitUrl.test.ts +0 -0
@@ -0,0 +1 @@
1
+ export declare const handleBuildGraphError: (error: Error) => void;
@@ -0,0 +1,42 @@
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.handleBuildGraphError = void 0;
7
+ const Graph_1 = require("../../src/Graph");
8
+ const log_1 = require("../log");
9
+ const chalk_1 = __importDefault(require("chalk"));
10
+ const handleBuildGraphError = (error) => {
11
+ if (!(error instanceof Graph_1.GraphError))
12
+ return;
13
+ const { message: errorMessage, details } = error;
14
+ if (errorMessage === 'NOT_A_NPM') {
15
+ log_1.log.error('Not a npm project');
16
+ }
17
+ if (errorMessage === 'UNKNOWN_VERSION') {
18
+ const { name, version, parent } = details;
19
+ const stV = chalk_1.default.bgRed.bold.white(` ${version} `);
20
+ const stName = chalk_1.default.red.bold(name);
21
+ const stParent = chalk_1.default.green.bold(parent);
22
+ log_1.log.error('Unknown version', stV, 'for', stName, 'in', stParent);
23
+ }
24
+ if (errorMessage === 'VERSION_CONFLICT') {
25
+ const { parents, name } = details;
26
+ const longestVersion = Object.values(parents ?? {}).reduce((len, v) => (v.length > len ? v.length : len), 0);
27
+ const formattedName = chalk_1.default.green.bold(name);
28
+ const baseMsg = `${chalk_1.default.red('Confilict')} for ${formattedName}:`;
29
+ const conflictMsg = Object.entries(parents ?? {})
30
+ .reduce((msg, [pName, v]) => {
31
+ const formatedV = chalk_1.default.bold.red(String(v).padEnd(longestVersion, ' '));
32
+ return [
33
+ ...msg,
34
+ ` - Version ${formatedV} used in ${chalk_1.default.green.bold(pName)}`,
35
+ ];
36
+ }, [baseMsg]);
37
+ log_1.log.error(conflictMsg.join('\n'));
38
+ }
39
+ log_1.log.error(errorMessage);
40
+ };
41
+ exports.handleBuildGraphError = handleBuildGraphError;
42
+ //# sourceMappingURL=handleBuildGraphError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handleBuildGraphError.js","sourceRoot":"","sources":["../../../runner/handleErrors/handleBuildGraphError.ts"],"names":[],"mappings":";;;;;;AAAA,2CAA6C;AAC7C,gCAA6B;AAC7B,kDAA0B;AAEnB,MAAM,qBAAqB,GAAG,CAAC,KAAY,EAAE,EAAE;IACpD,IAAI,CAAC,CAAC,KAAK,YAAY,kBAAU,CAAC;QAAE,OAAO;IAE3C,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IAEjD,IAAI,YAAY,KAAK,WAAW,EAAE,CAAC;QACjC,SAAG,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACjC,CAAC;IAED,IAAI,YAAY,KAAK,iBAAiB,EAAE,CAAC;QACvC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;QAC1C,MAAM,GAAG,GAAG,eAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,OAAO,GAAG,CAAC,CAAC;QACnD,MAAM,MAAM,GAAG,eAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,QAAQ,GAAG,eAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAE1C,SAAG,CAAC,KAAK,CAAC,iBAAiB,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IACnE,CAAC;IAED,IAAI,YAAY,KAAK,kBAAkB,EAAE,CAAC;QACxC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;QAElC,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CACrE,CAAC,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAChC,EAAE,CAAC,CAAC,CAAC;QAEN,MAAM,aAAa,GAAG,eAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7C,MAAM,OAAO,GAAG,GAAG,eAAK,CAAC,GAAG,CAAC,WAAW,CAAC,QAAQ,aAAa,GAAG,CAAC;QAElE,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;aAC9C,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE;YAC1B,MAAM,SAAS,GAAG,eAAK,CAAC,IAAI,CAAC,GAAG,CAC9B,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,EAAE,GAAG,CAAC,CACtC,CAAC;YAEF,OAAO;gBACL,GAAG,GAAG;gBACN,eAAe,SAAS,YAAY,eAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;aAC9D,CAAC;QACJ,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;QAEhB,SAAG,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACpC,CAAC;IAED,SAAG,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;AAC1B,CAAC,CAAC;AA5CW,QAAA,qBAAqB,yBA4ChC"}
@@ -0,0 +1 @@
1
+ export declare const handleErrors: (error: Error, gitUrl: string) => Promise<void>;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.handleErrors = void 0;
4
+ const handleBuildGraphError_1 = require("./handleBuildGraphError");
5
+ const handleInstallError_1 = require("./handleInstallError");
6
+ const handleGitError_1 = require("./handleGitError");
7
+ const handleErrors = async (error, gitUrl) => {
8
+ await Promise.all([
9
+ (0, handleBuildGraphError_1.handleBuildGraphError)(error),
10
+ (0, handleInstallError_1.handleInstallError)(error, gitUrl),
11
+ (0, handleGitError_1.handleGitError)(error, gitUrl),
12
+ ]);
13
+ };
14
+ exports.handleErrors = handleErrors;
15
+ //# sourceMappingURL=handleErrors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handleErrors.js","sourceRoot":"","sources":["../../../runner/handleErrors/handleErrors.ts"],"names":[],"mappings":";;;AAAA,mEAAgE;AAChE,6DAA0D;AAC1D,qDAAkD;AAE3C,MAAM,YAAY,GAAG,KAAK,EAAE,KAAY,EAAE,MAAc,EAAE,EAAE;IACjE,MAAM,OAAO,CAAC,GAAG,CAAC;QAChB,IAAA,6CAAqB,EAAC,KAAK,CAAC;QAC5B,IAAA,uCAAkB,EAAC,KAAK,EAAE,MAAM,CAAC;QACjC,IAAA,+BAAc,EAAC,KAAK,EAAE,MAAM,CAAC;KAC9B,CAAC,CAAC;AACL,CAAC,CAAC;AANW,QAAA,YAAY,gBAMvB"}
@@ -0,0 +1 @@
1
+ export declare const handleGitError: (error: Error, url: string) => void;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.handleGitError = void 0;
4
+ const git_1 = require("../../src/git");
5
+ const log_1 = require("../log");
6
+ const handleGitError = (error, url) => {
7
+ if (!(error instanceof git_1.GitError))
8
+ return;
9
+ const { message: errorMessage } = error;
10
+ if (errorMessage === 'GIT_NOT_A_REPO') {
11
+ log_1.log.error(url, 'Is not a git repo');
12
+ }
13
+ if (errorMessage === 'GIT_MODULE_CHECKOUT_FAILED') {
14
+ log_1.log.error('Checkout failded');
15
+ }
16
+ };
17
+ exports.handleGitError = handleGitError;
18
+ //# sourceMappingURL=handleGitError.js.map
@@ -0,0 +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,GAAW,EAAE,EAAE;IAC1D,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,GAAG,EAAE,mBAAmB,CAAC,CAAC;IACtC,CAAC;IAED,IAAI,YAAY,KAAK,4BAA4B,EAAE,CAAC;QAClD,SAAG,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;IAChC,CAAC;AACH,CAAC,CAAC;AAZW,QAAA,cAAc,kBAYzB"}
@@ -0,0 +1 @@
1
+ export declare const handleInstallError: (error: Error, gitUrl: string) => Promise<void>;
@@ -0,0 +1,30 @@
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.handleInstallError = void 0;
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ const versionUtil_1 = require("../../src/versionUtil");
9
+ const log_1 = require("../log");
10
+ const git_1 = require("../../src/git");
11
+ const handleInstallError = async (error, gitUrl) => {
12
+ const { message } = error;
13
+ const { url, version, name } = git_1.git.parseUrl(gitUrl);
14
+ if (message === 'NOT_A_GIT_URL') {
15
+ return log_1.log.error(chalk_1.default.red.bold(url), '- is not a git url!');
16
+ }
17
+ if (message === 'REQUESTED_VERSION_NOT_EXISTS') {
18
+ const versions = await git_1.git.listVersions(name);
19
+ const latestVersion = versionUtil_1.versionUtil.latest(versions);
20
+ const requestedVersion = version || latestVersion;
21
+ const styledName = `Package ${chalk_1.default.bold.green(name)}`;
22
+ const styledVer = chalk_1.default.bgRed.bold.white(` ${requestedVersion} `);
23
+ const errMsg = `does not contain version ${styledVer}.`;
24
+ const styledVList = chalk_1.default.bold.green(versions.join(', '));
25
+ const helpMsg = `Use one from [${styledVList}]`;
26
+ return log_1.log.error(styledName, errMsg, helpMsg);
27
+ }
28
+ };
29
+ exports.handleInstallError = handleInstallError;
30
+ //# sourceMappingURL=handleInstallError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handleInstallError.js","sourceRoot":"","sources":["../../../runner/handleErrors/handleInstallError.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,uDAAoD;AACpD,gCAA6B;AAC7B,uCAAoC;AAE7B,MAAM,kBAAkB,GAAG,KAAK,EAAE,KAAY,EAAE,MAAc,EAAE,EAAE;IACvE,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IAC1B,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,SAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAEpD,IAAI,OAAO,KAAK,eAAe,EAAE,CAAC;QAChC,OAAO,SAAG,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,qBAAqB,CAAC,CAAC;IAC/D,CAAC;IAED,IAAI,OAAO,KAAK,8BAA8B,EAAE,CAAC;QAC/C,MAAM,QAAQ,GAAG,MAAM,SAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAC9C,MAAM,aAAa,GAAG,yBAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACnD,MAAM,gBAAgB,GAAG,OAAO,IAAI,aAAa,CAAC;QAClD,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;QAEhD,OAAO,SAAG,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAChD,CAAC;AACH,CAAC,CAAC;AApBW,QAAA,kBAAkB,sBAoB7B"}
@@ -0,0 +1 @@
1
+ export { handleErrors } from './handleErrors';
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.handleErrors = void 0;
4
+ var handleErrors_1 = require("./handleErrors");
5
+ Object.defineProperty(exports, "handleErrors", { enumerable: true, get: function () { return handleErrors_1.handleErrors; } });
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../runner/handleErrors/index.ts"],"names":[],"mappings":";;;AAAA,+CAA8C;AAArC,4GAAA,YAAY,OAAA"}
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env ts-node
2
+ import './runner';
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env ts-node
2
+ "use strict";
3
+ var __importDefault = (this && this.__importDefault) || function (mod) {
4
+ return (mod && mod.__esModule) ? mod : { "default": mod };
5
+ };
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ const log_1 = require("./log");
9
+ log_1.log.message(chalk_1.default.bgRed.white.bold(' RUNNED IN DEV MODE '));
10
+ require("./runner");
11
+ //# sourceMappingURL=index-dev.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-dev.js","sourceRoot":"","sources":["../../runner/index-dev.ts"],"names":[],"mappings":";;;;;;AAEA,kDAA0B;AAC1B,+BAA4B;AAE5B,SAAG,CAAC,OAAO,CAAC,eAAK,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC;AAC5D,oBAAkB"}
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ import './runner';
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
2
  "use strict";
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- require("./src/submoduleVersion");
4
+ require("./runner");
5
5
  //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../runner/index.ts"],"names":[],"mappings":";;;AAEA,oBAAkB"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log.js","sourceRoot":"","sources":["../../runner/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,9 @@
1
+ export declare const s: {
2
+ [x: string]: unknown;
3
+ _: (string | number)[];
4
+ $0: string;
5
+ } | Promise<{
6
+ [x: string]: unknown;
7
+ _: (string | number)[];
8
+ $0: string;
9
+ }>;
@@ -0,0 +1,63 @@
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.s = void 0;
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ const yargs_1 = __importDefault(require("yargs"));
9
+ const src_1 = require("../src");
10
+ const log_1 = require("./log");
11
+ const handleErrors_1 = require("./handleErrors");
12
+ const BASE_DIR = 'modules';
13
+ const makeEvent = (event) => {
14
+ const sv = new src_1.SV(process.cwd(), BASE_DIR);
15
+ return async (arg) => {
16
+ const { url: gitUrl } = arg;
17
+ try {
18
+ await event(sv, arg);
19
+ }
20
+ catch (e) {
21
+ (0, handleErrors_1.handleErrors)(e, gitUrl);
22
+ }
23
+ };
24
+ };
25
+ const install = makeEvent(async (sv, arg) => {
26
+ const { url: gitUrl, target } = arg;
27
+ await sv.install(gitUrl, target);
28
+ });
29
+ const update = makeEvent(async (sv) => {
30
+ await sv.update();
31
+ });
32
+ const remove = makeEvent(async (sv, arg) => {
33
+ const { name } = arg;
34
+ await sv.remove(name);
35
+ });
36
+ const validate = makeEvent(async (sv) => {
37
+ const result = await sv.buildGraph();
38
+ Object.entries(result).forEach(([name, entry]) => {
39
+ if (!entry.used.includes(entry.version) && entry.versions.length === 0) {
40
+ 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!'));
41
+ }
42
+ });
43
+ log_1.log.message(chalk_1.default.green.bold('Everything is up to date!🔥'));
44
+ });
45
+ // eslint-disable-next-line @typescript-eslint/no-unused-expressions
46
+ exports.s = yargs_1.default.scriptName('sv')
47
+ .usage('$0 <cmd> [args]')
48
+ .command(['validate', '$0', 'v'], 'Validate and install modules', () => { }, validate)
49
+ .command(['update', 'u'], 'Update git modules to actual versions', () => { }, update)
50
+ .command(['install <url> [target]', 'i'], 'Install new submodule', y => y.positional('url', {
51
+ type: 'string',
52
+ describe: 'Git submodule url',
53
+ }).positional('target', {
54
+ type: 'string',
55
+ describe: 'Target module name',
56
+ }), install)
57
+ .command(['remove <name>', 'r'], 'Remove submodule by name', y => y.positional('name', {
58
+ type: 'string',
59
+ describe: 'Submodule name',
60
+ }), remove)
61
+ .help()
62
+ .argv;
63
+ //# sourceMappingURL=runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../runner/runner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { PkgJSONManager } from '../PkgJSONManager';
2
+ export interface IGraphEntry {
3
+ versions: string[];
4
+ parents: Record<string, string>;
5
+ used: string[];
6
+ version: string;
7
+ }
8
+ export declare class Graph {
9
+ private pkgJSONManager;
10
+ constructor(pkgJSONManager: PkgJSONManager);
11
+ build(): Promise<Record<string, IGraphEntry>>;
12
+ }
@@ -0,0 +1,85 @@
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.Graph = void 0;
7
+ const fs_1 = __importDefault(require("fs"));
8
+ const path_1 = __importDefault(require("path"));
9
+ const versionUtil_1 = require("../versionUtil");
10
+ const git_1 = require("../git");
11
+ const runOptions_1 = require("../runOptions");
12
+ const GraphError_1 = require("./GraphError");
13
+ class Graph {
14
+ constructor(pkgJSONManager) {
15
+ this.pkgJSONManager = pkgJSONManager;
16
+ }
17
+ async build() {
18
+ const baseJson = await this.pkgJSONManager.read();
19
+ const baseTree = {};
20
+ if (!baseJson) {
21
+ throw new Error('NOT_A_NPM');
22
+ }
23
+ if (!baseJson.sv) {
24
+ /** There is no dependencies, graph is empty */
25
+ return {};
26
+ }
27
+ const recursiveBuilder = async (dependencies = {}, parent = '*') => {
28
+ await Promise.all(Object.entries(dependencies).map(async ([url, version]) => {
29
+ const { name } = git_1.git.parseUrl(url);
30
+ const { cwd, modulesDir } = runOptions_1.RunOptions;
31
+ const moduleDir = path_1.default.join(cwd, modulesDir, name);
32
+ const isInstalled = fs_1.default.existsSync(moduleDir);
33
+ if (version && !versionUtil_1.versionUtil.validate(version, true)) {
34
+ throw new GraphError_1.GraphError('UNKNOWN_VERSION', { name, version, parent });
35
+ }
36
+ if (!isInstalled) {
37
+ await git_1.git.addSumbmodule(url);
38
+ }
39
+ const existEntry = baseTree[name] || null;
40
+ const mJson = existEntry
41
+ ? null
42
+ : await this.pkgJSONManager.read(name);
43
+ const meta = {
44
+ version: existEntry?.meta.version
45
+ || mJson?.version
46
+ || version
47
+ || '*',
48
+ sv: existEntry?.meta.sv || mJson?.sv || {},
49
+ };
50
+ const parents = existEntry?.parents || {};
51
+ baseTree[name] = {
52
+ meta,
53
+ parents: { ...parents, [parent]: version },
54
+ };
55
+ await recursiveBuilder(meta.sv, name);
56
+ }));
57
+ };
58
+ await recursiveBuilder(baseJson.sv, baseJson.name);
59
+ const graph = await Promise.all(Object.entries(baseTree).map(async ([name, data]) => {
60
+ const versions = await git_1.git.listVersions(name);
61
+ const { parents, meta } = data;
62
+ const used = Object.entries(parents).reduce((selective, [, v]) => (versionUtil_1.versionUtil.pick(selective, v)), versions);
63
+ // No compatible version found and module has version tags
64
+ if (!used.length && versions.length) {
65
+ throw new GraphError_1.GraphError('VERSION_CONFLICT', { parents, name });
66
+ }
67
+ if (!used.includes(meta.version)) {
68
+ const latest = versionUtil_1.versionUtil.latest(used);
69
+ if (latest) {
70
+ await git_1.git.checkout(name, latest);
71
+ }
72
+ }
73
+ return {
74
+ name,
75
+ data: { versions, parents, used, version: meta.version },
76
+ };
77
+ }));
78
+ return graph.reduce((acc, { name, data }) => ({
79
+ ...acc,
80
+ [name]: data,
81
+ }), {});
82
+ }
83
+ }
84
+ exports.Graph = Graph;
85
+ //# sourceMappingURL=Graph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Graph.js","sourceRoot":"","sources":["../../../src/Graph/Graph.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ type TDetails = {
2
+ name: string;
3
+ parents?: Record<string, string>;
4
+ version?: string;
5
+ parent?: string;
6
+ };
7
+ export declare class GraphError extends Error {
8
+ details: TDetails;
9
+ constructor(type: string, details: TDetails);
10
+ }
11
+ export {};
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GraphError = void 0;
4
+ class GraphError extends Error {
5
+ constructor(type, details) {
6
+ super(type);
7
+ this.details = details;
8
+ }
9
+ }
10
+ exports.GraphError = GraphError;
11
+ //# sourceMappingURL=GraphError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GraphError.js","sourceRoot":"","sources":["../../../src/Graph/GraphError.ts"],"names":[],"mappings":";;;AAOA,MAAa,UAAW,SAAQ,KAAK;IACnC,YAAa,IAAY,EAAS,OAAiB;QACjD,KAAK,CAAC,IAAI,CAAC,CAAC;QADoB,YAAO,GAAP,OAAO,CAAU;IAEnD,CAAC;CACF;AAJD,gCAIC"}
@@ -0,0 +1,2 @@
1
+ export { Graph } from './Graph';
2
+ export { GraphError } from './GraphError';
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GraphError = exports.Graph = void 0;
4
+ var Graph_1 = require("./Graph");
5
+ Object.defineProperty(exports, "Graph", { enumerable: true, get: function () { return Graph_1.Graph; } });
6
+ var GraphError_1 = require("./GraphError");
7
+ Object.defineProperty(exports, "GraphError", { enumerable: true, get: function () { return GraphError_1.GraphError; } });
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Graph/index.ts"],"names":[],"mappings":";;;AAAA,iCAAgC;AAAvB,8FAAA,KAAK,OAAA;AACd,2CAA0C;AAAjC,wGAAA,UAAU,OAAA"}
@@ -0,0 +1,6 @@
1
+ export declare class PkgJSONManager {
2
+ private cache;
3
+ read: (submoduleName?: string) => Promise<any>;
4
+ write: (data: Object, submoduleName?: string) => Promise<void>;
5
+ clearCache(): void;
6
+ }
@@ -0,0 +1,53 @@
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.PkgJSONManager = void 0;
7
+ const fs_1 = __importDefault(require("fs"));
8
+ const util_1 = require("util");
9
+ const path_1 = __importDefault(require("path"));
10
+ const runOptions_1 = require("./runOptions");
11
+ const existsAsync = (0, util_1.promisify)(fs_1.default.exists);
12
+ const readFileAsync = (0, util_1.promisify)(fs_1.default.readFile);
13
+ const writeFileAsync = (0, util_1.promisify)(fs_1.default.writeFile);
14
+ const JSON_NAME = 'package.json';
15
+ const getJsonPath = async (submoduleName) => {
16
+ const folder = submoduleName ? [runOptions_1.RunOptions.modulesDir, submoduleName] : [];
17
+ const jsonPath = path_1.default.join(runOptions_1.RunOptions.cwd, ...folder, JSON_NAME);
18
+ const isJsonExists = await existsAsync(jsonPath);
19
+ if (!isJsonExists)
20
+ return null;
21
+ return jsonPath;
22
+ };
23
+ class PkgJSONManager {
24
+ constructor() {
25
+ this.cache = new Map();
26
+ /* Reads package.json in project folder or in submodule */
27
+ this.read = async (submoduleName) => {
28
+ const jsonPath = await getJsonPath(submoduleName);
29
+ if (!jsonPath)
30
+ return null;
31
+ if (this.cache.has(jsonPath)) {
32
+ return this.cache.get(jsonPath);
33
+ }
34
+ const jsonString = await readFileAsync(jsonPath, 'utf-8');
35
+ const parsed = JSON.parse(jsonString);
36
+ this.cache.set(jsonPath, parsed);
37
+ return parsed;
38
+ };
39
+ /* Writes package.json in project folder or in submodule */
40
+ this.write = async (data, submoduleName) => {
41
+ const jsonPath = await getJsonPath(submoduleName);
42
+ if (!jsonPath)
43
+ return;
44
+ this.cache.set(jsonPath, data);
45
+ await writeFileAsync(jsonPath, JSON.stringify(data, null, 2));
46
+ };
47
+ }
48
+ clearCache() {
49
+ this.cache.clear();
50
+ }
51
+ }
52
+ exports.PkgJSONManager = PkgJSONManager;
53
+ //# sourceMappingURL=PkgJSONManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PkgJSONManager.js","sourceRoot":"","sources":["../../src/PkgJSONManager.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAoB;AACpB,+BAAiC;AACjC,gDAAwB;AACxB,6CAA0C;AAE1C,MAAM,WAAW,GAAG,IAAA,gBAAS,EAAC,YAAE,CAAC,MAAM,CAAC,CAAC;AACzC,MAAM,aAAa,GAAG,IAAA,gBAAS,EAAC,YAAE,CAAC,QAAQ,CAAC,CAAC;AAC7C,MAAM,cAAc,GAAG,IAAA,gBAAS,EAAC,YAAE,CAAC,SAAS,CAAC,CAAC;AAC/C,MAAM,SAAS,GAAG,cAAc,CAAC;AAIjC,MAAM,WAAW,GAAG,KAAK,EAAE,aAAsB,EAAsB,EAAE;IACvE,MAAM,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,uBAAU,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3E,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,uBAAU,CAAC,GAAG,EAAE,GAAG,MAAM,EAAE,SAAS,CAAC,CAAC;IACjE,MAAM,YAAY,GAAG,MAAM,WAAW,CAAC,QAAQ,CAAC,CAAC;IACjD,IAAI,CAAC,YAAY;QAAE,OAAO,IAAI,CAAC;IAE/B,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAEF,MAAa,cAAc;IAA3B;QACU,UAAK,GAAqB,IAAI,GAAG,EAAE,CAAC;QAE5C,0DAA0D;QACnD,SAAI,GAAG,KAAK,EAAE,aAAsB,EAAE,EAAE;YAC7C,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,aAAa,CAAC,CAAC;YAElD,IAAI,CAAC,QAAQ;gBAAE,OAAO,IAAI,CAAC;YAE3B,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC7B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAClC,CAAC;YAED,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAC1D,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YAEtC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAEjC,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC;QAEF,2DAA2D;QACpD,UAAK,GAAG,KAAK,EAAE,IAAY,EAAE,aAAsB,EAAE,EAAE;YAC5D,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,aAAa,CAAC,CAAC;YAElD,IAAI,CAAC,QAAQ;gBAAE,OAAO;YAEtB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAE/B,MAAM,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAChE,CAAC,CAAC;IAKJ,CAAC;IAHQ,UAAU;QACf,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;CACF;AAnCD,wCAmCC"}
@@ -0,0 +1,4 @@
1
+ export declare class GitError extends Error {
2
+ details: Record<string, any>;
3
+ constructor(type: string, details?: Record<string, any>);
4
+ }
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GitError = void 0;
4
+ class GitError extends Error {
5
+ constructor(type, details = {}) {
6
+ super(type);
7
+ this.details = details;
8
+ }
9
+ }
10
+ exports.GitError = GitError;
11
+ //# sourceMappingURL=GitError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GitError.js","sourceRoot":"","sources":["../../../src/git/GitError.ts"],"names":[],"mappings":";;;AAAA,MAAa,QAAS,SAAQ,KAAK;IACjC,YAAa,IAAY,EAAS,UAA+B,EAAE;QACjE,KAAK,CAAC,IAAI,CAAC,CAAC;QADoB,YAAO,GAAP,OAAO,CAA0B;IAEnE,CAAC;CACF;AAJD,4BAIC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseGitUrl.test.js","sourceRoot":"","sources":["../../../../src/git/__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,7 @@
1
+ export declare const git: {
2
+ parseUrl: (url: string) => import("./parseGitUrl").IParseResult;
3
+ addSumbmodule: (url: string) => Promise<void>;
4
+ checkout: (name: string, version: string) => Promise<void>;
5
+ listVersions: (projectName: string) => Promise<string[]>;
6
+ rm: (submoduleName: string) => Promise<void>;
7
+ };
@@ -0,0 +1,52 @@
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 child_process_1 = require("child_process");
8
+ const util_1 = require("util");
9
+ const path_1 = __importDefault(require("path"));
10
+ const parseGitUrl_1 = require("./parseGitUrl");
11
+ const versionUtil_1 = require("../versionUtil");
12
+ const runOptions_1 = require("../runOptions");
13
+ const GitError_1 = require("./GitError");
14
+ const execAsync = (0, util_1.promisify)(child_process_1.exec);
15
+ exports.git = {
16
+ parseUrl: parseGitUrl_1.parseGitUrl,
17
+ addSumbmodule: async (url) => {
18
+ const { name } = (0, parseGitUrl_1.parseGitUrl)(url);
19
+ const module = path_1.default.join(runOptions_1.RunOptions.modulesDir, name);
20
+ try {
21
+ await execAsync(`git submodule add ${url} ${module}`, { cwd: runOptions_1.RunOptions.cwd });
22
+ }
23
+ catch {
24
+ throw new GitError_1.GitError('GIT_NOT_A_REPO');
25
+ }
26
+ },
27
+ checkout: async (name, version) => {
28
+ const module = path_1.default.join(runOptions_1.RunOptions.modulesDir, name);
29
+ try {
30
+ await execAsync(`git -C ${module} checkout ${version} -q`, { cwd: runOptions_1.RunOptions.cwd });
31
+ }
32
+ catch {
33
+ throw new GitError_1.GitError('GIT_MODULE_CHECKOUT_FAILED');
34
+ }
35
+ },
36
+ listVersions: async (projectName) => {
37
+ const module = path_1.default.join(runOptions_1.RunOptions.modulesDir, projectName);
38
+ await execAsync(`git -C ${module} fetch --tags`, { cwd: runOptions_1.RunOptions.cwd });
39
+ const res = await execAsync(`git -C ${module} tag -l`, { cwd: runOptions_1.RunOptions.cwd });
40
+ const tagList = res.stdout.toString().split(/\r?\n/);
41
+ return tagList.filter(tag => {
42
+ if (!tag)
43
+ return false;
44
+ return versionUtil_1.versionUtil.validate(tag);
45
+ });
46
+ },
47
+ rm: async (submoduleName) => {
48
+ await execAsync(`git rm -f ${runOptions_1.RunOptions.modulesDir}/${submoduleName}`, { cwd: runOptions_1.RunOptions.cwd });
49
+ await execAsync(`rm -rf .git/${runOptions_1.RunOptions.modulesDir}/${submoduleName}`, { cwd: runOptions_1.RunOptions.cwd });
50
+ },
51
+ };
52
+ //# sourceMappingURL=git.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git.js","sourceRoot":"","sources":["../../../src/git/git.ts"],"names":[],"mappings":";;;;;;AAAA,iDAAqC;AACrC,+BAAiC;AACjC,gDAAwB;AACxB,+CAA4C;AAC5C,gDAA6C;AAC7C,8CAA2C;AAC3C,yCAAsC;AAEtC,MAAM,SAAS,GAAG,IAAA,gBAAS,EAAC,oBAAI,CAAC,CAAC;AAErB,QAAA,GAAG,GAAG;IACjB,QAAQ,EAAE,yBAAW;IAErB,aAAa,EAAE,KAAK,EAAE,GAAW,EAAiB,EAAE;QAClD,MAAM,EAAE,IAAI,EAAE,GAAG,IAAA,yBAAW,EAAC,GAAG,CAAC,CAAC;QAClC,MAAM,MAAM,GAAG,cAAI,CAAC,IAAI,CAAC,uBAAU,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAEtD,IAAI,CAAC;YACH,MAAM,SAAS,CACb,qBAAqB,GAAG,IAAI,MAAM,EAAE,EACpC,EAAE,GAAG,EAAE,uBAAU,CAAC,GAAG,EAAE,CACxB,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,mBAAQ,CAAC,gBAAgB,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAED,QAAQ,EAAE,KAAK,EAAE,IAAY,EAAE,OAAe,EAAiB,EAAE;QAC/D,MAAM,MAAM,GAAG,cAAI,CAAC,IAAI,CAAC,uBAAU,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAEtD,IAAI,CAAC;YACH,MAAM,SAAS,CACb,UAAU,MAAM,aAAa,OAAO,KAAK,EACzC,EAAE,GAAG,EAAE,uBAAU,CAAC,GAAG,EAAE,CACxB,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,mBAAQ,CAAC,4BAA4B,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAED,YAAY,EAAE,KAAK,EAAE,WAAmB,EAAqB,EAAE;QAC7D,MAAM,MAAM,GAAG,cAAI,CAAC,IAAI,CAAC,uBAAU,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;QAC7D,MAAM,SAAS,CAAC,UAAU,MAAM,eAAe,EAAE,EAAE,GAAG,EAAE,uBAAU,CAAC,GAAG,EAAE,CAAC,CAAC;QAE1E,MAAM,GAAG,GAAG,MAAM,SAAS,CACzB,UAAU,MAAM,SAAS,EACzB,EAAE,GAAG,EAAE,uBAAU,CAAC,GAAG,EAAE,CACxB,CAAC;QAEF,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAErD,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;YAC1B,IAAI,CAAC,GAAG;gBAAE,OAAO,KAAK,CAAC;YAEvB,OAAO,yBAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,EAAE,EAAE,KAAK,EAAE,aAAqB,EAAE,EAAE;QAClC,MAAM,SAAS,CACb,aAAa,uBAAU,CAAC,UAAU,IAAI,aAAa,EAAE,EACrD,EAAE,GAAG,EAAE,uBAAU,CAAC,GAAG,EAAE,CACxB,CAAC;QACF,MAAM,SAAS,CACb,eAAe,uBAAU,CAAC,UAAU,IAAI,aAAa,EAAE,EACvD,EAAE,GAAG,EAAE,uBAAU,CAAC,GAAG,EAAE,CACxB,CAAC;IACJ,CAAC;CACF,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { git } from './git';
2
+ export { GitError } from './GitError';
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GitError = exports.git = void 0;
4
+ var git_1 = require("./git");
5
+ Object.defineProperty(exports, "git", { enumerable: true, get: function () { return git_1.git; } });
6
+ var GitError_1 = require("./GitError");
7
+ Object.defineProperty(exports, "GitError", { enumerable: true, get: function () { return GitError_1.GitError; } });
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/git/index.ts"],"names":[],"mappings":";;;AAAA,6BAA4B;AAAnB,0FAAA,GAAG,OAAA;AACZ,uCAAsC;AAA7B,oGAAA,QAAQ,OAAA"}
@@ -1,7 +1,6 @@
1
- interface IParseResult {
1
+ export interface IParseResult {
2
2
  name: string;
3
3
  url: string;
4
4
  version: string | null;
5
5
  }
6
6
  export declare const parseGitUrl: (url: string) => IParseResult;
7
- export {};