@decaf-ts/utils 0.4.7 → 0.4.8

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 (38) 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/cli/commands/build-scripts.cjs +12 -4
  7. package/lib/cli/commands/build-scripts.js.map +1 -1
  8. package/lib/cli/commands/index.cjs +0 -1
  9. package/lib/cli/commands/index.d.ts +0 -1
  10. package/lib/cli/commands/index.js.map +1 -1
  11. package/lib/esm/cli/commands/build-scripts.js +13 -5
  12. package/lib/esm/cli/commands/build-scripts.js.map +1 -1
  13. package/lib/esm/cli/commands/index.d.ts +0 -1
  14. package/lib/esm/cli/commands/index.js +0 -1
  15. package/lib/esm/cli/commands/index.js.map +1 -1
  16. package/lib/esm/index.d.ts +1 -1
  17. package/lib/esm/index.js +1 -1
  18. package/lib/esm/utils/fs.d.ts +3 -0
  19. package/lib/esm/utils/fs.js +63 -0
  20. package/lib/esm/utils/fs.js.map +1 -1
  21. package/lib/index.cjs +1 -1
  22. package/lib/index.d.ts +1 -1
  23. package/lib/utils/fs.cjs +65 -0
  24. package/lib/utils/fs.d.ts +3 -0
  25. package/lib/utils/fs.js.map +1 -1
  26. package/package.json +1 -1
  27. package/lib/bin/update-scripts.cjs +0 -13
  28. package/lib/bin/update-scripts.d.ts +0 -1
  29. package/lib/bin/update-scripts.js.map +0 -1
  30. package/lib/cli/commands/update-scripts.cjs +0 -516
  31. package/lib/cli/commands/update-scripts.d.ts +0 -211
  32. package/lib/cli/commands/update-scripts.js.map +0 -1
  33. package/lib/esm/bin/update-scripts.d.ts +0 -1
  34. package/lib/esm/bin/update-scripts.js +0 -10
  35. package/lib/esm/bin/update-scripts.js.map +0 -1
  36. package/lib/esm/cli/commands/update-scripts.d.ts +0 -211
  37. package/lib/esm/cli/commands/update-scripts.js +0 -509
  38. package/lib/esm/cli/commands/update-scripts.js.map +0 -1
@@ -1,509 +0,0 @@
1
- /* istanbul ignore file */
2
- import path from "path";
3
- import { Command } from "./../command.js";
4
- import { getPackage, HttpClient, patchFile, runCommand, setPackageAttribute, SetupScriptKey, Tokens, writeFile, } from "./../../utils/index.js";
5
- import { UserInput } from "./../../input/index.js";
6
- import fs from "fs";
7
- import { patchString } from "@decaf-ts/logging";
8
- const baseUrl = "https://raw.githubusercontent.com/decaf-ts/ts-workspace/master";
9
- const options = {
10
- templates: [
11
- ".github/ISSUE_TEMPLATE/bug_report.md",
12
- ".github/ISSUE_TEMPLATE/feature_request.md",
13
- ".github/FUNDING.yml",
14
- ],
15
- workflows: [
16
- ".github/workflows/codeql-analysis.yml",
17
- ".github/workflows/jest-coverage.yaml",
18
- ".github/workflows/nodejs-build-prod.yaml",
19
- ".github/workflows/pages.yaml",
20
- ".github/workflows/publish-on-release.yaml",
21
- ".github/workflows/release-on-tag.yaml",
22
- ".github/workflows/snyk-analysis.yaml",
23
- ],
24
- ide: [
25
- ".idea/runConfigurations/All Tests.run.xml",
26
- ".idea/runConfigurations/build.run.xml",
27
- ".idea/runConfigurations/build_prod.run.xml",
28
- ".idea/runConfigurations/coverage.run.xml",
29
- ".idea/runConfigurations/docs.run.xml",
30
- ".idea/runConfigurations/drawings.run.xml",
31
- ".idea/runConfigurations/flash-forward.run.xml",
32
- ".idea/runConfigurations/Integration_Tests.run.xml",
33
- ".idea/runConfigurations/Bundling_Tests.run.xml",
34
- ".idea/runConfigurations/lint-fix.run.xml",
35
- ".idea/runConfigurations/release.run.xml",
36
- ".idea/runConfigurations/test_circular.run.xml",
37
- ".idea/runConfigurations/uml.run.xml",
38
- ".idea/runConfigurations/Unit Tests.run.xml",
39
- ".idea/runConfigurations/update-scripts.run.xml",
40
- ],
41
- docs: [
42
- "workdocs/tutorials/Contributing.md",
43
- "workdocs/tutorials/Documentation.md",
44
- "workdocs/tutorials/For Developers.md",
45
- "workdocs/2-Badges.md",
46
- "workdocs/jsdocs.json",
47
- "workdocs/readme-md.json",
48
- ],
49
- styles: [".prettierrc", "eslint.config.js"],
50
- scripts: [
51
- "bin/update-scripts.cjs",
52
- "bin/tag-release.cjs",
53
- "bin/build-scripts.cjs",
54
- ],
55
- tests: ["jest.config.ts", "workdocs/reports/jest.coverage.config.ts"],
56
- typescript: ["tsconfig.json"],
57
- docker: ["Dockerfile"],
58
- automation: [
59
- "workdocs/confluence/Continuous Integration-Deployment/GitHub.md",
60
- "workdocs/confluence/Continuous Integration-Deployment/Jira.md",
61
- "workdocs/confluence/Continuous Integration-Deployment/Teams.md",
62
- ],
63
- };
64
- const argzz = {
65
- // init attributes
66
- boot: {
67
- type: "boolean",
68
- },
69
- org: {
70
- type: "string",
71
- short: "o",
72
- },
73
- name: {
74
- type: "string",
75
- short: "n",
76
- default: undefined,
77
- },
78
- author: {
79
- type: "string",
80
- short: "a",
81
- default: undefined,
82
- },
83
- // update attributes
84
- all: {
85
- type: "boolean",
86
- },
87
- license: {
88
- type: "string",
89
- message: "Pick the license",
90
- },
91
- scripts: {
92
- type: "boolean",
93
- },
94
- styles: {
95
- type: "boolean",
96
- },
97
- docs: {
98
- type: "boolean",
99
- },
100
- ide: {
101
- type: "boolean",
102
- },
103
- workflows: {
104
- type: "boolean",
105
- },
106
- templates: {
107
- type: "boolean",
108
- },
109
- typescript: {
110
- type: "boolean",
111
- },
112
- docker: {
113
- type: "boolean",
114
- },
115
- pkg: {
116
- type: "boolean",
117
- },
118
- dependencies: {
119
- type: "boolean",
120
- },
121
- tests: {
122
- type: "boolean",
123
- },
124
- automation: {
125
- type: "boolean",
126
- },
127
- };
128
- /**
129
- * @class TemplateSync
130
- * @extends {Command}
131
- * @category scripts
132
- * @description A command-line tool for synchronizing project templates and configurations.
133
- * @summary This class provides functionality to download and update various project files and configurations from a remote repository.
134
- * It supports updating licenses, IDE configurations, scripts, styles, documentation, workflows, and templates.
135
- *
136
- * @param {CommandOptions} args - The command options for TemplateSync
137
- */
138
- export class TemplateSync extends Command {
139
- constructor() {
140
- super("TemplateSync", argzz);
141
- this.replacements = {};
142
- /**
143
- * @description Downloads style configuration files.
144
- * @returns {Promise<void>}
145
- */
146
- this.getStyles = () => this.downloadOption("styles");
147
- /**
148
- * @description Downloads template files.
149
- * @returns {Promise<void>}
150
- */
151
- this.getTemplates = () => this.downloadOption("templates");
152
- /**
153
- * @description Downloads workflow configuration files.
154
- * @returns {Promise<void>}
155
- */
156
- this.getWorkflows = () => this.downloadOption("workflows");
157
- /**
158
- * @description Downloads documentation files.
159
- * @returns {Promise<void>}
160
- */
161
- this.getDocs = () => this.downloadOption("docs");
162
- /**
163
- * @description Downloads typescript config files.
164
- * @returns {Promise<void>}
165
- */
166
- this.getTypescript = () => this.downloadOption("typescript");
167
- /**
168
- * @description Downloads automation documentation files.
169
- * @returns {Promise<void>}
170
- */
171
- this.getAutomation = () => this.downloadOption("automation");
172
- /**
173
- * @description Downloads automation documentation files.
174
- * @returns {Promise<void>}
175
- */
176
- this.getTests = () => this.downloadOption("tests");
177
- /**
178
- * @description Downloads docker image files.
179
- * @returns {Promise<void>}
180
- */
181
- this.getDocker = () => this.downloadOption("docker");
182
- }
183
- loadValuesFromPackage() {
184
- const p = process.cwd();
185
- const author = getPackage(p, "author");
186
- const scopedName = getPackage(p, "name");
187
- let name = scopedName;
188
- let org;
189
- if (name.startsWith("@")) {
190
- const split = name.split("/");
191
- name = split[1];
192
- org = split[0].replace("@", "");
193
- }
194
- ["Tiago Venceslau", "TiagoVenceslau", "${author}"].forEach((el) => (this.replacements[el] = author));
195
- ["TS-Workspace", "ts-workspace", "${name}"].forEach((el) => (this.replacements[el] = name));
196
- ["decaf-ts", "${org}"].forEach((el) => (this.replacements[el] = org || '""'));
197
- this.replacements["${org_or_owner}"] = org || name;
198
- }
199
- /**
200
- * @description Downloads files for a specific option category.
201
- * @summary This method downloads all files associated with a given option key from the remote repository.
202
- * @param {string} key - The key representing the option category to download
203
- * @returns {Promise<void>}
204
- * @throws {Error} If the specified option key is not found
205
- */
206
- async downloadOption(key) {
207
- if (!(key in options)) {
208
- throw new Error(`Option "${key}" not found in options`);
209
- }
210
- const files = options[key];
211
- for (const file of files) {
212
- this.log.info(`Downloading ${file}`);
213
- let data = await HttpClient.downloadFile(`${baseUrl}/${file}`);
214
- data = patchString(data, this.replacements);
215
- writeFile(path.join(process.cwd(), file), data);
216
- }
217
- }
218
- /**
219
- * @description Downloads and sets up the specified license.
220
- * @summary This method downloads the chosen license file, saves it to the project, and updates the package.json license field.
221
- * @param {"MIT" | "GPL" | "Apache" | "LGPL" | "AGPL"} license - The license to download and set up
222
- * @returns {Promise<void>}
223
- */
224
- async getLicense(license) {
225
- this.log.info(`Downloading ${license} license`);
226
- const url = `${baseUrl}/workdocs/licenses/${license}.md`;
227
- let data = await HttpClient.downloadFile(url);
228
- data = patchString(data, this.replacements);
229
- writeFile(path.join(process.cwd(), "LICENSE.md"), data);
230
- setPackageAttribute("license", license);
231
- }
232
- /**
233
- * @description Downloads IDE configuration files.
234
- * @returns {Promise<void>}
235
- */
236
- async getIde() {
237
- fs.mkdirSync(path.join(process.cwd(), ".idea", "runConfigurations"), {
238
- recursive: true,
239
- });
240
- await this.downloadOption("ide");
241
- }
242
- /**
243
- * @description Update npm scripts
244
- * @returns {Promise<void>}
245
- */
246
- async getScripts() {
247
- await this.downloadOption("scripts");
248
- this.log.info("please re-run the command");
249
- process.exit(0);
250
- }
251
- async initPackage(pkgName, author, license) {
252
- try {
253
- const pkg = getPackage();
254
- delete pkg[SetupScriptKey];
255
- pkg.name = pkgName;
256
- pkg.version = "0.0.1";
257
- pkg.author = author;
258
- pkg.license = license;
259
- fs.writeFileSync("package.json", JSON.stringify(pkg, null, 2));
260
- }
261
- catch (e) {
262
- throw new Error(`Error fixing package.json: ${e}`);
263
- }
264
- }
265
- async updatePackageScrips() {
266
- try {
267
- const originalPkg = JSON.parse(await HttpClient.downloadFile(`${baseUrl}/package.json`));
268
- const { scripts } = originalPkg;
269
- const pkg = getPackage();
270
- Object.keys(pkg.scripts).forEach((key) => {
271
- if (key in scripts) {
272
- const replaced = patchString(scripts[key], this.replacements);
273
- if (replaced !== scripts[key]) {
274
- pkg.scripts[key] = replaced;
275
- }
276
- }
277
- });
278
- pkg["exports"]["require"] = originalPkg["exports"]["require"];
279
- pkg["exports"]["import"] = originalPkg["exports"]["import"];
280
- pkg["types"] = originalPkg["types"];
281
- fs.writeFileSync("package.json", JSON.stringify(pkg, null, 2));
282
- }
283
- catch (e) {
284
- throw new Error(`Error fixing package.json scripts: ${e}`);
285
- }
286
- }
287
- async createTokenFiles() {
288
- const log = this.log.for(this.createTokenFiles);
289
- const gitToken = await UserInput.insistForText("token", "please input your github token", (res) => {
290
- return !!res.match(/^ghp_[0-9a-zA-Z]{36}$/g);
291
- });
292
- Object.values(Tokens).forEach((token) => {
293
- try {
294
- let status;
295
- try {
296
- status = fs.existsSync(token);
297
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
298
- }
299
- catch (e) {
300
- log.info(`Token file ${token} not found. Creating a new one...`);
301
- fs.writeFileSync(token, token === ".token" ? gitToken : "");
302
- return;
303
- }
304
- if (!status) {
305
- fs.writeFileSync(token, token === ".token" ? gitToken : "");
306
- }
307
- }
308
- catch (e) {
309
- throw new Error(`Error creating token file ${token}: ${e}`);
310
- }
311
- });
312
- }
313
- async getOrg() {
314
- const org = await UserInput.askText("Organization", "Enter the organization name (will be used to scope your npm project. leave blank to create a unscoped project):");
315
- const confirmation = await UserInput.askConfirmation("Confirm organization", "Is this organization correct?", true);
316
- if (!confirmation)
317
- return this.getOrg();
318
- return org;
319
- }
320
- async auditFix() {
321
- return await runCommand("npm audit fix --force").promise;
322
- }
323
- patchFiles() {
324
- const files = [
325
- ...fs
326
- .readdirSync(path.join(process.cwd(), "src"), {
327
- recursive: true,
328
- withFileTypes: true,
329
- })
330
- .filter((entry) => entry.isFile())
331
- .map((entry) => path.join(entry.parentPath, entry.name)),
332
- ...fs
333
- .readdirSync(path.join(process.cwd(), "workdocs"), {
334
- recursive: true,
335
- withFileTypes: true,
336
- })
337
- .filter((entry) => entry.isFile() && entry.name.endsWith(".md"))
338
- .map((entry) => path.join(entry.parentPath, entry.name)),
339
- path.join(process.cwd(), ".gitlab-ci.yml"),
340
- path.join(process.cwd(), "workdocs", "jsdocs.json"),
341
- ];
342
- for (const file of files) {
343
- patchFile(file, this.replacements);
344
- }
345
- }
346
- async updateDependencies() {
347
- try {
348
- const originalPkg = JSON.parse(await HttpClient.downloadFile(`${baseUrl}/package.json`));
349
- const { devDependencies } = originalPkg;
350
- const pkg = getPackage();
351
- Object.keys(pkg.scripts).forEach((key) => {
352
- if (key in devDependencies) {
353
- const replaced = devDependencies[key];
354
- if (replaced !== devDependencies[key]) {
355
- pkg["devDependencies"] =
356
- pkg["devDependencies"] || {};
357
- pkg["devDependencies"][key] = replaced;
358
- }
359
- }
360
- });
361
- fs.writeFileSync("package.json", JSON.stringify(pkg, null, 2));
362
- await runCommand("npm install").promise;
363
- }
364
- catch (e) {
365
- throw new Error(`Error fixing package.json dependencies: ${e}`);
366
- }
367
- }
368
- /**
369
- * @description Runs the template synchronization process.
370
- * @summary This method orchestrates the downloading of various project components based on the provided arguments.
371
- * @param {ParseArgsResult} args - The parsed command-line arguments
372
- * @returns {Promise<void>}
373
- *
374
- * @mermaid
375
- * sequenceDiagram
376
- * participant T as TemplateSync
377
- * participant L as getLicense
378
- * participant I as getIde
379
- * participant S as getScripts
380
- * participant St as getStyles
381
- * participant D as getDocs
382
- * participant W as getWorkflows
383
- * participant Te as getTemplates
384
- * T->>T: Parse arguments
385
- * alt all flag is true
386
- * T->>T: Set all component flags to true
387
- * end
388
- * alt license is specified
389
- * T->>L: getLicense(license)
390
- * end
391
- * alt ide flag is true
392
- * T->>I: getIde()
393
- * end
394
- * alt scripts flag is true
395
- * T->>S: getScripts()
396
- * end
397
- * alt styles flag is true
398
- * T->>St: getStyles()
399
- * end
400
- * alt docs flag is true
401
- * T->>D: getDocs()
402
- * end
403
- * alt workflows flag is true
404
- * T->>W: getWorkflows()
405
- * end
406
- * alt templates flag is true
407
- * T->>Te: getTemplates()
408
- * end
409
- */
410
- async run(args) {
411
- let { license } = args;
412
- const { boot } = args;
413
- let { all, scripts, styles, docs, ide, workflows, templates, docker, typescript, dependencies, tests, automation, pkg, } = args;
414
- if (scripts ||
415
- styles ||
416
- docs ||
417
- ide ||
418
- workflows ||
419
- templates ||
420
- docker ||
421
- typescript ||
422
- automation ||
423
- dependencies ||
424
- tests ||
425
- pkg)
426
- all = false;
427
- if (boot) {
428
- const org = await this.getOrg();
429
- const name = await UserInput.insistForText("Project name", "Enter the project name:", (res) => res.length > 1);
430
- const author = await UserInput.insistForText("Author", "Enter the author name:", (res) => res.length > 1);
431
- const pkgName = org ? `@${org}/${name}` : name;
432
- await this.initPackage(pkgName, author, license);
433
- await this.createTokenFiles();
434
- await this.auditFix();
435
- this.patchFiles();
436
- }
437
- if (all) {
438
- scripts = false;
439
- styles = true;
440
- docs = true;
441
- ide = true;
442
- workflows = true;
443
- templates = true;
444
- docker = true;
445
- typescript = true;
446
- pkg = true;
447
- dependencies = true;
448
- tests = true;
449
- automation = false;
450
- }
451
- if (typeof scripts === "undefined")
452
- scripts = await UserInput.askConfirmation("scripts", "Do you want to get scripts?", true);
453
- if (scripts)
454
- await this.getScripts();
455
- this.loadValuesFromPackage();
456
- if (!all && typeof license === "undefined") {
457
- const confirmation = await UserInput.askConfirmation("license", "Do you want to set a license?", true);
458
- if (confirmation)
459
- license = await UserInput.insistForText("license", "Enter the desired License (MIT|GPL|Apache|LGPL|AGPL):", (val) => !!val && !!val.match(/^(MIT|GPL|Apache|LGPL|AGPL)$/g));
460
- }
461
- if (typeof license !== "undefined")
462
- await this.getLicense(license);
463
- if (typeof ide === "undefined")
464
- ide = await UserInput.askConfirmation("ide", "Do you want to get ide configs?", true);
465
- if (ide)
466
- await this.getIde();
467
- if (typeof typescript === "undefined")
468
- typescript = await UserInput.askConfirmation("typescript", "Do you want to get typescript configs?", true);
469
- if (typescript)
470
- await this.getTypescript();
471
- if (typeof docker === "undefined")
472
- docker = await UserInput.askConfirmation("docker", "Do you want to get docker configs?", true);
473
- if (docker)
474
- await this.getDocker();
475
- if (typeof automation === "undefined")
476
- automation = await UserInput.askConfirmation("automation", "Do you want to get automation configs?", true);
477
- if (automation)
478
- await this.getAutomation();
479
- if (typeof styles === "undefined")
480
- styles = await UserInput.askConfirmation("styles", "Do you want to get styles?", true);
481
- if (styles)
482
- await this.getStyles();
483
- if (typeof docs === "undefined")
484
- docs = await UserInput.askConfirmation("docs", "Do you want to get docs?", true);
485
- if (docs)
486
- await this.getDocs();
487
- if (typeof workflows === "undefined")
488
- workflows = await UserInput.askConfirmation("workflows", "Do you want to get workflows?", true);
489
- if (workflows)
490
- await this.getWorkflows();
491
- if (typeof templates === "undefined")
492
- templates = await UserInput.askConfirmation("templates", "Do you want to get templates?", true);
493
- if (templates)
494
- await this.getTemplates();
495
- if (typeof pkg === "undefined")
496
- pkg = await UserInput.askConfirmation("pkg", "Do you want to update your package.json scripts?", true);
497
- if (pkg)
498
- await this.updatePackageScrips();
499
- if (typeof tests === "undefined")
500
- tests = await UserInput.askConfirmation("pkg", "Do you want to update your test configs?", true);
501
- if (tests)
502
- await this.getTests();
503
- if (typeof dependencies === "undefined")
504
- dependencies = await UserInput.askConfirmation("pkg", "Do you want to update dev dependencies?", true);
505
- if (dependencies)
506
- await this.updateDependencies();
507
- }
508
- }
509
- //# sourceMappingURL=update-scripts.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"update-scripts.js","sourceRoot":"","sources":["../../../../src/cli/commands/update-scripts.ts"],"names":[],"mappings":"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"}