@pagopa/dx-cli 0.8.0 → 0.8.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.
- package/bin/index.js +69 -34
- package/package.json +1 -1
package/bin/index.js
CHANGED
|
@@ -25,6 +25,7 @@ var LocalCodemodRegistry = class {
|
|
|
25
25
|
// src/adapters/codemods/update-code-review.ts
|
|
26
26
|
import { getLogger as getLogger2 } from "@logtape/logtape";
|
|
27
27
|
import { replaceInFile } from "replace-in-file";
|
|
28
|
+
import * as YAML2 from "yaml";
|
|
28
29
|
|
|
29
30
|
// src/adapters/codemods/git.ts
|
|
30
31
|
import { getLogger } from "@logtape/logtape";
|
|
@@ -49,20 +50,48 @@ var getLatestCommitShaOrRef = async (owner, repo, ref = "main") => {
|
|
|
49
50
|
});
|
|
50
51
|
};
|
|
51
52
|
|
|
53
|
+
// src/adapters/codemods/yaml.ts
|
|
54
|
+
import * as YAML from "yaml";
|
|
55
|
+
var isChildOf = (path2, key) => {
|
|
56
|
+
const ancestor = path2.at(-1);
|
|
57
|
+
return YAML.isPair(ancestor) && YAML.isScalar(ancestor.key) && typeof ancestor.key.value === "string" && ancestor.key.value === key;
|
|
58
|
+
};
|
|
59
|
+
|
|
52
60
|
// src/adapters/codemods/update-code-review.ts
|
|
53
|
-
var
|
|
61
|
+
var updateJSCodeReviewJob = (sha) => (workflow, filename) => {
|
|
54
62
|
const logger2 = getLogger2(["dx-cli", "codemod"]);
|
|
55
|
-
const
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
63
|
+
const document = YAML2.parseDocument(workflow);
|
|
64
|
+
let updated = false;
|
|
65
|
+
YAML2.visit(document, {
|
|
66
|
+
Map(_, map, path2) {
|
|
67
|
+
if (map.has("jobs") || isChildOf(path2, "jobs")) {
|
|
68
|
+
return void 0;
|
|
69
|
+
}
|
|
70
|
+
if (map.has("uses")) {
|
|
71
|
+
const uses = map.get("uses");
|
|
72
|
+
if (typeof uses === "string" && uses.startsWith("pagopa/dx/.github/workflows/js_code_review.yaml@")) {
|
|
73
|
+
map.set("secrets", "inherit");
|
|
74
|
+
map.set("permissions", {
|
|
75
|
+
contents: "read",
|
|
76
|
+
"pull-requests": "write"
|
|
77
|
+
});
|
|
78
|
+
map.set(
|
|
79
|
+
"uses",
|
|
80
|
+
`pagopa/dx/.github/workflows/js_code_review.yaml@${sha}`
|
|
81
|
+
);
|
|
82
|
+
updated = true;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return YAML2.visit.SKIP;
|
|
86
|
+
}
|
|
64
87
|
});
|
|
65
|
-
|
|
88
|
+
if (updated) {
|
|
89
|
+
logger2.info("Workflow {filename} updated", {
|
|
90
|
+
filename
|
|
91
|
+
});
|
|
92
|
+
return YAML2.stringify(document);
|
|
93
|
+
}
|
|
94
|
+
return workflow;
|
|
66
95
|
};
|
|
67
96
|
var updateCodeReview = {
|
|
68
97
|
apply: async () => {
|
|
@@ -70,13 +99,16 @@ var updateCodeReview = {
|
|
|
70
99
|
const owner = "pagopa";
|
|
71
100
|
const repo = "dx";
|
|
72
101
|
return getLatestCommitSha(owner, repo).then(async (sha) => {
|
|
73
|
-
await
|
|
102
|
+
await replaceInFile({
|
|
103
|
+
allowEmptyPaths: true,
|
|
104
|
+
files: [".github/workflows/*.yaml"],
|
|
105
|
+
processor: updateJSCodeReviewJob(sha)
|
|
106
|
+
});
|
|
74
107
|
}).catch(() => {
|
|
75
108
|
logger2.error(
|
|
76
|
-
"Failed to fetch the latest commit sha from {
|
|
109
|
+
"Failed to fetch the latest commit sha from {repository}",
|
|
77
110
|
{
|
|
78
|
-
owner
|
|
79
|
-
repo
|
|
111
|
+
repository: `${owner}/${repo}`
|
|
80
112
|
}
|
|
81
113
|
);
|
|
82
114
|
});
|
|
@@ -88,17 +120,13 @@ var updateCodeReview = {
|
|
|
88
120
|
// src/adapters/codemods/use-azure-appsvc.ts
|
|
89
121
|
import { getLogger as getLogger3 } from "@logtape/logtape";
|
|
90
122
|
import { replaceInFile as replaceInFile2 } from "replace-in-file";
|
|
91
|
-
import
|
|
92
|
-
var isChildOf = (path2, key) => {
|
|
93
|
-
const ancestor = path2.at(-1);
|
|
94
|
-
return YAML.isPair(ancestor) && YAML.isScalar(ancestor.key) && typeof ancestor.key.value === "string" && ancestor.key.value === key;
|
|
95
|
-
};
|
|
123
|
+
import YAML3 from "yaml";
|
|
96
124
|
var migrateWorkflow = (sha) => (workflow, filename) => {
|
|
97
125
|
const logger2 = getLogger3(["dx-cli", "codemod"]);
|
|
98
126
|
logger2.debug("Processing {filename} file", { filename });
|
|
99
|
-
const document =
|
|
127
|
+
const document = YAML3.parseDocument(workflow);
|
|
100
128
|
let updated = false;
|
|
101
|
-
|
|
129
|
+
YAML3.visit(document, {
|
|
102
130
|
Map(_, map, path2) {
|
|
103
131
|
if (isChildOf(path2, "jobs") || isChildOf(path2, "with")) {
|
|
104
132
|
return void 0;
|
|
@@ -122,24 +150,24 @@ var migrateWorkflow = (sha) => (workflow, filename) => {
|
|
|
122
150
|
return void 0;
|
|
123
151
|
}
|
|
124
152
|
}
|
|
125
|
-
return
|
|
153
|
+
return YAML3.visit.SKIP;
|
|
126
154
|
},
|
|
127
155
|
Pair(_, pair) {
|
|
128
|
-
if (
|
|
156
|
+
if (YAML3.isScalar(pair.key)) {
|
|
129
157
|
if (pair.key.value === "function_app_name") {
|
|
130
158
|
updated = true;
|
|
131
159
|
logger2.debug("Updating function_app_name to web_app_name");
|
|
132
|
-
return new
|
|
160
|
+
return new YAML3.Pair("web_app_name", pair.value);
|
|
133
161
|
}
|
|
134
162
|
if (pair.key.value === "use_staging_slot") {
|
|
135
163
|
updated = true;
|
|
136
164
|
logger2.debug("Removing use_staging_slot");
|
|
137
|
-
return
|
|
165
|
+
return YAML3.visit.REMOVE;
|
|
138
166
|
}
|
|
139
167
|
if (pair.key.value === "uses") {
|
|
140
168
|
updated = true;
|
|
141
169
|
logger2.debug("Updating uses value");
|
|
142
|
-
return new
|
|
170
|
+
return new YAML3.Pair(
|
|
143
171
|
"uses",
|
|
144
172
|
`pagopa/dx/.github/workflows/release-azure-appsvc.yaml@${sha}`
|
|
145
173
|
);
|
|
@@ -151,7 +179,7 @@ var migrateWorkflow = (sha) => (workflow, filename) => {
|
|
|
151
179
|
logger2.info("Workflow {filename} updated", {
|
|
152
180
|
filename
|
|
153
181
|
});
|
|
154
|
-
return
|
|
182
|
+
return YAML3.stringify(document);
|
|
155
183
|
}
|
|
156
184
|
logger2.debug("No changes applied to {filename}", { filename });
|
|
157
185
|
return workflow;
|
|
@@ -174,7 +202,7 @@ import { getLogger as getLogger4 } from "@logtape/logtape";
|
|
|
174
202
|
import { $ } from "execa";
|
|
175
203
|
import * as fs from "fs/promises";
|
|
176
204
|
import { replaceInFile as replaceInFile3 } from "replace-in-file";
|
|
177
|
-
import
|
|
205
|
+
import YAML4 from "yaml";
|
|
178
206
|
var NPM = class {
|
|
179
207
|
lockFileName = "package-lock.json";
|
|
180
208
|
async listWorkspaces() {
|
|
@@ -208,7 +236,7 @@ var Yarn = class {
|
|
|
208
236
|
async function extractPackageExtensions() {
|
|
209
237
|
try {
|
|
210
238
|
const yarnrc = await fs.readFile(".yarnrc.yml", "utf-8");
|
|
211
|
-
const parsed =
|
|
239
|
+
const parsed = YAML4.parse(yarnrc);
|
|
212
240
|
if (parsed.packageExtensions) {
|
|
213
241
|
return parsed.packageExtensions;
|
|
214
242
|
}
|
|
@@ -278,7 +306,12 @@ async function updateDXWorkflows() {
|
|
|
278
306
|
const logger2 = getLogger4(["dx-cli", "codemod"]);
|
|
279
307
|
logger2.info("Updating Github Workflows workflows...");
|
|
280
308
|
const sha = await getLatestCommitShaOrRef("pagopa", "dx");
|
|
281
|
-
const
|
|
309
|
+
const results = await replaceInFile3({
|
|
310
|
+
allowEmptyPaths: true,
|
|
311
|
+
files: [".github/workflows/*.yaml"],
|
|
312
|
+
processor: updateJSCodeReviewJob(sha)
|
|
313
|
+
});
|
|
314
|
+
const ignore = results.filter((r) => !r.hasChanged).map((r) => r.file);
|
|
282
315
|
await replaceInFile3({
|
|
283
316
|
allowEmptyPaths: true,
|
|
284
317
|
files: [".github/workflows/*.yaml"],
|
|
@@ -291,7 +324,7 @@ async function writePnpmWorkspaceFile(workspaces, packageExtensions) {
|
|
|
291
324
|
packageExtensions,
|
|
292
325
|
packages: workspaces.length > 0 ? workspaces : ["apps/*", "packages/*"]
|
|
293
326
|
};
|
|
294
|
-
const yamlContent =
|
|
327
|
+
const yamlContent = YAML4.stringify(pnpmWorkspace);
|
|
295
328
|
await fs.writeFile("pnpm-workspace.yaml", yamlContent, "utf-8");
|
|
296
329
|
}
|
|
297
330
|
var apply = async (info) => {
|
|
@@ -347,6 +380,8 @@ var apply = async (info) => {
|
|
|
347
380
|
}
|
|
348
381
|
await replacePMOccurrences();
|
|
349
382
|
await updateDXWorkflows();
|
|
383
|
+
logger2.info("Adding pnpm store to .gitignore...");
|
|
384
|
+
await fs.appendFile(".gitignore", "\n\n# PNPM\n.pnpm-store");
|
|
350
385
|
logger2.info("Setting pnpm as the package manager...");
|
|
351
386
|
await $`corepack use pnpm@latest`;
|
|
352
387
|
};
|
|
@@ -728,7 +763,7 @@ import { Command as Command5 } from "commander";
|
|
|
728
763
|
import { getLogger as getLogger7 } from "@logtape/logtape";
|
|
729
764
|
function printVersion() {
|
|
730
765
|
const logger2 = getLogger7(["dx-cli", "version"]);
|
|
731
|
-
logger2.info(`dx CLI version: ${"0.8.
|
|
766
|
+
logger2.info(`dx CLI version: ${"0.8.1"}`);
|
|
732
767
|
}
|
|
733
768
|
|
|
734
769
|
// src/adapters/commander/commands/version.ts
|
|
@@ -737,7 +772,7 @@ var makeVersionCommand = () => new Command5().name("version").alias("v").action(
|
|
|
737
772
|
// src/adapters/commander/index.ts
|
|
738
773
|
var makeCli = (deps2, config2, cliDeps) => {
|
|
739
774
|
const program2 = new Command6();
|
|
740
|
-
program2.name("dx").description("The CLI for DX-Platform").version("0.8.
|
|
775
|
+
program2.name("dx").description("The CLI for DX-Platform").version("0.8.1");
|
|
741
776
|
program2.addCommand(makeDoctorCommand(deps2, config2));
|
|
742
777
|
program2.addCommand(makeCodemodCommand(cliDeps));
|
|
743
778
|
if (process.env.ENABLE_INIT_COMMAND) {
|