complete-cli 1.3.2 → 1.3.4
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/dist/commands/CheckCommand.js +16 -11
- package/dist/commands/CheckCommand.js.map +1 -0
- package/dist/commands/InitCommand.js +1 -0
- package/dist/commands/InitCommand.js.map +1 -0
- package/dist/commands/MetadataCommand.js +5 -4
- package/dist/commands/MetadataCommand.js.map +1 -0
- package/dist/commands/NukeCommand.js +1 -0
- package/dist/commands/NukeCommand.js.map +1 -0
- package/dist/commands/PublishCommand.js +6 -5
- package/dist/commands/PublishCommand.js.map +1 -0
- package/dist/commands/UpdateCommand.js +1 -0
- package/dist/commands/UpdateCommand.js.map +1 -0
- package/dist/commands/check/check.test.js +1 -0
- package/dist/commands/check/check.test.js.map +1 -0
- package/dist/commands/check/getTruncatedText.js +1 -0
- package/dist/commands/check/getTruncatedText.js.map +1 -0
- package/dist/commands/init/checkIfProjectPathExists.js +12 -5
- package/dist/commands/init/checkIfProjectPathExists.js.map +1 -0
- package/dist/commands/init/createProject.js +53 -32
- package/dist/commands/init/createProject.js.map +1 -0
- package/dist/commands/init/getAuthorName.js +1 -0
- package/dist/commands/init/getAuthorName.js.map +1 -0
- package/dist/commands/init/getProjectPath.js +1 -0
- package/dist/commands/init/getProjectPath.js.map +1 -0
- package/dist/commands/init/lockedDependencies.js +1 -0
- package/dist/commands/init/lockedDependencies.js.map +1 -0
- package/dist/commands/init/packageManager.js +16 -3
- package/dist/commands/init/packageManager.js.map +1 -0
- package/dist/commands/init/vsCodeInit.js +7 -1
- package/dist/commands/init/vsCodeInit.js.map +1 -0
- package/dist/constants.js +1 -0
- package/dist/constants.js.map +1 -0
- package/dist/git.js +4 -3
- package/dist/git.js.map +1 -0
- package/dist/interfaces/GitHubCLIHostsYAML.js +1 -0
- package/dist/interfaces/GitHubCLIHostsYAML.js.map +1 -0
- package/dist/main.js +1 -0
- package/dist/main.js.map +1 -0
- package/dist/prompt.js +2 -1
- package/dist/prompt.js.map +1 -0
- package/file-templates/dynamic/.github/workflows/setup/action.yml +1 -1
- package/file-templates/dynamic/Node.gitignore +3 -1
- package/file-templates/dynamic/package.json +2 -6
- package/file-templates/static/eslint.config.mjs +2 -2
- package/file-templates/static/scripts/lint.ts +1 -1
- package/package.json +9 -12
- package/src/commands/CheckCommand.ts +18 -14
- package/src/commands/MetadataCommand.ts +4 -9
- package/src/commands/PublishCommand.ts +6 -6
- package/src/commands/init/checkIfProjectPathExists.ts +13 -9
- package/src/commands/init/createProject.ts +69 -36
- package/src/commands/init/packageManager.ts +22 -3
- package/src/commands/init/vsCodeInit.ts +9 -1
- package/src/git.ts +3 -3
- package/src/prompt.ts +1 -1
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { assertObject } from "complete-common";
|
|
1
2
|
import { $, $q, commandExists, getJSONC, isFile } from "complete-node";
|
|
2
3
|
import path from "node:path";
|
|
3
4
|
import { getInputYesNo, promptError, promptLog } from "../../prompt.js";
|
|
@@ -18,6 +19,8 @@ export async function vsCodeInit(projectPath, vscode, yes) {
|
|
|
18
19
|
}
|
|
19
20
|
async function getVSCodeCommand() {
|
|
20
21
|
for (const command of VS_CODE_COMMANDS) {
|
|
22
|
+
// We want to only check for one command at a time, since it is unlikely that the special VSCode
|
|
23
|
+
// commands will exist.
|
|
21
24
|
// eslint-disable-next-line no-await-in-loop
|
|
22
25
|
const exists = await commandExists(command);
|
|
23
26
|
if (exists) {
|
|
@@ -38,10 +41,12 @@ async function installVSCodeExtensions(projectPath, vsCodeCommand) {
|
|
|
38
41
|
}
|
|
39
42
|
async function getExtensionsFromJSON(projectPath) {
|
|
40
43
|
const extensionsJSONPath = path.join(projectPath, ".vscode", "extensions.json");
|
|
41
|
-
|
|
44
|
+
const extensionsJSONExists = await isFile(extensionsJSONPath);
|
|
45
|
+
if (!extensionsJSONExists) {
|
|
42
46
|
return [];
|
|
43
47
|
}
|
|
44
48
|
const extensionsJSON = await getJSONC(extensionsJSONPath);
|
|
49
|
+
assertObject(extensionsJSON, `The "${extensionsJSONPath}" file is not an object.`);
|
|
45
50
|
const { recommendations } = extensionsJSON;
|
|
46
51
|
if (!Array.isArray(recommendations)) {
|
|
47
52
|
promptError('The "recommendations" field in the "extensions.json" file is not an array.');
|
|
@@ -76,3 +81,4 @@ async function promptVSCode(projectPath, VSCodeCommand, vscode, yes) {
|
|
|
76
81
|
async function openVSCode(projectPath, VSCodeCommand) {
|
|
77
82
|
await $ `${VSCodeCommand} ${projectPath}`;
|
|
78
83
|
}
|
|
84
|
+
//# sourceMappingURL=vsCodeInit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vsCodeInit.js","sourceRoot":"","sources":["../../../../../src/commands/init/vsCodeInit.ts"],"names":[],"mappings":"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"}
|
package/dist/constants.js
CHANGED
|
@@ -14,3 +14,4 @@ export const TEMPLATES_STATIC_DIR = path.join(TEMPLATES_DIR, "static");
|
|
|
14
14
|
export const TEMPLATES_DYNAMIC_DIR = path.join(TEMPLATES_DIR, "dynamic");
|
|
15
15
|
export const ACTION_YML = "action.yml";
|
|
16
16
|
export const ACTION_YML_TEMPLATE_PATH = path.join(TEMPLATES_DYNAMIC_DIR, ".github", "workflows", "setup", ACTION_YML);
|
|
17
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,6BAA6B,EAC7B,cAAc,EACd,cAAc,GACf,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,CAAC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;AACjC,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAEzD,MAAM,CAAC,MAAM,QAAQ,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;AAErC,MAAM,WAAW,GAAG,MAAM,cAAc,EAAE,CAAC;AAC3C,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,6BAA6B,CAC3D,WAAW,EACX,MAAM,EACN,SAAS,CACV,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,CAAC;AACjC,MAAM,CAAC,MAAM,eAAe,GAAG,OAAO,CAAC;AAEvC,MAAM,CAAC,MAAM,uBAAuB,GAAG,cAAc,CAAC,GAAG,CAAC;AAE1D,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;AAC/D,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;AACvE,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;AAEzE,MAAM,CAAC,MAAM,UAAU,GAAG,YAAY,CAAC;AACvC,MAAM,CAAC,MAAM,wBAAwB,GAAG,IAAI,CAAC,IAAI,CAC/C,qBAAqB,EACrB,SAAS,EACT,WAAW,EACX,OAAO,EACP,UAAU,CACX,CAAC"}
|
package/dist/git.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import chalk from "chalk";
|
|
2
|
-
import { $q, commandExists,
|
|
2
|
+
import { $q, commandExists, isFile, readFile } from "complete-node";
|
|
3
3
|
import path from "node:path";
|
|
4
4
|
import yaml from "yaml";
|
|
5
5
|
import { HOME_DIR, PROJECT_NAME, PROJECT_VERSION } from "./constants.js";
|
|
@@ -17,11 +17,11 @@ export async function getGitHubUsername() {
|
|
|
17
17
|
if (githubCLIHostsPath === undefined) {
|
|
18
18
|
return undefined;
|
|
19
19
|
}
|
|
20
|
-
const hostsPathExists = await
|
|
20
|
+
const hostsPathExists = await isFile(githubCLIHostsPath);
|
|
21
21
|
if (!hostsPathExists) {
|
|
22
22
|
return undefined;
|
|
23
23
|
}
|
|
24
|
-
const configYAMLRaw = await
|
|
24
|
+
const configYAMLRaw = await readFile(githubCLIHostsPath);
|
|
25
25
|
const configYAML = yaml.parse(configYAMLRaw);
|
|
26
26
|
const githubCom = configYAML["github.com"];
|
|
27
27
|
if (githubCom === undefined) {
|
|
@@ -135,3 +135,4 @@ async function isGitNameAndEmailConfigured() {
|
|
|
135
135
|
const { exitCode: emailExitCode } = await $q `git config --global user.email`;
|
|
136
136
|
return nameExitCode === 0 && emailExitCode === 0;
|
|
137
137
|
}
|
|
138
|
+
//# sourceMappingURL=git.js.map
|
package/dist/git.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../../src/git.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GitHubCLIHostsYAML.js","sourceRoot":"","sources":["../../../../src/interfaces/GitHubCLIHostsYAML.ts"],"names":[],"mappings":""}
|
package/dist/main.js
CHANGED
package/dist/main.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../../src/main.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAE/D,MAAM,IAAI,EAAE,CAAC;AAEb,KAAK,UAAU,IAAI;IACjB,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAE5C,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC;QAClB,WAAW,EAAE,YAAY;QACzB,UAAU,EAAE,YAAY;QACxB,aAAa,EAAE,eAAe;KAC/B,CAAC,CAAC;IAEH,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IAC3B,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC1B,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;IAC9B,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC1B,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;IAC7B,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;IAE5B,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IACnC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;IAEtC,MAAM,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
|
package/dist/prompt.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Both the Inquirer.js library and the Prompts library have a bug where text is duplicated in a Git
|
|
2
2
|
// Bash terminal. Thus, we revert to using the simpler Prompt library.
|
|
3
|
-
import { cancel, confirm, intro, isCancel, log, outro, spinner, text, } from "@
|
|
3
|
+
import { cancel, confirm, intro, isCancel, log, outro, spinner, text, } from "@clack/prompts";
|
|
4
4
|
import chalk from "chalk";
|
|
5
5
|
import { PROJECT_NAME } from "./constants.js";
|
|
6
6
|
export function promptStart() {
|
|
@@ -53,3 +53,4 @@ export function promptError(msg) {
|
|
|
53
53
|
cancel(msg);
|
|
54
54
|
process.exit(1);
|
|
55
55
|
}
|
|
56
|
+
//# sourceMappingURL=prompt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../../src/prompt.ts"],"names":[],"mappings":"AAAA,oGAAoG;AACpG,sEAAsE;AAEtE,OAAO,EACL,MAAM,EACN,OAAO,EACP,KAAK,EACL,QAAQ,EACR,GAAG,EACH,KAAK,EACL,OAAO,EACP,IAAI,GACL,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,MAAM,UAAU,WAAW;IACzB,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,GAAW;IACnC,KAAK,CAAC,GAAG,CAAC,CAAC;IACX,OAAO,CAAC,IAAI,EAAE,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,GAAW,EACX,YAAY,GAAG,IAAI;IAEnB,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC;QAC1B,OAAO,EAAE,GAAG;QACZ,YAAY,EAAE,YAAY;KAC3B,CAAC,CAAC;IAEH,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACpB,MAAM,CAAC,WAAW,CAAC,CAAC;QACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,6BAA6B;AAC7B,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,GAAW,EACX,YAAqB;IAErB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC;QACvB,OAAO,EAAE,GAAG;QACZ,YAAY,EAAE,YAAY;KAC3B,CAAC,CAAC;IAEH,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACpB,MAAM,CAAC,WAAW,CAAC,CAAC;QACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,kGAAkG;IAClG,SAAS;IACT,uEAAuE;IACvE,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAC/C,WAAW,CAAC,mCAAmC,CAAC,CAAC;IACnD,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,GAAW;IACnC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,kCAAkC;AACnD,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,GAAW;IAC5C,MAAM,CAAC,GAAG,OAAO,CAAC;QAChB,SAAS,EAAE,OAAO;KACnB,CAAC,CAAC;IACH,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACb,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,MAAM,CAAC,GAAG,CAAC,CAAC;IACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC"}
|
|
@@ -81,6 +81,7 @@ out
|
|
|
81
81
|
# Nuxt.js build / generate output
|
|
82
82
|
.nuxt
|
|
83
83
|
dist
|
|
84
|
+
.output
|
|
84
85
|
|
|
85
86
|
# Gatsby files
|
|
86
87
|
.cache/
|
|
@@ -134,6 +135,7 @@ dist
|
|
|
134
135
|
!.yarn/sdks
|
|
135
136
|
!.yarn/versions
|
|
136
137
|
|
|
137
|
-
# Vite
|
|
138
|
+
# Vite files
|
|
138
139
|
vite.config.js.timestamp-*
|
|
139
140
|
vite.config.ts.timestamp-*
|
|
141
|
+
.vite/
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "project-name",
|
|
3
3
|
"version": "0.0.0",
|
|
4
|
-
"description": "",
|
|
5
|
-
"keywords": [],
|
|
4
|
+
"description": "A TypeScript project.",
|
|
6
5
|
"homepage": "https://github.com/author-name/project-name",
|
|
7
6
|
"bugs": {
|
|
8
7
|
"url": "https://github.com/author-name/project-name/issues"
|
|
@@ -15,10 +14,7 @@
|
|
|
15
14
|
"author": "author-name",
|
|
16
15
|
"type": "module",
|
|
17
16
|
"files": [
|
|
18
|
-
"dist"
|
|
19
|
-
"LICENSE",
|
|
20
|
-
"package.json",
|
|
21
|
-
"README.md"
|
|
17
|
+
"dist"
|
|
22
18
|
],
|
|
23
19
|
"scripts": {
|
|
24
20
|
"build": "tsx ./scripts/build.ts",
|
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
// @ts-check
|
|
5
5
|
|
|
6
6
|
import { completeConfigBase } from "eslint-config-complete";
|
|
7
|
-
import
|
|
7
|
+
import { defineConfig } from "eslint/config";
|
|
8
8
|
|
|
9
|
-
export default
|
|
9
|
+
export default defineConfig(
|
|
10
10
|
// https://github.com/complete-ts/complete/blob/main/packages/eslint-config-complete/src/base.js
|
|
11
11
|
...completeConfigBase,
|
|
12
12
|
|
|
@@ -23,7 +23,7 @@ await lintScript(async () => {
|
|
|
23
23
|
|
|
24
24
|
// Use CSpell to spell check every file.
|
|
25
25
|
// - "--no-progress" and "--no-summary" make it only output errors.
|
|
26
|
-
$`cspell --no-progress --no-summary
|
|
26
|
+
$`cspell --no-progress --no-summary`,
|
|
27
27
|
|
|
28
28
|
// Check for unused words in the CSpell configuration file.
|
|
29
29
|
$`cspell-check-unused-words`,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "complete-cli",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.4",
|
|
4
4
|
"description": "A command line tool for bootstrapping TypeScript projects.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"typescript"
|
|
@@ -22,10 +22,7 @@
|
|
|
22
22
|
"files": [
|
|
23
23
|
"dist",
|
|
24
24
|
"file-templates",
|
|
25
|
-
"src"
|
|
26
|
-
"LICENSE",
|
|
27
|
-
"package.json",
|
|
28
|
-
"README.md"
|
|
25
|
+
"src"
|
|
29
26
|
],
|
|
30
27
|
"scripts": {
|
|
31
28
|
"build": "tsx ./scripts/build.ts",
|
|
@@ -34,22 +31,22 @@
|
|
|
34
31
|
"test": "tsx --test"
|
|
35
32
|
},
|
|
36
33
|
"dependencies": {
|
|
37
|
-
"@
|
|
38
|
-
"chalk": "5.
|
|
34
|
+
"@clack/prompts": "0.11.0",
|
|
35
|
+
"chalk": "5.6.0",
|
|
39
36
|
"clipanion": "4.0.0-rc.4",
|
|
40
37
|
"complete-common": "2.5.0",
|
|
41
|
-
"complete-node": "
|
|
38
|
+
"complete-node": "9.3.1",
|
|
42
39
|
"klaw-sync": "7.0.0",
|
|
43
40
|
"yaml": "2.8.1"
|
|
44
41
|
},
|
|
45
42
|
"devDependencies": {
|
|
46
43
|
"@types/klaw-sync": "6.0.5",
|
|
47
|
-
"@types/node": "24.
|
|
48
|
-
"ts-loader": "9.5.
|
|
44
|
+
"@types/node": "24.3.1",
|
|
45
|
+
"ts-loader": "9.5.4",
|
|
49
46
|
"tsconfig-paths-webpack-plugin": "4.2.0",
|
|
50
47
|
"typescript": "5.9.2",
|
|
51
|
-
"typescript-eslint": "8.
|
|
52
|
-
"webpack": "5.101.
|
|
48
|
+
"typescript-eslint": "8.42.0",
|
|
49
|
+
"webpack": "5.101.3",
|
|
53
50
|
"webpack-cli": "6.0.1",
|
|
54
51
|
"webpack-shebang-plugin": "1.1.8"
|
|
55
52
|
},
|
|
@@ -3,12 +3,12 @@ import { Command, Option } from "clipanion";
|
|
|
3
3
|
import { ReadonlySet } from "complete-common";
|
|
4
4
|
import {
|
|
5
5
|
$,
|
|
6
|
-
|
|
6
|
+
deleteFileOrDirectory,
|
|
7
7
|
fatalError,
|
|
8
8
|
isDirectory,
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
isFile,
|
|
10
|
+
readFile,
|
|
11
|
+
writeFile,
|
|
12
12
|
} from "complete-node";
|
|
13
13
|
import klawSync from "klaw-sync";
|
|
14
14
|
import os from "node:os";
|
|
@@ -80,10 +80,14 @@ async function checkTemplateDirectory(
|
|
|
80
80
|
): Promise<boolean> {
|
|
81
81
|
let oneOrMoreErrors = false;
|
|
82
82
|
|
|
83
|
-
|
|
83
|
+
// We use `klawSync` instead of `klaw` so that the output will be deterministic.
|
|
84
|
+
const klawItems = klawSync(templateDirectory);
|
|
85
|
+
for (const klawItem of klawItems) {
|
|
84
86
|
const templateFilePath = klawItem.path;
|
|
85
87
|
|
|
86
|
-
|
|
88
|
+
// eslint-disable-next-line no-await-in-loop
|
|
89
|
+
const templateExists = await isDirectory(templateFilePath);
|
|
90
|
+
if (templateExists) {
|
|
87
91
|
continue;
|
|
88
92
|
}
|
|
89
93
|
|
|
@@ -171,7 +175,7 @@ async function compareTextFiles(
|
|
|
171
175
|
templateFilePath: string,
|
|
172
176
|
verbose: boolean,
|
|
173
177
|
): Promise<boolean> {
|
|
174
|
-
const fileExists = await
|
|
178
|
+
const fileExists = await isFile(projectFilePath);
|
|
175
179
|
if (!fileExists) {
|
|
176
180
|
console.log(`Failed to find the following file: ${projectFilePath}`);
|
|
177
181
|
printTemplateLocation(templateFilePath);
|
|
@@ -203,8 +207,8 @@ async function compareTextFiles(
|
|
|
203
207
|
printTemplateLocation(templateFilePath);
|
|
204
208
|
|
|
205
209
|
if (verbose) {
|
|
206
|
-
const originalTemplateFile = await
|
|
207
|
-
const originalProjectFile = await
|
|
210
|
+
const originalTemplateFile = await readFile(templateFilePath);
|
|
211
|
+
const originalProjectFile = await readFile(projectFilePath);
|
|
208
212
|
|
|
209
213
|
console.log("--- Original template file: ---\n");
|
|
210
214
|
console.log(originalTemplateFile);
|
|
@@ -224,8 +228,8 @@ async function compareTextFiles(
|
|
|
224
228
|
const tempProjectFilePath = path.join(tempDir, "tempProjectFile.txt");
|
|
225
229
|
const tempTemplateFilePath = path.join(tempDir, "tempTemplateFile.txt");
|
|
226
230
|
|
|
227
|
-
await
|
|
228
|
-
await
|
|
231
|
+
await writeFile(tempProjectFilePath, projectFileObject.text);
|
|
232
|
+
await writeFile(tempTemplateFilePath, templateFileObject.text);
|
|
229
233
|
|
|
230
234
|
try {
|
|
231
235
|
await $`diff ${tempProjectFilePath} ${tempTemplateFilePath} --ignore-blank-lines`;
|
|
@@ -233,8 +237,8 @@ async function compareTextFiles(
|
|
|
233
237
|
// `diff` will exit with a non-zero code if the files are different, which is expected.
|
|
234
238
|
}
|
|
235
239
|
|
|
236
|
-
await
|
|
237
|
-
await
|
|
240
|
+
await deleteFileOrDirectory(tempProjectFilePath);
|
|
241
|
+
await deleteFileOrDirectory(tempTemplateFilePath);
|
|
238
242
|
|
|
239
243
|
return false;
|
|
240
244
|
}
|
|
@@ -245,7 +249,7 @@ async function getTruncatedFileText(
|
|
|
245
249
|
linesBeforeIgnore: ReadonlySet<string>,
|
|
246
250
|
) {
|
|
247
251
|
const fileName = path.basename(filePath);
|
|
248
|
-
const fileContents = await
|
|
252
|
+
const fileContents = await readFile(filePath);
|
|
249
253
|
|
|
250
254
|
return getTruncatedText(
|
|
251
255
|
fileName,
|
|
@@ -1,11 +1,6 @@
|
|
|
1
1
|
import { Command, Option } from "clipanion";
|
|
2
2
|
import { assertObject, isObject } from "complete-common";
|
|
3
|
-
import {
|
|
4
|
-
getFilePath,
|
|
5
|
-
isFileAsync,
|
|
6
|
-
readFileAsync,
|
|
7
|
-
writeFileAsync,
|
|
8
|
-
} from "complete-node";
|
|
3
|
+
import { getFilePath, isFile, readFile, writeFile } from "complete-node";
|
|
9
4
|
import path from "node:path";
|
|
10
5
|
|
|
11
6
|
export class MetadataCommand extends Command {
|
|
@@ -29,11 +24,11 @@ export class MetadataCommand extends Command {
|
|
|
29
24
|
const packageJSONPath = await getFilePath("package.json", undefined);
|
|
30
25
|
const packageRoot = path.dirname(packageJSONPath);
|
|
31
26
|
const packageMetadataPath = path.join(packageRoot, "package-metadata.json");
|
|
32
|
-
const packageMetadataExists = await
|
|
27
|
+
const packageMetadataExists = await isFile(packageMetadataPath);
|
|
33
28
|
|
|
34
29
|
let packageMetadata: Record<string, unknown>;
|
|
35
30
|
if (packageMetadataExists) {
|
|
36
|
-
const packageMetadataContents = await
|
|
31
|
+
const packageMetadataContents = await readFile(packageMetadataPath);
|
|
37
32
|
const packageMetadataUnknown = JSON.parse(
|
|
38
33
|
packageMetadataContents,
|
|
39
34
|
) as unknown;
|
|
@@ -61,7 +56,7 @@ export class MetadataCommand extends Command {
|
|
|
61
56
|
};
|
|
62
57
|
|
|
63
58
|
const packageMetadataJSON = JSON.stringify(packageMetadata, undefined, 2);
|
|
64
|
-
await
|
|
59
|
+
await writeFile(packageMetadataPath, packageMetadataJSON);
|
|
65
60
|
|
|
66
61
|
const verb = packageMetadataExists ? "modified" : "created";
|
|
67
62
|
console.log(`Successfully ${verb}: ${packageMetadataPath}`);
|
|
@@ -8,13 +8,13 @@ import {
|
|
|
8
8
|
getPackageManagerInstallCommand,
|
|
9
9
|
getPackageManagerLockFileName,
|
|
10
10
|
getPackageManagersForProject,
|
|
11
|
-
|
|
11
|
+
isFile,
|
|
12
12
|
isGitRepository,
|
|
13
13
|
isGitRepositoryClean,
|
|
14
14
|
isLoggedInToNPM,
|
|
15
15
|
readFile,
|
|
16
16
|
updatePackageJSONDependencies,
|
|
17
|
-
|
|
17
|
+
writeFile,
|
|
18
18
|
} from "complete-node";
|
|
19
19
|
import path from "node:path";
|
|
20
20
|
import { CWD, DEFAULT_PACKAGE_MANAGER } from "../constants.js";
|
|
@@ -70,7 +70,7 @@ async function validate() {
|
|
|
70
70
|
);
|
|
71
71
|
}
|
|
72
72
|
|
|
73
|
-
const packageJSONExists = await
|
|
73
|
+
const packageJSONExists = await isFile("package.json");
|
|
74
74
|
if (!packageJSONExists) {
|
|
75
75
|
fatalError(
|
|
76
76
|
'Failed to find the "package.json" file in the current working directory.',
|
|
@@ -190,16 +190,16 @@ async function incrementVersion(versionBumpType: string) {
|
|
|
190
190
|
|
|
191
191
|
async function unsetDevelopmentConstants() {
|
|
192
192
|
const constantsTSPath = path.join(CWD, "src", "constants.ts");
|
|
193
|
-
const constantsTSExists = await
|
|
193
|
+
const constantsTSExists = await isFile(constantsTSPath);
|
|
194
194
|
if (!constantsTSExists) {
|
|
195
195
|
return;
|
|
196
196
|
}
|
|
197
197
|
|
|
198
|
-
const constantsTS = readFile(constantsTSPath);
|
|
198
|
+
const constantsTS = await readFile(constantsTSPath);
|
|
199
199
|
const newConstantsTS = constantsTS
|
|
200
200
|
.replace("const IS_DEV = true", "const IS_DEV = false")
|
|
201
201
|
.replace("const DEBUG = true", "const DEBUG = false");
|
|
202
|
-
await
|
|
202
|
+
await writeFile(constantsTSPath, newConstantsTS);
|
|
203
203
|
}
|
|
204
204
|
|
|
205
205
|
async function tryRunNPMScript(scriptName: string) {
|
|
@@ -1,24 +1,28 @@
|
|
|
1
1
|
import chalk from "chalk";
|
|
2
|
-
import {
|
|
3
|
-
deleteFileOrDirectory,
|
|
4
|
-
fileOrDirectoryExists,
|
|
5
|
-
isDirectory,
|
|
6
|
-
} from "complete-node";
|
|
2
|
+
import { deleteFileOrDirectory, isDirectory, isFile } from "complete-node";
|
|
7
3
|
import { CWD } from "../../constants.js";
|
|
8
4
|
import { getInputYesNo, promptEnd, promptLog } from "../../prompt.js";
|
|
9
5
|
|
|
6
|
+
/** @throws If the project path is not a file or a directory. */
|
|
10
7
|
export async function checkIfProjectPathExists(
|
|
11
8
|
projectPath: string,
|
|
12
9
|
yes: boolean,
|
|
13
10
|
): Promise<void> {
|
|
14
|
-
if (projectPath === CWD
|
|
11
|
+
if (projectPath === CWD) {
|
|
15
12
|
return;
|
|
16
13
|
}
|
|
17
14
|
|
|
18
|
-
const
|
|
15
|
+
const file = await isFile(projectPath);
|
|
16
|
+
const directory = await isDirectory(projectPath);
|
|
17
|
+
if (!file && !directory) {
|
|
18
|
+
throw new Error(
|
|
19
|
+
`Failed to detect if the path was a file or a directory: ${projectPath}`,
|
|
20
|
+
);
|
|
21
|
+
}
|
|
22
|
+
const fileType = file ? "file" : "directory";
|
|
19
23
|
|
|
20
24
|
if (yes) {
|
|
21
|
-
deleteFileOrDirectory(projectPath);
|
|
25
|
+
await deleteFileOrDirectory(projectPath);
|
|
22
26
|
promptLog(`Deleted ${fileType}: ${chalk.green(projectPath)}`);
|
|
23
27
|
return;
|
|
24
28
|
}
|
|
@@ -32,5 +36,5 @@ export async function checkIfProjectPathExists(
|
|
|
32
36
|
promptEnd("Ok then. Goodbye.");
|
|
33
37
|
}
|
|
34
38
|
|
|
35
|
-
deleteFileOrDirectory(projectPath);
|
|
39
|
+
await deleteFileOrDirectory(projectPath);
|
|
36
40
|
}
|