simplemdg-dev-cli 1.2.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 (56) hide show
  1. package/README.md +170 -0
  2. package/dist/commands/cds.command.d.ts +2 -0
  3. package/dist/commands/cds.command.js +377 -0
  4. package/dist/commands/cds.command.js.map +1 -0
  5. package/dist/commands/cf.command.d.ts +2 -0
  6. package/dist/commands/cf.command.js +667 -0
  7. package/dist/commands/cf.command.js.map +1 -0
  8. package/dist/commands/npmrc.command.d.ts +2 -0
  9. package/dist/commands/npmrc.command.js +447 -0
  10. package/dist/commands/npmrc.command.js.map +1 -0
  11. package/dist/core/cache.d.ts +23 -0
  12. package/dist/core/cache.js +269 -0
  13. package/dist/core/cache.js.map +1 -0
  14. package/dist/core/cds.d.ts +16 -0
  15. package/dist/core/cds.js +208 -0
  16. package/dist/core/cds.js.map +1 -0
  17. package/dist/core/cf-env-parser.d.ts +2 -0
  18. package/dist/core/cf-env-parser.js +109 -0
  19. package/dist/core/cf-env-parser.js.map +1 -0
  20. package/dist/core/cf.d.ts +23 -0
  21. package/dist/core/cf.js +188 -0
  22. package/dist/core/cf.js.map +1 -0
  23. package/dist/core/doctor.d.ts +5 -0
  24. package/dist/core/doctor.js +54 -0
  25. package/dist/core/doctor.js.map +1 -0
  26. package/dist/core/install.d.ts +2 -0
  27. package/dist/core/install.js +77 -0
  28. package/dist/core/install.js.map +1 -0
  29. package/dist/core/npmrc.d.ts +26 -0
  30. package/dist/core/npmrc.js +119 -0
  31. package/dist/core/npmrc.js.map +1 -0
  32. package/dist/core/process.d.ts +29 -0
  33. package/dist/core/process.js +183 -0
  34. package/dist/core/process.js.map +1 -0
  35. package/dist/core/prompts.d.ts +29 -0
  36. package/dist/core/prompts.js +159 -0
  37. package/dist/core/prompts.js.map +1 -0
  38. package/dist/core/repository.d.ts +3 -0
  39. package/dist/core/repository.js +27 -0
  40. package/dist/core/repository.js.map +1 -0
  41. package/dist/core/scanner.d.ts +5 -0
  42. package/dist/core/scanner.js +31 -0
  43. package/dist/core/scanner.js.map +1 -0
  44. package/dist/core/types.d.ts +131 -0
  45. package/dist/core/types.js +2 -0
  46. package/dist/core/types.js.map +1 -0
  47. package/dist/core/version-conflict.d.ts +8 -0
  48. package/dist/core/version-conflict.js +33 -0
  49. package/dist/core/version-conflict.js.map +1 -0
  50. package/dist/index.d.ts +2 -0
  51. package/dist/index.js +320 -0
  52. package/dist/index.js.map +1 -0
  53. package/dist/types-local.d.ts +10 -0
  54. package/dist/types-local.js +2 -0
  55. package/dist/types-local.js.map +1 -0
  56. package/package.json +41 -0
package/dist/index.js ADDED
@@ -0,0 +1,320 @@
1
+ #!/usr/bin/env node
2
+ import { Command } from "commander";
3
+ import prompts from "prompts";
4
+ import { installRepository } from "./core/install.js";
5
+ import { scanRepositoryVariables } from "./core/scanner.js";
6
+ import { doctorPackage } from "./core/doctor.js";
7
+ import { readCache, rememberOverrideValue, rememberVariableValue, } from "./core/cache.js";
8
+ import { resolveRepositoryPath } from "./core/repository.js";
9
+ import { inspectPackageConflicts, parseLoadedLocationConflicts, rememberResolvedOverrideVersions, } from "./core/version-conflict.js";
10
+ import { getMissingCommandMessage, resolveCommand } from "./core/process.js";
11
+ import { registerCloudFoundryCommands } from "./commands/cf.command.js";
12
+ import { registerCdsCommands } from "./commands/cds.command.js";
13
+ import { registerNpmrcCommands } from "./commands/npmrc.command.js";
14
+ const program = new Command();
15
+ function parseKeyValueList(values) {
16
+ const result = {};
17
+ for (const value of values ?? []) {
18
+ const index = value.indexOf("=");
19
+ if (index === -1) {
20
+ throw new Error(`Invalid key=value: ${value}`);
21
+ }
22
+ const key = value.slice(0, index).trim();
23
+ const keyValue = value.slice(index + 1).trim();
24
+ if (!key || !keyValue) {
25
+ throw new Error(`Invalid key=value: ${value}`);
26
+ }
27
+ result[key] = keyValue;
28
+ }
29
+ return result;
30
+ }
31
+ async function askMissingVariables(options) {
32
+ const scannedVariables = await scanRepositoryVariables({
33
+ repositoryPath: options.repositoryPath,
34
+ filePatterns: options.filePatterns,
35
+ });
36
+ const variableNames = [...new Set(scannedVariables.map((item) => item.variableName))];
37
+ const cache = await readCache();
38
+ const result = { ...options.providedValues };
39
+ if (variableNames.length === 0) {
40
+ console.log("No package variables found.");
41
+ return result;
42
+ }
43
+ console.log("");
44
+ console.log("Detected package variables:");
45
+ for (const variableName of variableNames) {
46
+ const occurrences = scannedVariables
47
+ .filter((item) => item.variableName === variableName)
48
+ .reduce((total, item) => total + item.occurrences, 0);
49
+ console.log(`- ${variableName} (${occurrences} occurrence(s))`);
50
+ }
51
+ console.log("");
52
+ for (const variableName of variableNames) {
53
+ if (result[variableName]) {
54
+ await rememberVariableValue(variableName, result[variableName]);
55
+ continue;
56
+ }
57
+ const cachedValues = cache.variables[variableName] ?? [];
58
+ if (cachedValues.length > 0) {
59
+ const response = await prompts({
60
+ type: "select",
61
+ name: "selectedValue",
62
+ message: `Value for ${variableName}`,
63
+ choices: [
64
+ ...cachedValues.map((value) => ({ title: value, value })),
65
+ { title: "Enter new value", value: "__ENTER_NEW_VALUE__" },
66
+ ],
67
+ initial: 0,
68
+ });
69
+ if (!response.selectedValue) {
70
+ throw new Error(`Missing value for ${variableName}`);
71
+ }
72
+ if (response.selectedValue !== "__ENTER_NEW_VALUE__") {
73
+ result[variableName] = response.selectedValue;
74
+ await rememberVariableValue(variableName, response.selectedValue);
75
+ continue;
76
+ }
77
+ }
78
+ const response = await prompts({
79
+ type: "text",
80
+ name: "value",
81
+ message: `Enter value for ${variableName}`,
82
+ initial: cachedValues[0] ?? "",
83
+ validate: (value) => value?.trim() ? true : `${variableName} is required`,
84
+ });
85
+ if (!response.value) {
86
+ throw new Error(`Missing value for ${variableName}`);
87
+ }
88
+ result[variableName] = response.value;
89
+ await rememberVariableValue(variableName, response.value);
90
+ }
91
+ return result;
92
+ }
93
+ async function askOverrideVersion(options) {
94
+ console.log("");
95
+ console.log(`Detected package conflict: ${options.packageName}`);
96
+ console.log(options.reason);
97
+ console.log("");
98
+ const choices = [
99
+ ...options.suggestedVersions.map((version) => ({ title: version, value: version })),
100
+ { title: "Enter new version", value: "__ENTER_NEW_VERSION__" },
101
+ { title: "Skip", value: "__SKIP__" },
102
+ ];
103
+ const response = await prompts({
104
+ type: "select",
105
+ name: "value",
106
+ message: `Override version for ${options.packageName}`,
107
+ choices,
108
+ initial: 0,
109
+ });
110
+ if (!response.value || response.value === "__SKIP__") {
111
+ return undefined;
112
+ }
113
+ if (response.value !== "__ENTER_NEW_VERSION__") {
114
+ return response.value;
115
+ }
116
+ const input = await prompts({
117
+ type: "text",
118
+ name: "version",
119
+ message: `Enter version for ${options.packageName}`,
120
+ initial: options.suggestedVersions[0] ?? "",
121
+ validate: (value) => value?.trim() ? true : "Version is required",
122
+ });
123
+ return input.version;
124
+ }
125
+ async function askOverridesFromDoctor(options) {
126
+ const overrides = { ...options.currentOverrides };
127
+ const conflicts = await inspectPackageConflicts({
128
+ repositoryPath: options.repositoryPath,
129
+ packageNames: options.packageNames,
130
+ });
131
+ for (const conflict of conflicts) {
132
+ if (overrides[conflict.packageName]) {
133
+ continue;
134
+ }
135
+ const selectedVersion = await askOverrideVersion({
136
+ packageName: conflict.packageName,
137
+ suggestedVersions: conflict.suggestedVersions,
138
+ reason: [
139
+ `Found ${conflict.doctorResult.occurrences.length} installed location(s).`,
140
+ `Versions: ${conflict.doctorResult.versions.join(", ") || "unknown"}`,
141
+ `This may cause "was loaded from different locations" errors.`,
142
+ ].join("\n"),
143
+ });
144
+ if (selectedVersion) {
145
+ overrides[conflict.packageName] = selectedVersion;
146
+ }
147
+ }
148
+ await rememberResolvedOverrideVersions(overrides);
149
+ return overrides;
150
+ }
151
+ async function askOverridesFromLoadedLocationError(options) {
152
+ const overrides = { ...options.currentOverrides };
153
+ const conflicts = parseLoadedLocationConflicts(options.output);
154
+ for (const conflict of conflicts) {
155
+ if (overrides[conflict.packageName]) {
156
+ continue;
157
+ }
158
+ const doctorConflicts = await inspectPackageConflicts({
159
+ repositoryPath: options.repositoryPath,
160
+ packageNames: [conflict.packageName],
161
+ });
162
+ const suggestedVersions = doctorConflicts[0]?.suggestedVersions ?? [];
163
+ const selectedVersion = await askOverrideVersion({
164
+ packageName: conflict.packageName,
165
+ suggestedVersions,
166
+ reason: conflict.rawMessage,
167
+ });
168
+ if (selectedVersion) {
169
+ overrides[conflict.packageName] = selectedVersion;
170
+ }
171
+ }
172
+ await rememberResolvedOverrideVersions(overrides);
173
+ return overrides;
174
+ }
175
+ async function runInstallCommand(options) {
176
+ const repositoryPath = await resolveRepositoryPath(options.cwd ?? process.cwd());
177
+ const installCommand = options.cmd ?? "npm install";
178
+ const filePatterns = options.pattern ?? ["package.json"];
179
+ const providedVariableValues = parseKeyValueList(options.set);
180
+ let temporaryOverrides = parseKeyValueList(options.override);
181
+ const variableValues = await askMissingVariables({
182
+ repositoryPath,
183
+ filePatterns,
184
+ providedValues: providedVariableValues,
185
+ });
186
+ const checkPackageNames = options.checkPackage?.length ? options.checkPackage : ["@sap/cds"];
187
+ if (options.autoDoctor !== false) {
188
+ temporaryOverrides = await askOverridesFromDoctor({
189
+ repositoryPath,
190
+ packageNames: checkPackageNames,
191
+ currentOverrides: temporaryOverrides,
192
+ });
193
+ }
194
+ for (const [packageName, version] of Object.entries(temporaryOverrides)) {
195
+ await rememberOverrideValue(packageName, version);
196
+ }
197
+ let installResult = await installRepository({
198
+ repositoryPath,
199
+ installCommand,
200
+ variableValues,
201
+ temporaryOverrides,
202
+ filePatterns,
203
+ onLog: (value) => process.stdout.write(value),
204
+ onErrorLog: (value) => process.stderr.write(value),
205
+ });
206
+ const fullOutput = `${installResult.stdout}\n${installResult.stderr}`;
207
+ const loadedLocationConflicts = parseLoadedLocationConflicts(fullOutput);
208
+ if (loadedLocationConflicts.length > 0) {
209
+ console.log("");
210
+ console.log("Loaded-from-different-locations error detected.");
211
+ console.log("The tool can retry install with temporary overrides.");
212
+ console.log("");
213
+ const nextOverrides = await askOverridesFromLoadedLocationError({
214
+ repositoryPath,
215
+ output: fullOutput,
216
+ currentOverrides: temporaryOverrides,
217
+ });
218
+ const hasNewOverride = JSON.stringify(nextOverrides) !== JSON.stringify(temporaryOverrides);
219
+ if (hasNewOverride) {
220
+ console.log("");
221
+ console.log("Retrying install with temporary overrides...");
222
+ console.log("");
223
+ installResult = await installRepository({
224
+ repositoryPath,
225
+ installCommand,
226
+ variableValues,
227
+ temporaryOverrides: nextOverrides,
228
+ filePatterns,
229
+ onLog: (value) => process.stdout.write(value),
230
+ onErrorLog: (value) => process.stderr.write(value),
231
+ });
232
+ }
233
+ }
234
+ process.exitCode = installResult.exitCode;
235
+ }
236
+ async function runToolsDoctorCommand(options) {
237
+ const repositoryPath = await resolveRepositoryPath(options.cwd);
238
+ const tools = [
239
+ { command: "cds", label: "SAP CAP CLI" },
240
+ { command: "cf", label: "Cloud Foundry CLI" },
241
+ ];
242
+ let hasMissingTool = false;
243
+ for (const tool of tools) {
244
+ const resolvedCommand = await resolveCommand(tool.command, { cwd: repositoryPath });
245
+ if (resolvedCommand) {
246
+ console.log(`${tool.command}: OK (${resolvedCommand.command})`);
247
+ continue;
248
+ }
249
+ hasMissingTool = true;
250
+ console.log(`${tool.command}: missing (${tool.label})`);
251
+ console.log(getMissingCommandMessage(tool.command));
252
+ console.log("");
253
+ }
254
+ process.exitCode = hasMissingTool ? 1 : 0;
255
+ }
256
+ program.name("simplemdg").description("SimpleMDG local development helper").version("0.3.0");
257
+ program
258
+ .command("scan")
259
+ .description("Scan current repository for ${VARIABLE_NAME} placeholders")
260
+ .option("--cwd <path>", "Repository path", process.cwd())
261
+ .option("--pattern <pattern...>", "File patterns", ["package.json"])
262
+ .action(async (options) => {
263
+ const repositoryPath = await resolveRepositoryPath(options.cwd);
264
+ const scannedVariables = await scanRepositoryVariables({ repositoryPath, filePatterns: options.pattern });
265
+ if (scannedVariables.length === 0) {
266
+ console.log("No variables found.");
267
+ return;
268
+ }
269
+ for (const item of scannedVariables) {
270
+ console.log(`${item.variableName} | ${item.occurrences} occurrence(s) | ${item.filePath}`);
271
+ }
272
+ });
273
+ program
274
+ .command("install")
275
+ .alias("i")
276
+ .description("Install current repository with temporary variable replacement and temporary overrides")
277
+ .option("--cwd <path>", "Repository path", process.cwd())
278
+ .option("--cmd <command>", "Install command", "npm install")
279
+ .option("--set <keyValue...>", "Variable value. Example: --set SIMPLEMDG_BRANCH=sandbox")
280
+ .option("--override <keyValue...>", "Temporary override. Example: --override @sap/cds=9.8.3")
281
+ .option("--pattern <pattern...>", "File patterns", ["package.json"])
282
+ .option("--check-package <packageName...>", "Packages to check for duplicated loaded locations", ["@sap/cds"])
283
+ .option("--no-auto-doctor", "Disable automatic duplicated package inspection")
284
+ .action(runInstallCommand);
285
+ program
286
+ .command("doctor")
287
+ .description("Inspect duplicated package versions in current repository")
288
+ .option("--cwd <path>", "Repository path", process.cwd())
289
+ .option("--package <packageName>", "Package name", "@sap/cds")
290
+ .option("--tools", "Check required external tools: cds and cf")
291
+ .action(async (options) => {
292
+ if (options.tools) {
293
+ await runToolsDoctorCommand({ cwd: options.cwd });
294
+ return;
295
+ }
296
+ const repositoryPath = await resolveRepositoryPath(options.cwd);
297
+ const result = await doctorPackage({ repositoryPath, packageName: options.package });
298
+ console.log(`Package: ${result.packageName}`);
299
+ console.log(`Versions: ${result.versions.join(", ") || "N/A"}`);
300
+ console.log(`Occurrences: ${result.occurrences.length}`);
301
+ for (const occurrence of result.occurrences) {
302
+ console.log(`- ${occurrence.version ?? "unknown"} | ${occurrence.path ?? "unknown path"}`);
303
+ }
304
+ if (result.hasMultipleVersions || result.occurrences.length > 1) {
305
+ console.log("");
306
+ console.log("Suggestion:");
307
+ console.log(`simplemdg install --override ${result.packageName}=<version>`);
308
+ console.log("");
309
+ console.log("Example:");
310
+ console.log(`simplemdg install --override ${result.packageName}=9.8.3`);
311
+ }
312
+ });
313
+ registerCloudFoundryCommands(program);
314
+ registerCdsCommands(program);
315
+ registerNpmrcCommands(program);
316
+ program.parseAsync().catch((error) => {
317
+ console.error(error instanceof Error ? error.message : error);
318
+ process.exit(1);
319
+ });
320
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export type TKeyValueMap = Record<string, string>;
2
+ export type TInstallCommandOptions = {
3
+ cwd?: string;
4
+ cmd?: string;
5
+ set?: string[];
6
+ override?: string[];
7
+ pattern?: string[];
8
+ checkPackage?: string[];
9
+ autoDoctor?: boolean;
10
+ };
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types-local.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types-local.js","sourceRoot":"","sources":["../src/types-local.ts"],"names":[],"mappings":""}
package/package.json ADDED
@@ -0,0 +1,41 @@
1
+ {
2
+ "name": "simplemdg-dev-cli",
3
+ "version": "1.2.0",
4
+ "description": "SimpleMDG local development helper for npm install, npmrc, Cloud Foundry, CAP watch, and EDMX metadata export.",
5
+ "type": "module",
6
+ "bin": {
7
+ "simplemdg": "dist/index.js",
8
+ "smdg": "dist/index.js"
9
+ },
10
+ "files": [
11
+ "dist",
12
+ "README.md"
13
+ ],
14
+ "scripts": {
15
+ "build": "node ./node_modules/typescript/lib/tsc.js -p tsconfig.json",
16
+ "dev": "tsx src/index.ts",
17
+ "start": "node dist/index.js",
18
+ "prepack": "npm run build"
19
+ },
20
+ "dependencies": {
21
+ "chalk": "^5.3.0",
22
+ "commander": "^12.1.0",
23
+ "execa": "^9.3.1",
24
+ "fast-glob": "^3.3.2",
25
+ "fs-extra": "^11.2.0",
26
+ "prompts": "^2.4.2"
27
+ },
28
+ "devDependencies": {
29
+ "@types/fs-extra": "^11.0.4",
30
+ "@types/node": "^20.14.10",
31
+ "@types/prompts": "^2.4.9",
32
+ "tsx": "^4.16.2",
33
+ "typescript": "^5.5.3"
34
+ },
35
+ "engines": {
36
+ "node": ">=18.18.0"
37
+ },
38
+ "publishConfig": {
39
+ "access": "public"
40
+ }
41
+ }