@pagopa/dx-cli 0.8.0 → 0.8.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 (2) hide show
  1. package/bin/index.js +71 -36
  2. 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 updateJSCodeReview = async (sha) => {
61
+ var updateJSCodeReviewJob = (sha) => (workflow, filename) => {
54
62
  const logger2 = getLogger2(["dx-cli", "codemod"]);
55
- const results = await replaceInFile({
56
- allowEmptyPaths: true,
57
- files: [".github/workflows/*.yaml"],
58
- from: [/pagopa\/dx\/.github\/workflows\/js_code_review.yaml@(\S+)/g],
59
- to: [`pagopa/dx/.github/workflows/js_code_review.yaml@${sha}`]
60
- });
61
- const updated = results.filter((r) => r.hasChanged).map((r) => r.file);
62
- updated.forEach((filename) => {
63
- logger2.info("Workflow {filename} updated", { filename });
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
- return updated;
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 updateJSCodeReview(sha);
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 {owner}/{repo}",
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 YAML from "yaml";
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 = YAML.parseDocument(workflow);
127
+ const document = YAML3.parseDocument(workflow);
100
128
  let updated = false;
101
- YAML.visit(document, {
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 YAML.visit.SKIP;
153
+ return YAML3.visit.SKIP;
126
154
  },
127
155
  Pair(_, pair) {
128
- if (YAML.isScalar(pair.key)) {
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 YAML.Pair("web_app_name", pair.value);
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 YAML.visit.REMOVE;
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 YAML.Pair(
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 YAML.stringify(document);
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 YAML2 from "yaml";
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 = YAML2.parse(yarnrc);
239
+ const parsed = YAML4.parse(yarnrc);
212
240
  if (parsed.packageExtensions) {
213
241
  return parsed.packageExtensions;
214
242
  }
@@ -252,7 +280,7 @@ async function replacePMOccurrences() {
252
280
  "https://yarnpkg.com/",
253
281
  "https://classic.yarnpkg.com/",
254
282
  /\b(yarn workspace|npm -(\b-workspace\b|\bw\b)) (\S+)\b/g,
255
- /\b(yarn workspace|npm -(\b-workspace\b|\bw\b)) /g,
283
+ /\b(yarn workspace|npm -(\b-workspace\b|\bw\b))\b/g,
256
284
  /\b(yarn install --immutable|npm ci)\b/g,
257
285
  /\b(yarn -q dlx|npx)\b/g,
258
286
  /\b(Yarn|npm)\b/gi
@@ -261,7 +289,7 @@ async function replacePMOccurrences() {
261
289
  to: [
262
290
  "https://pnpm.io/",
263
291
  "https://pnpm.io/",
264
- "pnpm --filter $1",
292
+ "pnpm --filter $3",
265
293
  "pnpm --filter <package-selector>",
266
294
  "pnpm install --frozen-lockfile",
267
295
  "pnpm dlx",
@@ -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 ignore = await updateJSCodeReview(sha);
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 = YAML2.stringify(pnpmWorkspace);
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.0"}`);
766
+ logger2.info(`dx CLI version: ${"0.8.2"}`);
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.0");
775
+ program2.name("dx").description("The CLI for DX-Platform").version("0.8.2");
741
776
  program2.addCommand(makeDoctorCommand(deps2, config2));
742
777
  program2.addCommand(makeCodemodCommand(cliDeps));
743
778
  if (process.env.ENABLE_INIT_COMMAND) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pagopa/dx-cli",
3
- "version": "0.8.0",
3
+ "version": "0.8.2",
4
4
  "type": "module",
5
5
  "description": "A CLI useful to manage DX tools.",
6
6
  "repository": {