@decaf-ts/utils 1.3.2 → 1.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. package/README.md +1 -1
  2. package/dist/utils.cjs +1 -1
  3. package/dist/utils.cjs.map +1 -1
  4. package/dist/utils.js +1 -1
  5. package/dist/utils.js.map +1 -1
  6. package/lib/cjs/bin/modules.cjs +14 -0
  7. package/lib/cjs/bin/modules.cjs.map +1 -0
  8. package/lib/cjs/bin/npm-link.cjs +14 -0
  9. package/lib/cjs/bin/npm-link.cjs.map +1 -0
  10. package/lib/cjs/bin/npm-token.cjs +14 -0
  11. package/lib/cjs/bin/npm-token.cjs.map +1 -0
  12. package/lib/cjs/bin/run-all.cjs +14 -0
  13. package/lib/cjs/bin/run-all.cjs.map +1 -0
  14. package/lib/cjs/cli/commands/help.cjs +29 -0
  15. package/lib/cjs/cli/commands/help.cjs.map +1 -0
  16. package/lib/cjs/cli/commands/index.cjs +5 -0
  17. package/lib/cjs/cli/commands/index.cjs.map +1 -1
  18. package/lib/cjs/cli/commands/modules.cjs +80 -0
  19. package/lib/cjs/cli/commands/modules.cjs.map +1 -0
  20. package/lib/cjs/cli/commands/npm-link.cjs +196 -0
  21. package/lib/cjs/cli/commands/npm-link.cjs.map +1 -0
  22. package/lib/cjs/cli/commands/npm-token.cjs +87 -0
  23. package/lib/cjs/cli/commands/npm-token.cjs.map +1 -0
  24. package/lib/cjs/cli/commands/release-chain.cjs +82 -0
  25. package/lib/cjs/cli/commands/release-chain.cjs.map +1 -1
  26. package/lib/cjs/cli/commands/run-all.cjs +78 -0
  27. package/lib/cjs/cli/commands/run-all.cjs.map +1 -0
  28. package/lib/cjs/cli/commands/tag-release-shell.cjs +229 -0
  29. package/lib/cjs/cli/commands/tag-release-shell.cjs.map +1 -0
  30. package/lib/cjs/cli/commands/tag-release.cjs +33 -2
  31. package/lib/cjs/cli/commands/tag-release.cjs.map +1 -1
  32. package/lib/cjs/index.cjs +1 -1
  33. package/lib/esm/bin/modules.js +10 -0
  34. package/lib/esm/bin/modules.js.map +1 -0
  35. package/lib/esm/bin/npm-link.js +10 -0
  36. package/lib/esm/bin/npm-link.js.map +1 -0
  37. package/lib/esm/bin/npm-token.js +10 -0
  38. package/lib/esm/bin/npm-token.js.map +1 -0
  39. package/lib/esm/bin/run-all.js +10 -0
  40. package/lib/esm/bin/run-all.js.map +1 -0
  41. package/lib/esm/cli/commands/help.js +25 -0
  42. package/lib/esm/cli/commands/help.js.map +1 -0
  43. package/lib/esm/cli/commands/index.js +5 -0
  44. package/lib/esm/cli/commands/index.js.map +1 -1
  45. package/lib/esm/cli/commands/modules.js +70 -0
  46. package/lib/esm/cli/commands/modules.js.map +1 -0
  47. package/lib/esm/cli/commands/npm-link.js +188 -0
  48. package/lib/esm/cli/commands/npm-link.js.map +1 -0
  49. package/lib/esm/cli/commands/npm-token.js +79 -0
  50. package/lib/esm/cli/commands/npm-token.js.map +1 -0
  51. package/lib/esm/cli/commands/release-chain.js +82 -0
  52. package/lib/esm/cli/commands/release-chain.js.map +1 -1
  53. package/lib/esm/cli/commands/run-all.js +70 -0
  54. package/lib/esm/cli/commands/run-all.js.map +1 -0
  55. package/lib/esm/cli/commands/tag-release-shell.js +221 -0
  56. package/lib/esm/cli/commands/tag-release-shell.js.map +1 -0
  57. package/lib/esm/cli/commands/tag-release.js +33 -2
  58. package/lib/esm/cli/commands/tag-release.js.map +1 -1
  59. package/lib/esm/index.js +1 -1
  60. package/lib/types/bin/modules.d.cts +1 -0
  61. package/lib/types/bin/modules.d.mts +1 -0
  62. package/lib/types/bin/npm-link.d.cts +1 -0
  63. package/lib/types/bin/npm-link.d.mts +1 -0
  64. package/lib/types/bin/npm-token.d.cts +1 -0
  65. package/lib/types/bin/npm-token.d.mts +1 -0
  66. package/lib/types/bin/run-all.d.cts +1 -0
  67. package/lib/types/bin/run-all.d.mts +1 -0
  68. package/lib/types/cli/commands/help.d.cts +7 -0
  69. package/lib/types/cli/commands/help.d.mts +7 -0
  70. package/lib/types/cli/commands/index.d.cts +5 -0
  71. package/lib/types/cli/commands/index.d.mts +5 -0
  72. package/lib/types/cli/commands/modules.d.cts +19 -0
  73. package/lib/types/cli/commands/modules.d.mts +19 -0
  74. package/lib/types/cli/commands/npm-link.d.cts +34 -0
  75. package/lib/types/cli/commands/npm-link.d.mts +34 -0
  76. package/lib/types/cli/commands/npm-token.d.cts +23 -0
  77. package/lib/types/cli/commands/npm-token.d.mts +23 -0
  78. package/lib/types/cli/commands/release-chain.d.cts +2 -0
  79. package/lib/types/cli/commands/release-chain.d.mts +2 -0
  80. package/lib/types/cli/commands/run-all.d.cts +22 -0
  81. package/lib/types/cli/commands/run-all.d.mts +22 -0
  82. package/lib/types/cli/commands/tag-release-shell.d.cts +57 -0
  83. package/lib/types/cli/commands/tag-release-shell.d.mts +57 -0
  84. package/lib/types/cli/commands/tag-release.d.cts +1 -0
  85. package/lib/types/cli/commands/tag-release.d.mts +1 -0
  86. package/lib/types/index.d.cts +1 -1
  87. package/lib/types/index.d.mts +1 -1
  88. package/package.json +5 -1
@@ -0,0 +1,80 @@
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.ModulesCommand = void 0;
7
+ exports.readGitModules = readGitModules;
8
+ exports.readGitModulesDeep = readGitModulesDeep;
9
+ const node_fs_1 = __importDefault(require("node:fs"));
10
+ const node_path_1 = __importDefault(require("node:path"));
11
+ const command_js_1 = require("./../command.cjs");
12
+ const help_js_1 = require("./help.cjs");
13
+ function readGitModules(basePath = process.cwd()) {
14
+ const gitmodulesPath = node_path_1.default.join(basePath, ".gitmodules");
15
+ const data = node_fs_1.default.readFileSync(gitmodulesPath, "utf8");
16
+ return data.toString().match(/(?<=").*?(?="])/g) || [];
17
+ }
18
+ function readGitModulesDeep(basePath = process.cwd(), maxTraversal = 2) {
19
+ const modules = new Set();
20
+ const visited = new Set();
21
+ const walk = (currentBasePath, depth, relativePrefix = "") => {
22
+ const normalizedBase = node_path_1.default.resolve(currentBasePath);
23
+ if (visited.has(normalizedBase))
24
+ return;
25
+ visited.add(normalizedBase);
26
+ let entries = [];
27
+ try {
28
+ entries = readGitModules(currentBasePath);
29
+ }
30
+ catch {
31
+ return;
32
+ }
33
+ for (const entry of entries) {
34
+ const modulePath = relativePrefix
35
+ ? node_path_1.default.join(relativePrefix, entry)
36
+ : entry;
37
+ modules.add(modulePath);
38
+ if (depth <= 0)
39
+ continue;
40
+ const nestedBase = node_path_1.default.join(currentBasePath, entry);
41
+ const nestedGitmodules = node_path_1.default.join(nestedBase, ".gitmodules");
42
+ if (node_fs_1.default.existsSync(nestedGitmodules)) {
43
+ walk(nestedBase, depth - 1, modulePath);
44
+ }
45
+ }
46
+ };
47
+ walk(basePath, maxTraversal);
48
+ return Array.from(modules);
49
+ }
50
+ const options = {
51
+ basePath: {
52
+ type: "string",
53
+ default: process.cwd(),
54
+ },
55
+ };
56
+ class ModulesCommand extends command_js_1.Command {
57
+ constructor() {
58
+ super("ModulesCommand", options);
59
+ }
60
+ help() {
61
+ (0, help_js_1.printCommandHelp)(this.log, "modules", "List modules discovered from .gitmodules.", "modules [options]", [
62
+ {
63
+ flag: "--base-path <path>",
64
+ description: "Directory to read .gitmodules from",
65
+ defaultValue: "current working directory",
66
+ },
67
+ {
68
+ flag: "-h, --help",
69
+ description: "Show this help text and exit",
70
+ },
71
+ ], ["Each discovered module path is printed on its own line."], ["modules", "modules --base-path ../repo"]);
72
+ }
73
+ async run(answers) {
74
+ const modules = readGitModules(answers.basePath);
75
+ modules.forEach((module) => this.log.info(module));
76
+ }
77
+ }
78
+ exports.ModulesCommand = ModulesCommand;
79
+ //# sourceMappingURL=modules.js.map
80
+ //# sourceMappingURL=modules.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modules.js","sourceRoot":"","sources":["modules.js"],"names":[],"mappings":"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"}
@@ -0,0 +1,196 @@
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.NpmLinkCommand = void 0;
7
+ const node_fs_1 = __importDefault(require("node:fs"));
8
+ const node_path_1 = __importDefault(require("node:path"));
9
+ const node_child_process_1 = require("node:child_process");
10
+ const command_js_1 = require("./../command.cjs");
11
+ const modules_js_1 = require("./modules.cjs");
12
+ const help_js_1 = require("./help.cjs");
13
+ const options = {
14
+ maxTraversal: {
15
+ type: "string",
16
+ default: "2",
17
+ },
18
+ excludes: {
19
+ type: "string",
20
+ multiple: true,
21
+ default: ["@decaf-ts/utils", "@decaf-ts/logging"],
22
+ },
23
+ include: {
24
+ type: "string",
25
+ multiple: true,
26
+ default: [],
27
+ },
28
+ operation: {
29
+ type: "string",
30
+ default: "link",
31
+ },
32
+ };
33
+ function getScope(packageName) {
34
+ return packageName.split("/")[0] || "";
35
+ }
36
+ function getPackageName(packageName) {
37
+ return packageName.split("/")[1] || packageName;
38
+ }
39
+ function getDependencyList(pkg) {
40
+ return [
41
+ ...Object.keys(pkg.dependencies || {}),
42
+ ...Object.keys(pkg.devDependencies || {}),
43
+ ...Object.keys(pkg.peerDependencies || {}),
44
+ ];
45
+ }
46
+ function normalizeList(value) {
47
+ if (Array.isArray(value)) {
48
+ return value.map((item) => `${item}`.trim()).filter(Boolean);
49
+ }
50
+ if (typeof value === "string" && value.length > 0) {
51
+ return value
52
+ .split(",")
53
+ .map((item) => item.trim())
54
+ .filter(Boolean);
55
+ }
56
+ return [];
57
+ }
58
+ function matchesPattern(value, pattern) {
59
+ return (value === pattern ||
60
+ node_path_1.default.basename(value) === pattern ||
61
+ value.endsWith(`/${pattern}`));
62
+ }
63
+ class NpmLinkCommand extends command_js_1.Command {
64
+ constructor() {
65
+ super("NpmLinkCommand", options);
66
+ }
67
+ help() {
68
+ (0, help_js_1.printCommandHelp)(this.log, "npm-link", "Link or unlink decaf-ts package outputs across linked modules.", "npm-link [options]", [
69
+ {
70
+ flag: "--max-traversal <depth>",
71
+ description: "How many nested .gitmodules levels to traverse",
72
+ defaultValue: "2",
73
+ },
74
+ {
75
+ flag: "--excludes <items...>",
76
+ description: "Dependency names or patterns to ignore",
77
+ defaultValue: "@decaf-ts/utils,@decaf-ts/logging",
78
+ },
79
+ {
80
+ flag: "--include <items...>",
81
+ description: "Module names or paths to target explicitly",
82
+ },
83
+ {
84
+ flag: "--operation <name>",
85
+ description: "Operation to run in each module",
86
+ defaultValue: "link",
87
+ },
88
+ {
89
+ flag: "-h, --help",
90
+ description: "Show this help text and exit",
91
+ },
92
+ ], [
93
+ "link creates symlinks for decaf-ts dependencies",
94
+ "unlink removes those links and reinstalls dependencies",
95
+ "any other operation is passed through to npm in each selected module",
96
+ ], [
97
+ "npm-link --operation link",
98
+ "npm-link --operation unlink",
99
+ "npm-link --operation install --include packages/app",
100
+ ]);
101
+ }
102
+ async run(answers) {
103
+ const maxTraversal = Number.parseInt(`${answers.maxTraversal || "2"}`, 10);
104
+ const include = normalizeList(answers.include);
105
+ const excludes = normalizeList(answers.excludes);
106
+ const defaultExcludes = ["@decaf-ts/utils", "@decaf-ts/logging"];
107
+ const operation = `${answers.operation || "link"}`.trim() || "link";
108
+ const outerPkg = JSON.parse(node_fs_1.default.readFileSync(node_path_1.default.join(process.cwd(), "package.json"), "utf8"));
109
+ const scope = getScope(outerPkg.name);
110
+ const modules = (0, modules_js_1.readGitModulesDeep)(process.cwd(), Number.isFinite(maxTraversal) ? maxTraversal : 2);
111
+ const selectedModules = modules.filter((moduleName) => include.length > 0
112
+ ? include.some((pattern) => matchesPattern(moduleName, pattern))
113
+ : true);
114
+ const shouldIgnoreDependency = (dependency) => (excludes.length > 0 ? excludes : defaultExcludes).some((pattern) => matchesPattern(dependency, pattern));
115
+ for (const moduleName of selectedModules) {
116
+ const moduleRoot = node_path_1.default.join(process.cwd(), moduleName);
117
+ let pkg;
118
+ try {
119
+ pkg = JSON.parse(node_fs_1.default.readFileSync(node_path_1.default.join(moduleRoot, "package.json"), "utf8"));
120
+ }
121
+ catch {
122
+ continue;
123
+ }
124
+ const dependencies = getDependencyList(pkg).filter((dep) => dep.startsWith(scope));
125
+ if (operation === "link") {
126
+ for (const dependency of dependencies) {
127
+ if (shouldIgnoreDependency(dependency))
128
+ continue;
129
+ const innerCodePath = dependency.endsWith("styles") ? "dist" : "lib";
130
+ const packageName = getPackageName(dependency);
131
+ try {
132
+ const packageRoot = node_path_1.default.join(moduleRoot, "node_modules", scope, packageName);
133
+ const dependencyTarget = node_path_1.default.join(moduleRoot, "node_modules", dependency);
134
+ const sourcePath = node_path_1.default.join(process.cwd(), packageName, innerCodePath);
135
+ const linkPath = node_path_1.default.join(packageRoot, innerCodePath);
136
+ if (!node_fs_1.default.existsSync(sourcePath)) {
137
+ console.log(`Skipping ${dependency} as it does not exist in the master repository`);
138
+ continue;
139
+ }
140
+ console.log(`linking ${dependency} as a dependency of ${moduleName}`);
141
+ node_fs_1.default.rmSync(dependencyTarget, { force: true, recursive: true });
142
+ node_fs_1.default.mkdirSync(packageRoot, { recursive: true });
143
+ node_fs_1.default.rmSync(linkPath, { force: true, recursive: true });
144
+ node_fs_1.default.symlinkSync(node_path_1.default.relative(packageRoot, sourcePath), linkPath, "dir");
145
+ }
146
+ catch (error) {
147
+ console.log(`Failed to link ${dependency} as a dependency of ${moduleName}: ${error}`);
148
+ process.exit(1);
149
+ }
150
+ }
151
+ continue;
152
+ }
153
+ if (operation === "unlink") {
154
+ for (const dependency of dependencies) {
155
+ if (shouldIgnoreDependency(dependency))
156
+ continue;
157
+ console.log(`unlinking ${dependency} as a dependency of ${moduleName}`);
158
+ try {
159
+ node_fs_1.default.rmSync(node_path_1.default.join(moduleRoot, "node_modules", dependency), {
160
+ force: true,
161
+ recursive: true,
162
+ });
163
+ }
164
+ catch {
165
+ process.exit(1);
166
+ }
167
+ }
168
+ try {
169
+ (0, node_child_process_1.execSync)("npm run do-install", {
170
+ cwd: moduleRoot,
171
+ env: process.env,
172
+ stdio: "inherit",
173
+ });
174
+ }
175
+ catch {
176
+ process.exit(1);
177
+ }
178
+ continue;
179
+ }
180
+ console.log(`${operation}ing ${moduleName}`);
181
+ try {
182
+ (0, node_child_process_1.execSync)(`npm ${operation}`, {
183
+ cwd: moduleRoot,
184
+ env: process.env,
185
+ stdio: "inherit",
186
+ });
187
+ }
188
+ catch {
189
+ process.exit(1);
190
+ }
191
+ }
192
+ }
193
+ }
194
+ exports.NpmLinkCommand = NpmLinkCommand;
195
+ //# sourceMappingURL=npm-link.js.map
196
+ //# sourceMappingURL=npm-link.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"npm-link.js","sourceRoot":"","sources":["npm-link.js"],"names":[],"mappings":"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"}
@@ -0,0 +1,87 @@
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.NpmTokenCommand = void 0;
7
+ const node_fs_1 = __importDefault(require("node:fs"));
8
+ const node_path_1 = __importDefault(require("node:path"));
9
+ const command_js_1 = require("./../command.cjs");
10
+ const modules_js_1 = require("./modules.cjs");
11
+ const help_js_1 = require("./help.cjs");
12
+ const options = {
13
+ maxTraversal: {
14
+ type: "string",
15
+ default: "2",
16
+ },
17
+ tokenFiles: {
18
+ type: "string",
19
+ multiple: true,
20
+ default: [".token", ".npmtoken"],
21
+ },
22
+ };
23
+ function normalizeList(value) {
24
+ if (Array.isArray(value)) {
25
+ return value.map((item) => `${item}`.trim()).filter(Boolean);
26
+ }
27
+ if (typeof value === "string" && value.length > 0) {
28
+ return value
29
+ .split(",")
30
+ .map((item) => item.trim())
31
+ .filter(Boolean);
32
+ }
33
+ return [];
34
+ }
35
+ class NpmTokenCommand extends command_js_1.Command {
36
+ constructor() {
37
+ super("NpmTokenCommand", options);
38
+ }
39
+ help() {
40
+ (0, help_js_1.printCommandHelp)(this.log, "npm-token", "Link token files into every module discovered in .gitmodules.", "npm-token [options]", [
41
+ {
42
+ flag: "--max-traversal <depth>",
43
+ description: "How many nested .gitmodules levels to traverse",
44
+ defaultValue: "2",
45
+ },
46
+ {
47
+ flag: "--token-files <files...>",
48
+ description: "Token files to link into each selected module",
49
+ defaultValue: ".token,.npmtoken",
50
+ },
51
+ {
52
+ flag: "-h, --help",
53
+ description: "Show this help text and exit",
54
+ },
55
+ ], [
56
+ "The command creates symlinks from each selected module back to the token files in the repository root.",
57
+ ], [
58
+ "npm-token",
59
+ "npm-token --token-files .token .npmtoken secrets/npm.token",
60
+ ]);
61
+ }
62
+ async run(answers) {
63
+ const maxTraversal = Number.parseInt(`${answers.maxTraversal || "2"}`, 10);
64
+ const tokenFiles = normalizeList(answers.tokenFiles);
65
+ const effectiveTokenFiles = tokenFiles.length > 0 ? tokenFiles : [".token", ".npmtoken"];
66
+ const modules = (0, modules_js_1.readGitModulesDeep)(process.cwd(), Number.isFinite(maxTraversal) ? maxTraversal : 2);
67
+ for (const moduleName of modules) {
68
+ const moduleRoot = node_path_1.default.join(process.cwd(), moduleName);
69
+ try {
70
+ for (const tokenFile of effectiveTokenFiles) {
71
+ console.log(`linking ${tokenFile} to ${moduleName}`);
72
+ node_fs_1.default.rmSync(node_path_1.default.join(moduleRoot, tokenFile), {
73
+ force: true,
74
+ recursive: true,
75
+ });
76
+ node_fs_1.default.symlinkSync(node_path_1.default.join("..", tokenFile), node_path_1.default.join(moduleRoot, tokenFile));
77
+ }
78
+ }
79
+ catch {
80
+ process.exit(1);
81
+ }
82
+ }
83
+ }
84
+ }
85
+ exports.NpmTokenCommand = NpmTokenCommand;
86
+ //# sourceMappingURL=npm-token.js.map
87
+ //# sourceMappingURL=npm-token.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"npm-token.js","sourceRoot":"","sources":["npm-token.js"],"names":[],"mappings":"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"}
@@ -6,6 +6,7 @@ const constants_js_1 = require("./../constants.cjs");
6
6
  const index_js_1 = require("./../../release-chain/index.cjs");
7
7
  const index_js_2 = require("./../../utils/index.cjs");
8
8
  const node_child_process_1 = require("node:child_process");
9
+ const help_js_1 = require("./help.cjs");
9
10
  const releaseChainArgs = {
10
11
  meta: {
11
12
  type: "string",
@@ -58,6 +59,46 @@ class ReleaseChainCommand extends command_js_1.Command {
58
59
  constructor() {
59
60
  super("ReleaseChain", Object.assign({}, constants_js_1.DefaultCommandOptions, releaseChainArgs));
60
61
  }
62
+ help() {
63
+ (0, help_js_1.printCommandHelp)(this.log, "release-chain", "Run the release-chain workflow locally across repositories.", "release-chain [options]", [
64
+ { flag: "--meta <url>", description: "Meta repository URL" },
65
+ {
66
+ flag: "--branch <name>",
67
+ description: "Branch to update downstream repositories",
68
+ defaultValue: "main or detected branch",
69
+ },
70
+ {
71
+ flag: "--current <owner/repo>",
72
+ description: "Current repository slug to resume after in the chain",
73
+ },
74
+ {
75
+ flag: "--package <name>",
76
+ description: "Override detected package name",
77
+ },
78
+ {
79
+ flag: "--token <token>",
80
+ description: "GitHub token for cloning and pushing",
81
+ },
82
+ {
83
+ flag: "--submodule-file <file>",
84
+ description: "Override submodule file name",
85
+ },
86
+ {
87
+ flag: "--submodule-path <path>",
88
+ description: "Use a local submodule file instead of downloading",
89
+ },
90
+ {
91
+ flag: "--target-base <branch>",
92
+ description: "Base branch for downstream pull requests",
93
+ },
94
+ {
95
+ flag: "-h, --help",
96
+ description: "Show this help text and exit",
97
+ },
98
+ ], [
99
+ "Missing meta or branch values are detected from git and environment variables when possible.",
100
+ ]);
101
+ }
61
102
  async run(options) {
62
103
  const answerMap = options;
63
104
  const packageName = answerMap.package ||
@@ -87,6 +128,47 @@ class ReleaseChainDispatchCommand extends command_js_1.Command {
87
128
  constructor() {
88
129
  super("ReleaseChainDispatch", Object.assign({}, constants_js_1.DefaultCommandOptions, releaseChainArgs));
89
130
  }
131
+ help() {
132
+ (0, help_js_1.printCommandHelp)(this.log, "release-chain-dispatch", "Dispatch the release-chain GitHub Actions workflow.", "release-chain-dispatch [options]", [
133
+ { flag: "--meta <url>", description: "Meta repository URL" },
134
+ {
135
+ flag: "--branch <name>",
136
+ description: "Branch to evaluate in downstream repositories",
137
+ defaultValue: "main or detected branch",
138
+ },
139
+ {
140
+ flag: "--current <owner/repo>",
141
+ description: "Repository slug that triggered the release chain",
142
+ },
143
+ {
144
+ flag: "--workflow <file>",
145
+ description: "Workflow file name",
146
+ defaultValue: "release-chain.yaml",
147
+ },
148
+ {
149
+ flag: "--repo <owner/repo>",
150
+ description: "Target repository slug where the workflow lives",
151
+ },
152
+ {
153
+ flag: "--token <token>",
154
+ description: "GitHub token for dispatching workflows",
155
+ },
156
+ {
157
+ flag: "--ref <ref>",
158
+ description: "Git ref to dispatch the workflow on",
159
+ },
160
+ {
161
+ flag: "--target-base <branch>",
162
+ description: "Base branch for downstream pull requests",
163
+ },
164
+ {
165
+ flag: "-h, --help",
166
+ description: "Show this help text and exit",
167
+ },
168
+ ], [
169
+ "Missing meta or branch values are detected from git and environment variables when possible.",
170
+ ]);
171
+ }
90
172
  async run(options) {
91
173
  const answerMap = options;
92
174
  const metaRepo = answerMap.meta || detectRemoteUrl();
@@ -1 +1 @@
1
- {"version":3,"file":"release-chain.js","sourceRoot":"","sources":["release-chain.js"],"names":[],"mappings":";;;AAAA,gDAA0C;AAC1C,oDAA0D;AAC1D,6DAAgG;AAChG,qDAAoD;AACpD,2DAA8C;AAC9C,MAAM,gBAAgB,GAAG;IACrB,IAAI,EAAE;QACF,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,2BAA2B,IAAI,EAAE;KACzD;IACD,MAAM,EAAE;QACJ,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB;YACrC,OAAO,CAAC,GAAG,CAAC,eAAe;YAC3B,MAAM;KACb;IACD,OAAO,EAAE;QACL,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,EAAE;KACpF;IACD,OAAO,EAAE;QACL,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,EAAE;KACd;IACD,KAAK,EAAE;QACH,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,EAAE;KACjD;IACD,aAAa,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,EAAE;KAChD;IACD,aAAa,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,EAAE;KACrD;IACD,QAAQ,EAAE;QACN,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,oBAAoB;KACtE;IACD,IAAI,EAAE;QACF,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,EAAE;KAChD;IACD,GAAG,EAAE;QACD,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,EAAE;KAC/C;IACD,UAAU,EAAE;QACR,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,EAAE;KAClD;CACJ,CAAC;AACF,MAAa,mBAAoB,SAAQ,oBAAO;IAC5C;QACI,KAAK,CAAC,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,oCAAqB,EAAE,gBAAgB,CAAC,CAAC,CAAC;IACtF,CAAC;IACD,KAAK,CAAC,GAAG,CAAC,OAAO;QACb,MAAM,SAAS,GAAG,OAAO,CAAC;QAC1B,MAAM,WAAW,GAAG,SAAS,CAAC,OAAO;YACjC,IAAA,qBAAU,EAAC,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC;QACpC,IAAI,CAAC,WAAW,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACxD,CAAC;QACD,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,IAAI,eAAe,EAAE,CAAC;QACrD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QACzD,CAAC;QACD,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,IAAI,YAAY,EAAE,CAAC;QAClD,MAAM,IAAA,0BAAe,EAAC;YAClB,WAAW,EAAE,QAAQ;YACrB,MAAM;YACN,WAAW,EAAE,SAAS,CAAC,OAAO;YAC9B,WAAW;YACX,KAAK,EAAE,SAAS,CAAC,KAAK;YACtB,aAAa,EAAE,SAAS,CAAC,aAAa,IAAI,SAAS;YACnD,aAAa,EAAE,SAAS,CAAC,aAAa,IAAI,SAAS;YACnD,gBAAgB,EAAE,SAAS,CAAC,UAAU,IAAI,SAAS;SACtD,CAAC,CAAC;IACP,CAAC;CACJ;AA3BD,kDA2BC;AACD,MAAa,2BAA4B,SAAQ,oBAAO;IACpD;QACI,KAAK,CAAC,sBAAsB,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,oCAAqB,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAC9F,CAAC;IACD,KAAK,CAAC,GAAG,CAAC,OAAO;QACb,MAAM,SAAS,GAAG,OAAO,CAAC;QAC1B,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,IAAI,eAAe,EAAE,CAAC;QACrD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QACzD,CAAC;QACD,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,IAAI,YAAY,EAAE,CAAC;QAClD,MAAM,IAAA,uCAA4B,EAAC;YAC/B,WAAW,EAAE,QAAQ;YACrB,MAAM;YACN,YAAY,EAAE,SAAS,CAAC,QAAQ,IAAI,oBAAoB;YACxD,QAAQ,EAAE,SAAS,CAAC,IAAI;YACxB,WAAW,EAAE,SAAS,CAAC,OAAO;YAC9B,KAAK,EAAE,SAAS,CAAC,KAAK;YACtB,GAAG,EAAE,SAAS,CAAC,GAAG,IAAI,MAAM;YAC5B,gBAAgB,EAAE,SAAS,CAAC,UAAU,IAAI,SAAS;SACtD,CAAC,CAAC;IACP,CAAC;CACJ;AAtBD,kEAsBC;AACD,SAAS,eAAe;IACpB,IAAI,CAAC;QACD,OAAO,IAAA,6BAAQ,EAAC,oCAAoC,EAAE;YAClD,QAAQ,EAAE,MAAM;SACnB,CAAC,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;IACD,MAAM,CAAC;QACH,OAAO,SAAS,CAAC;IACrB,CAAC;AACL,CAAC;AACD,SAAS,YAAY;IACjB,IAAI,CAAC;QACD,OAAO,IAAA,6BAAQ,EAAC,iCAAiC,EAAE;YAC/C,QAAQ,EAAE,MAAM;SACnB,CAAC,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;IACD,MAAM,CAAC;QACH,OAAO,MAAM,CAAC;IAClB,CAAC;AACL,CAAC;AACD,yCAAyC"}
1
+ {"version":3,"file":"release-chain.js","sourceRoot":"","sources":["release-chain.js"],"names":[],"mappings":"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"}
@@ -0,0 +1,78 @@
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.RunAllCommand = void 0;
7
+ const node_fs_1 = __importDefault(require("node:fs"));
8
+ const node_path_1 = __importDefault(require("node:path"));
9
+ const node_child_process_1 = require("node:child_process");
10
+ const command_js_1 = require("./../command.cjs");
11
+ const modules_js_1 = require("./modules.cjs");
12
+ const help_js_1 = require("./help.cjs");
13
+ const options = {
14
+ basePath: {
15
+ type: "string",
16
+ default: process.cwd(),
17
+ },
18
+ command: {
19
+ type: "string",
20
+ default: undefined,
21
+ },
22
+ };
23
+ class RunAllCommand extends command_js_1.Command {
24
+ constructor() {
25
+ super("RunAllCommand", options);
26
+ }
27
+ help() {
28
+ (0, help_js_1.printCommandHelp)(this.log, "run-all", "Run a shell command in every module listed in .gitmodules.", "run-all [options] --command <cmd>", [
29
+ {
30
+ flag: "--base-path <path>",
31
+ description: "Directory to read .gitmodules from",
32
+ defaultValue: "current working directory",
33
+ },
34
+ {
35
+ flag: "--command <cmd>",
36
+ description: "Shell command to execute in each module",
37
+ },
38
+ {
39
+ flag: "-h, --help",
40
+ description: "Show this help text and exit",
41
+ },
42
+ ], [
43
+ "The command fails fast if any module invocation fails.",
44
+ ], [
45
+ "run-all --command npm test",
46
+ "run-all --base-path ../repo --command npm run lint",
47
+ ]);
48
+ }
49
+ async run(answers) {
50
+ const basePath = typeof answers.basePath === "string" && answers.basePath.trim().length > 0
51
+ ? answers.basePath.trim()
52
+ : process.cwd();
53
+ const command = typeof answers.command === "string" ? answers.command.trim() : "";
54
+ if (command.length === 0) {
55
+ throw new Error("run-all requires a command to execute");
56
+ }
57
+ const modules = (0, modules_js_1.readGitModules)(basePath);
58
+ for (const moduleName of modules) {
59
+ const moduleRoot = node_path_1.default.join(basePath, moduleName);
60
+ if (!node_fs_1.default.existsSync(moduleRoot))
61
+ continue;
62
+ console.log(`running ${command} ${moduleName}`);
63
+ try {
64
+ (0, node_child_process_1.execSync)(command, {
65
+ cwd: moduleRoot,
66
+ env: process.env,
67
+ stdio: "inherit",
68
+ });
69
+ }
70
+ catch {
71
+ process.exit(1);
72
+ }
73
+ }
74
+ }
75
+ }
76
+ exports.RunAllCommand = RunAllCommand;
77
+ //# sourceMappingURL=run-all.js.map
78
+ //# sourceMappingURL=run-all.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-all.js","sourceRoot":"","sources":["run-all.js"],"names":[],"mappings":";;;;;;AAAA,sDAAyB;AACzB,0DAA6B;AAC7B,2DAA8C;AAC9C,gDAA0C;AAC1C,6CAA8C;AAC9C,uCAA6C;AAC7C,MAAM,OAAO,GAAG;IACZ,QAAQ,EAAE;QACN,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE;KACzB;IACD,OAAO,EAAE;QACL,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,SAAS;KACrB;CACJ,CAAC;AACF,MAAa,aAAc,SAAQ,oBAAO;IACtC;QACI,KAAK,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;IACpC,CAAC;IACD,IAAI;QACA,IAAA,0BAAgB,EAAC,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,4DAA4D,EAAE,mCAAmC,EAAE;YACrI;gBACI,IAAI,EAAE,oBAAoB;gBAC1B,WAAW,EAAE,oCAAoC;gBACjD,YAAY,EAAE,2BAA2B;aAC5C;YACD;gBACI,IAAI,EAAE,iBAAiB;gBACvB,WAAW,EAAE,yCAAyC;aACzD;YACD;gBACI,IAAI,EAAE,YAAY;gBAClB,WAAW,EAAE,8BAA8B;aAC9C;SACJ,EAAE;YACC,wDAAwD;SAC3D,EAAE;YACC,4BAA4B;YAC5B,oDAAoD;SACvD,CAAC,CAAC;IACP,CAAC;IACD,KAAK,CAAC,GAAG,CAAC,OAAO;QACb,MAAM,QAAQ,GAAG,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;YACvF,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE;YACzB,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;QACpB,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC7D,CAAC;QACD,MAAM,OAAO,GAAG,IAAA,2BAAc,EAAC,QAAQ,CAAC,CAAC;QACzC,KAAK,MAAM,UAAU,IAAI,OAAO,EAAE,CAAC;YAC/B,MAAM,UAAU,GAAG,mBAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;YACnD,IAAI,CAAC,iBAAE,CAAC,UAAU,CAAC,UAAU,CAAC;gBAC1B,SAAS;YACb,OAAO,CAAC,GAAG,CAAC,WAAW,OAAO,IAAI,UAAU,EAAE,CAAC,CAAC;YAChD,IAAI,CAAC;gBACD,IAAA,6BAAQ,EAAC,OAAO,EAAE;oBACd,GAAG,EAAE,UAAU;oBACf,GAAG,EAAE,OAAO,CAAC,GAAG;oBAChB,KAAK,EAAE,SAAS;iBACnB,CAAC,CAAC;YACP,CAAC;YACD,MAAM,CAAC;gBACH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACpB,CAAC;QACL,CAAC;IACL,CAAC;CACJ;AApDD,sCAoDC;AACD,mCAAmC"}