create-vxrn 1.27.1 → 2.0.0-beta.45.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/.turbo/turbo-build.log +1 -1
- package/dist/cjs/create.cjs +193 -194
- package/dist/cjs/create.native.cjs +262 -0
- package/dist/cjs/create.native.js +218 -227
- package/dist/cjs/create.native.js.map +1 -1
- package/dist/cjs/helpers/cloneStarter.cjs +83 -95
- package/dist/cjs/helpers/cloneStarter.native.cjs +114 -0
- package/dist/cjs/helpers/cloneStarter.native.js +86 -97
- package/dist/cjs/helpers/cloneStarter.native.js.map +1 -1
- package/dist/cjs/helpers/getProjectName.cjs +56 -65
- package/dist/cjs/helpers/getProjectName.native.cjs +75 -0
- package/dist/cjs/helpers/getProjectName.native.js +56 -64
- package/dist/cjs/helpers/getProjectName.native.js.map +1 -1
- package/dist/cjs/helpers/getTemplateInfo.cjs +39 -52
- package/dist/cjs/helpers/getTemplateInfo.native.cjs +67 -0
- package/dist/cjs/helpers/getTemplateInfo.native.js +48 -60
- package/dist/cjs/helpers/getTemplateInfo.native.js.map +1 -1
- package/dist/cjs/helpers/installDependencies.cjs +37 -43
- package/dist/cjs/helpers/installDependencies.native.cjs +51 -0
- package/dist/cjs/helpers/installDependencies.native.js +37 -42
- package/dist/cjs/helpers/installDependencies.native.js.map +1 -1
- package/dist/cjs/helpers/validateNpmPackage.cjs +25 -36
- package/dist/cjs/helpers/validateNpmPackage.native.cjs +42 -0
- package/dist/cjs/helpers/validateNpmPackage.native.js +25 -35
- package/dist/cjs/helpers/validateNpmPackage.native.js.map +1 -1
- package/dist/cjs/index.cjs +60 -69
- package/dist/cjs/index.native.cjs +92 -0
- package/dist/cjs/index.native.js +61 -69
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/steps/bare.cjs +51 -61
- package/dist/cjs/steps/bare.native.cjs +121 -0
- package/dist/cjs/steps/bare.native.js +71 -82
- package/dist/cjs/steps/bare.native.js.map +1 -1
- package/dist/cjs/steps/fullstack.cjs +23 -35
- package/dist/cjs/steps/fullstack.native.cjs +50 -0
- package/dist/cjs/steps/fullstack.native.js +25 -36
- package/dist/cjs/steps/fullstack.native.js.map +1 -1
- package/dist/cjs/steps/one.cjs +42 -57
- package/dist/cjs/steps/one.native.cjs +97 -0
- package/dist/cjs/steps/one.native.js +46 -60
- package/dist/cjs/steps/one.native.js.map +1 -1
- package/dist/cjs/steps/types.cjs +9 -11
- package/dist/cjs/steps/types.native.cjs +18 -0
- package/dist/cjs/steps/types.native.js +9 -10
- package/dist/cjs/steps/types.native.js.map +1 -1
- package/dist/cjs/templates.cjs +54 -59
- package/dist/cjs/templates.native.cjs +70 -0
- package/dist/cjs/templates.native.js +55 -59
- package/dist/cjs/templates.native.js.map +1 -1
- package/dist/esm/create.mjs +179 -169
- package/dist/esm/create.mjs.map +1 -1
- package/dist/esm/create.native.js +204 -203
- package/dist/esm/create.native.js.map +1 -1
- package/dist/esm/helpers/cloneStarter.mjs +71 -77
- package/dist/esm/helpers/cloneStarter.mjs.map +1 -1
- package/dist/esm/helpers/cloneStarter.native.js +74 -80
- package/dist/esm/helpers/cloneStarter.native.js.map +1 -1
- package/dist/esm/helpers/getProjectName.mjs +41 -39
- package/dist/esm/helpers/getProjectName.mjs.map +1 -1
- package/dist/esm/helpers/getProjectName.native.js +41 -39
- package/dist/esm/helpers/getProjectName.native.js.map +1 -1
- package/dist/esm/helpers/getTemplateInfo.mjs +25 -27
- package/dist/esm/helpers/getTemplateInfo.mjs.map +1 -1
- package/dist/esm/helpers/getTemplateInfo.native.js +33 -35
- package/dist/esm/helpers/getTemplateInfo.native.js.map +1 -1
- package/dist/esm/helpers/installDependencies.mjs +25 -25
- package/dist/esm/helpers/installDependencies.mjs.map +1 -1
- package/dist/esm/helpers/installDependencies.native.js +25 -25
- package/dist/esm/helpers/installDependencies.native.js.map +1 -1
- package/dist/esm/helpers/validateNpmPackage.mjs +10 -10
- package/dist/esm/helpers/validateNpmPackage.mjs.map +1 -1
- package/dist/esm/helpers/validateNpmPackage.native.js +10 -10
- package/dist/esm/helpers/validateNpmPackage.native.js.map +1 -1
- package/dist/esm/index.js +51 -53
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/index.mjs +51 -53
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/index.native.js +52 -54
- package/dist/esm/index.native.js.map +1 -1
- package/dist/esm/steps/bare.mjs +35 -36
- package/dist/esm/steps/bare.mjs.map +1 -1
- package/dist/esm/steps/bare.native.js +55 -58
- package/dist/esm/steps/bare.native.js.map +1 -1
- package/dist/esm/steps/fullstack.mjs +8 -9
- package/dist/esm/steps/fullstack.mjs.map +1 -1
- package/dist/esm/steps/fullstack.native.js +10 -11
- package/dist/esm/steps/fullstack.native.js.map +1 -1
- package/dist/esm/steps/one.mjs +26 -32
- package/dist/esm/steps/one.mjs.map +1 -1
- package/dist/esm/steps/one.native.js +30 -36
- package/dist/esm/steps/one.native.js.map +1 -1
- package/dist/esm/steps/types.mjs +0 -2
- package/dist/esm/steps/types.native.js +0 -2
- package/dist/esm/templates.mjs +40 -34
- package/dist/esm/templates.mjs.map +1 -1
- package/dist/esm/templates.native.js +40 -34
- package/dist/esm/templates.native.js.map +1 -1
- package/package.json +4 -4
- package/dist/esm/steps/types.mjs.map +0 -1
- package/dist/esm/steps/types.native.js.map +0 -1
|
@@ -3,95 +3,89 @@ import { homedir } from "node:os";
|
|
|
3
3
|
import { join, sep } from "node:path";
|
|
4
4
|
import { rimraf } from "rimraf";
|
|
5
5
|
import { exec, execPromiseQuiet } from "@vxrn/utils";
|
|
6
|
+
|
|
6
7
|
const home = homedir();
|
|
7
8
|
const vxrnDir = join(home, ".vxrn");
|
|
8
9
|
const cloneStarter = async (template, resolvedProjectPath) => {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
});
|
|
20
|
-
}
|
|
10
|
+
const dir = await setupVxrnDotDir(template, join(vxrnDir, "vxrn", template.repo.url.split("/").at(-1)));
|
|
11
|
+
if (!await pathExists(dir)) {
|
|
12
|
+
console.error(`Missing template for ${template.value} in ${dir}`);
|
|
13
|
+
process.exit(1);
|
|
14
|
+
}
|
|
15
|
+
await copy(dir, resolvedProjectPath);
|
|
16
|
+
await rimraf(join(resolvedProjectPath, ".git"));
|
|
17
|
+
if (!isInGitRepo()) {
|
|
18
|
+
await execPromiseQuiet(`git init`, { cwd: resolvedProjectPath });
|
|
19
|
+
}
|
|
21
20
|
};
|
|
22
21
|
async function setupVxrnDotDir(template, targetGitDir, isRetry = false) {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
if (`${err}`.includes(`code 128`)) {
|
|
55
|
-
console.warn(`\u26A0\uFE0F Note: you need to be sure you can git clone from Github, your SSH key isn't valid.
|
|
22
|
+
const branch = template.repo.branch;
|
|
23
|
+
await ensureDir(vxrnDir);
|
|
24
|
+
const isInSubDir = template.repo.dir.length > 0;
|
|
25
|
+
if (!await pathExists(targetGitDir)) {
|
|
26
|
+
const sourceGitRepo = template.repo.url;
|
|
27
|
+
const sourceGitRepoSshFallback = template.repo.sshFallback;
|
|
28
|
+
const cmd = `git clone --branch ${branch} ${isInSubDir ? "--depth 1 --sparse --filter=blob:none " : ""}${sourceGitRepo} "${targetGitDir}"`;
|
|
29
|
+
try {
|
|
30
|
+
await execPromiseQuiet(cmd);
|
|
31
|
+
} catch (error) {
|
|
32
|
+
if (cmd.includes("https://")) {
|
|
33
|
+
console.info(`https failed - trying with ssh now...`);
|
|
34
|
+
const sshCmd = cmd.replace(sourceGitRepo, sourceGitRepoSshFallback);
|
|
35
|
+
await execPromiseQuiet(sshCmd);
|
|
36
|
+
} else {
|
|
37
|
+
throw error;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
} else {
|
|
41
|
+
if (!await pathExists(join(targetGitDir, ".git"))) {
|
|
42
|
+
console.error(`Corrupt vxrn directory, please delete ${targetGitDir} folder and re-run`);
|
|
43
|
+
process.exit(1);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
if (isInSubDir) {
|
|
47
|
+
try {
|
|
48
|
+
const cmd = `git sparse-checkout set ${template.repo.dir.join(sep) ?? "."}`;
|
|
49
|
+
await execPromiseQuiet(cmd, { cwd: targetGitDir });
|
|
50
|
+
} catch (err) {
|
|
51
|
+
if (`${err}`.includes(`code 128`)) {
|
|
52
|
+
console.warn(`\u26A0\uFE0F Note: you need to be sure you can git clone from Github, your SSH key isn't valid.
|
|
56
53
|
|
|
57
54
|
- See: https://docs.github.com/en/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account
|
|
58
55
|
|
|
59
56
|
`);
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
if (isRetry) {
|
|
77
|
-
console.info(`Error updating: ${err.message} ${isRetry ? `failing.
|
|
57
|
+
}
|
|
58
|
+
throw err;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
try {
|
|
62
|
+
const cmd2 = `git pull --rebase --allow-unrelated-histories --depth 1 origin ${branch}`;
|
|
63
|
+
await execPromiseQuiet(cmd2, { cwd: targetGitDir });
|
|
64
|
+
console.info();
|
|
65
|
+
const dir = join(targetGitDir, ...template.repo.dir);
|
|
66
|
+
if (!await pathExists(dir)) {
|
|
67
|
+
throw new Error(`Re-clone...`);
|
|
68
|
+
}
|
|
69
|
+
return dir;
|
|
70
|
+
} catch (err) {
|
|
71
|
+
if (isRetry) {
|
|
72
|
+
console.info(`Error updating: ${err.message} ${isRetry ? `failing.
|
|
78
73
|
${err.stack}` : "trying from fresh."}`);
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
74
|
+
console.info(`Please file an issue: https://github.com/onejs/one/issues/new?assignees=&labels=&template=bug_report.md&title=`);
|
|
75
|
+
process.exit(1);
|
|
76
|
+
}
|
|
77
|
+
await rimraf(targetGitDir);
|
|
78
|
+
return await setupVxrnDotDir(template, targetGitDir, true);
|
|
79
|
+
}
|
|
85
80
|
}
|
|
86
81
|
function isInGitRepo() {
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
return false;
|
|
94
|
-
}
|
|
82
|
+
try {
|
|
83
|
+
exec("git rev-parse --is-inside-work-tree", { stdio: "ignore" });
|
|
84
|
+
return true;
|
|
85
|
+
} catch (error) {
|
|
86
|
+
return false;
|
|
87
|
+
}
|
|
95
88
|
}
|
|
89
|
+
|
|
96
90
|
export { cloneStarter };
|
|
97
91
|
//# sourceMappingURL=cloneStarter.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"file":"cloneStarter.js","names":[],"sources":["esm/helpers/cloneStarter.js"],"sourcesContent":["import { copy, ensureDir, pathExists } from \"fs-extra\";\nimport { homedir } from \"node:os\";\nimport { join, sep } from \"node:path\";\nimport { rimraf } from \"rimraf\";\nimport { exec, execPromiseQuiet } from \"@vxrn/utils\";\nconst home = homedir();\nconst vxrnDir = join(home, \".vxrn\");\nconst cloneStarter = async (template, resolvedProjectPath) => {\n const dir = await setupVxrnDotDir(\n template,\n join(vxrnDir, \"vxrn\", template.repo.url.split(\"/\").at(-1))\n );\n if (!await pathExists(dir)) {\n console.error(`Missing template for ${template.value} in ${dir}`);\n process.exit(1);\n }\n await copy(dir, resolvedProjectPath);\n await rimraf(join(resolvedProjectPath, \".git\"));\n if (!isInGitRepo()) {\n await execPromiseQuiet(`git init`, {\n cwd: resolvedProjectPath\n });\n }\n};\nasync function setupVxrnDotDir(template, targetGitDir, isRetry = false) {\n const branch = template.repo.branch;\n await ensureDir(vxrnDir);\n const isInSubDir = template.repo.dir.length > 0;\n if (!await pathExists(targetGitDir)) {\n const sourceGitRepo = template.repo.url;\n const sourceGitRepoSshFallback = template.repo.sshFallback;\n const cmd = `git clone --branch ${branch} ${isInSubDir ? \"--depth 1 --sparse --filter=blob:none \" : \"\"}${sourceGitRepo} \"${targetGitDir}\"`;\n try {\n await execPromiseQuiet(cmd);\n } catch (error) {\n if (cmd.includes(\"https://\")) {\n console.info(`https failed - trying with ssh now...`);\n const sshCmd = cmd.replace(sourceGitRepo, sourceGitRepoSshFallback);\n await execPromiseQuiet(sshCmd);\n } else {\n throw error;\n }\n }\n } else {\n if (!await pathExists(join(targetGitDir, \".git\"))) {\n console.error(\n `Corrupt vxrn directory, please delete ${targetGitDir} folder and re-run`\n );\n process.exit(1);\n }\n }\n if (isInSubDir) {\n try {\n const cmd = `git sparse-checkout set ${template.repo.dir.join(sep) ?? \".\"}`;\n await execPromiseQuiet(cmd, { cwd: targetGitDir });\n } catch (err) {\n if (`${err}`.includes(`code 128`)) {\n console.warn(`\\u26A0\\uFE0F Note: you need to be sure you can git clone from Github, your SSH key isn't valid.\n \n - See: https://docs.github.com/en/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account\n\n`);\n }\n throw err;\n }\n }\n try {\n const cmd2 = `git pull --rebase --allow-unrelated-histories --depth 1 origin ${branch}`;\n await execPromiseQuiet(cmd2, {\n cwd: targetGitDir\n });\n console.info();\n const dir = join(targetGitDir, ...template.repo.dir);\n if (!await pathExists(dir)) {\n throw new Error(`Re-clone...`);\n }\n return dir;\n } catch (err) {\n if (isRetry) {\n console.info(\n `Error updating: ${err.message} ${isRetry ? `failing.\n${err.stack}` : \"trying from fresh.\"}`\n );\n console.info(\n `Please file an issue: https://github.com/onejs/one/issues/new?assignees=&labels=&template=bug_report.md&title=`\n );\n process.exit(1);\n }\n await rimraf(targetGitDir);\n return await setupVxrnDotDir(template, targetGitDir, true);\n }\n}\nfunction isInGitRepo() {\n try {\n exec(\"git rev-parse --is-inside-work-tree\", { stdio: \"ignore\" });\n return true;\n } catch (error) {\n return false;\n }\n}\nexport {\n cloneStarter\n};\n//# sourceMappingURL=cloneStarter.js.map\n"],"mappings":";;;;;;;AAKA,MAAM,OAAO,QAAQ;AACrB,MAAM,UAAU,KAAK,MAAM,OAAO;AAClC,MAAM,eAAe,OAAO,UAAU,wBAAwB;CAC5D,MAAM,MAAM,MAAM,gBAChB,UACA,KAAK,SAAS,QAAQ,SAAS,KAAK,IAAI,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAC3D;CACA,IAAI,CAAC,MAAM,WAAW,GAAG,GAAG;EAC1B,QAAQ,MAAM,wBAAwB,SAAS,MAAM,MAAM,KAAK;EAChE,QAAQ,KAAK,CAAC;CAChB;CACA,MAAM,KAAK,KAAK,mBAAmB;CACnC,MAAM,OAAO,KAAK,qBAAqB,MAAM,CAAC;CAC9C,IAAI,CAAC,YAAY,GAAG;EAClB,MAAM,iBAAiB,YAAY,EACjC,KAAK,oBACP,CAAC;CACH;AACF;AACA,eAAe,gBAAgB,UAAU,cAAc,UAAU,OAAO;CACtE,MAAM,SAAS,SAAS,KAAK;CAC7B,MAAM,UAAU,OAAO;CACvB,MAAM,aAAa,SAAS,KAAK,IAAI,SAAS;CAC9C,IAAI,CAAC,MAAM,WAAW,YAAY,GAAG;EACnC,MAAM,gBAAgB,SAAS,KAAK;EACpC,MAAM,2BAA2B,SAAS,KAAK;EAC/C,MAAM,MAAM,sBAAsB,OAAO,GAAG,aAAa,2CAA2C,KAAK,cAAc,IAAI,aAAa;EACxI,IAAI;GACF,MAAM,iBAAiB,GAAG;EAC5B,SAAS,OAAO;GACd,IAAI,IAAI,SAAS,UAAU,GAAG;IAC5B,QAAQ,KAAK,uCAAuC;IACpD,MAAM,SAAS,IAAI,QAAQ,eAAe,wBAAwB;IAClE,MAAM,iBAAiB,MAAM;GAC/B,OAAO;IACL,MAAM;GACR;EACF;CACF,OAAO;EACL,IAAI,CAAC,MAAM,WAAW,KAAK,cAAc,MAAM,CAAC,GAAG;GACjD,QAAQ,MACN,yCAAyC,aAAa,mBACxD;GACA,QAAQ,KAAK,CAAC;EAChB;CACF;CACA,IAAI,YAAY;EACd,IAAI;GACF,MAAM,MAAM,2BAA2B,SAAS,KAAK,IAAI,KAAK,GAAG,KAAK;GACtE,MAAM,iBAAiB,KAAK,EAAE,KAAK,aAAa,CAAC;EACnD,SAAS,KAAK;GACZ,IAAI,GAAG,MAAM,SAAS,UAAU,GAAG;IACjC,QAAQ,KAAK;;;;CAIpB;GACK;GACA,MAAM;EACR;CACF;CACA,IAAI;EACF,MAAM,OAAO,kEAAkE;EAC/E,MAAM,iBAAiB,MAAM,EAC3B,KAAK,aACP,CAAC;EACD,QAAQ,KAAK;EACb,MAAM,MAAM,KAAK,cAAc,GAAG,SAAS,KAAK,GAAG;EACnD,IAAI,CAAC,MAAM,WAAW,GAAG,GAAG;GAC1B,MAAM,IAAI,MAAM,aAAa;EAC/B;EACA,OAAO;CACT,SAAS,KAAK;EACZ,IAAI,SAAS;GACX,QAAQ,KACN,mBAAmB,IAAI,QAAQ,GAAG,UAAU;EAClD,IAAI,UAAU,sBACV;GACA,QAAQ,KACN,gHACF;GACA,QAAQ,KAAK,CAAC;EAChB;EACA,MAAM,OAAO,YAAY;EACzB,OAAO,MAAM,gBAAgB,UAAU,cAAc,IAAI;CAC3D;AACF;AACA,SAAS,cAAc;CACrB,IAAI;EACF,KAAK,uCAAuC,EAAE,OAAO,SAAS,CAAC;EAC/D,OAAO;CACT,SAAS,OAAO;EACd,OAAO;CACT;AACF"}
|
|
@@ -3,97 +3,91 @@ import { homedir } from "os";
|
|
|
3
3
|
import { join, sep } from "path";
|
|
4
4
|
import { rimraf } from "rimraf";
|
|
5
5
|
import { exec, execPromiseQuiet } from "@vxrn/utils";
|
|
6
|
+
|
|
6
7
|
var home = homedir();
|
|
7
8
|
var vxrnDir = join(home, ".vxrn");
|
|
8
|
-
var cloneStarter = async function
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
});
|
|
20
|
-
}
|
|
9
|
+
var cloneStarter = async function(template, resolvedProjectPath) {
|
|
10
|
+
var dir = await setupVxrnDotDir(template, join(vxrnDir, "vxrn", template.repo.url.split("/").at(-1)));
|
|
11
|
+
if (!await pathExists(dir)) {
|
|
12
|
+
console.error(`Missing template for ${template.value} in ${dir}`);
|
|
13
|
+
process.exit(1);
|
|
14
|
+
}
|
|
15
|
+
await copy(dir, resolvedProjectPath);
|
|
16
|
+
await rimraf(join(resolvedProjectPath, ".git"));
|
|
17
|
+
if (!isInGitRepo()) {
|
|
18
|
+
await execPromiseQuiet(`git init`, { cwd: resolvedProjectPath });
|
|
19
|
+
}
|
|
21
20
|
};
|
|
22
21
|
async function setupVxrnDotDir(template, targetGitDir) {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
if (`${err}`.includes(`code 128`)) {
|
|
57
|
-
console.warn(`\u26A0\uFE0F Note: you need to be sure you can git clone from Github, your SSH key isn't valid.
|
|
22
|
+
var isRetry = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false;
|
|
23
|
+
var branch = template.repo.branch;
|
|
24
|
+
await ensureDir(vxrnDir);
|
|
25
|
+
var isInSubDir = template.repo.dir.length > 0;
|
|
26
|
+
if (!await pathExists(targetGitDir)) {
|
|
27
|
+
var sourceGitRepo = template.repo.url;
|
|
28
|
+
var sourceGitRepoSshFallback = template.repo.sshFallback;
|
|
29
|
+
var cmd = `git clone --branch ${branch} ${isInSubDir ? "--depth 1 --sparse --filter=blob:none " : ""}${sourceGitRepo} "${targetGitDir}"`;
|
|
30
|
+
try {
|
|
31
|
+
await execPromiseQuiet(cmd);
|
|
32
|
+
} catch (error) {
|
|
33
|
+
if (cmd.includes("https://")) {
|
|
34
|
+
console.info(`https failed - trying with ssh now...`);
|
|
35
|
+
var sshCmd = cmd.replace(sourceGitRepo, sourceGitRepoSshFallback);
|
|
36
|
+
await execPromiseQuiet(sshCmd);
|
|
37
|
+
} else {
|
|
38
|
+
throw error;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
} else {
|
|
42
|
+
if (!await pathExists(join(targetGitDir, ".git"))) {
|
|
43
|
+
console.error(`Corrupt vxrn directory, please delete ${targetGitDir} folder and re-run`);
|
|
44
|
+
process.exit(1);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
if (isInSubDir) {
|
|
48
|
+
try {
|
|
49
|
+
var _template_repo_dir_join;
|
|
50
|
+
var cmd1 = `git sparse-checkout set ${(_template_repo_dir_join = template.repo.dir.join(sep)) !== null && _template_repo_dir_join !== void 0 ? _template_repo_dir_join : "."}`;
|
|
51
|
+
await execPromiseQuiet(cmd1, { cwd: targetGitDir });
|
|
52
|
+
} catch (err) {
|
|
53
|
+
if (`${err}`.includes(`code 128`)) {
|
|
54
|
+
console.warn(`\u26A0\uFE0F Note: you need to be sure you can git clone from Github, your SSH key isn't valid.
|
|
58
55
|
|
|
59
56
|
- See: https://docs.github.com/en/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account
|
|
60
57
|
|
|
61
58
|
`);
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
if (isRetry) {
|
|
79
|
-
console.info(`Error updating: ${err.message} ${isRetry ? `failing.
|
|
59
|
+
}
|
|
60
|
+
throw err;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
try {
|
|
64
|
+
var cmd2 = `git pull --rebase --allow-unrelated-histories --depth 1 origin ${branch}`;
|
|
65
|
+
await execPromiseQuiet(cmd2, { cwd: targetGitDir });
|
|
66
|
+
console.info();
|
|
67
|
+
var dir = join(targetGitDir, ...template.repo.dir);
|
|
68
|
+
if (!await pathExists(dir)) {
|
|
69
|
+
throw new Error(`Re-clone...`);
|
|
70
|
+
}
|
|
71
|
+
return dir;
|
|
72
|
+
} catch (err) {
|
|
73
|
+
if (isRetry) {
|
|
74
|
+
console.info(`Error updating: ${err.message} ${isRetry ? `failing.
|
|
80
75
|
${err.stack}` : "trying from fresh."}`);
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
76
|
+
console.info(`Please file an issue: https://github.com/onejs/one/issues/new?assignees=&labels=&template=bug_report.md&title=`);
|
|
77
|
+
process.exit(1);
|
|
78
|
+
}
|
|
79
|
+
await rimraf(targetGitDir);
|
|
80
|
+
return await setupVxrnDotDir(template, targetGitDir, true);
|
|
81
|
+
}
|
|
87
82
|
}
|
|
88
83
|
function isInGitRepo() {
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
return false;
|
|
96
|
-
}
|
|
84
|
+
try {
|
|
85
|
+
exec("git rev-parse --is-inside-work-tree", { stdio: "ignore" });
|
|
86
|
+
return true;
|
|
87
|
+
} catch (error) {
|
|
88
|
+
return false;
|
|
89
|
+
}
|
|
97
90
|
}
|
|
91
|
+
|
|
98
92
|
export { cloneStarter };
|
|
99
93
|
//# sourceMappingURL=cloneStarter.native.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"file":"cloneStarter.native.js","names":[],"sources":["esm/helpers/cloneStarter.native.js"],"sourcesContent":["import { copy, ensureDir, pathExists } from \"fs-extra\";\nimport { homedir } from \"os\";\nimport { join, sep } from \"path\";\nimport { rimraf } from \"rimraf\";\nimport { exec, execPromiseQuiet } from \"@vxrn/utils\";\nvar home = homedir();\nvar vxrnDir = join(home, \".vxrn\");\nvar cloneStarter = async function(template, resolvedProjectPath) {\n var dir = await setupVxrnDotDir(template, join(vxrnDir, \"vxrn\", template.repo.url.split(\"/\").at(-1)));\n if (!await pathExists(dir)) {\n console.error(`Missing template for ${template.value} in ${dir}`);\n process.exit(1);\n }\n await copy(dir, resolvedProjectPath);\n await rimraf(join(resolvedProjectPath, \".git\"));\n if (!isInGitRepo()) {\n await execPromiseQuiet(`git init`, {\n cwd: resolvedProjectPath\n });\n }\n};\nasync function setupVxrnDotDir(template, targetGitDir) {\n var isRetry = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false;\n var branch = template.repo.branch;\n await ensureDir(vxrnDir);\n var isInSubDir = template.repo.dir.length > 0;\n if (!await pathExists(targetGitDir)) {\n var sourceGitRepo = template.repo.url;\n var sourceGitRepoSshFallback = template.repo.sshFallback;\n var cmd = `git clone --branch ${branch} ${isInSubDir ? \"--depth 1 --sparse --filter=blob:none \" : \"\"}${sourceGitRepo} \"${targetGitDir}\"`;\n try {\n await execPromiseQuiet(cmd);\n } catch (error) {\n if (cmd.includes(\"https://\")) {\n console.info(`https failed - trying with ssh now...`);\n var sshCmd = cmd.replace(sourceGitRepo, sourceGitRepoSshFallback);\n await execPromiseQuiet(sshCmd);\n } else {\n throw error;\n }\n }\n } else {\n if (!await pathExists(join(targetGitDir, \".git\"))) {\n console.error(`Corrupt vxrn directory, please delete ${targetGitDir} folder and re-run`);\n process.exit(1);\n }\n }\n if (isInSubDir) {\n try {\n var _template_repo_dir_join;\n var cmd1 = `git sparse-checkout set ${(_template_repo_dir_join = template.repo.dir.join(sep)) !== null && _template_repo_dir_join !== void 0 ? _template_repo_dir_join : \".\"}`;\n await execPromiseQuiet(cmd1, {\n cwd: targetGitDir\n });\n } catch (err) {\n if (`${err}`.includes(`code 128`)) {\n console.warn(`\\u26A0\\uFE0F Note: you need to be sure you can git clone from Github, your SSH key isn't valid.\n \n - See: https://docs.github.com/en/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account\n\n`);\n }\n throw err;\n }\n }\n try {\n var cmd2 = `git pull --rebase --allow-unrelated-histories --depth 1 origin ${branch}`;\n await execPromiseQuiet(cmd2, {\n cwd: targetGitDir\n });\n console.info();\n var dir = join(targetGitDir, ...template.repo.dir);\n if (!await pathExists(dir)) {\n throw new Error(`Re-clone...`);\n }\n return dir;\n } catch (err) {\n if (isRetry) {\n console.info(`Error updating: ${err.message} ${isRetry ? `failing.\n${err.stack}` : \"trying from fresh.\"}`);\n console.info(`Please file an issue: https://github.com/onejs/one/issues/new?assignees=&labels=&template=bug_report.md&title=`);\n process.exit(1);\n }\n await rimraf(targetGitDir);\n return await setupVxrnDotDir(template, targetGitDir, true);\n }\n}\nfunction isInGitRepo() {\n try {\n exec(\"git rev-parse --is-inside-work-tree\", {\n stdio: \"ignore\"\n });\n return true;\n } catch (error) {\n return false;\n }\n}\nexport {\n cloneStarter\n};\n//# sourceMappingURL=cloneStarter.js.map\n"],"mappings":";;;;;;;AAKA,IAAI,OAAO,QAAQ;AACnB,IAAI,UAAU,KAAK,MAAM,OAAO;AAChC,IAAI,eAAe,eAAe,UAAU,qBAAqB;CAC/D,IAAI,MAAM,MAAM,gBAAgB,UAAU,KAAK,SAAS,QAAQ,SAAS,KAAK,IAAI,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACpG,IAAI,CAAC,MAAM,WAAW,GAAG,GAAG;EAC1B,QAAQ,MAAM,wBAAwB,SAAS,MAAM,MAAM,KAAK;EAChE,QAAQ,KAAK,CAAC;CAChB;CACA,MAAM,KAAK,KAAK,mBAAmB;CACnC,MAAM,OAAO,KAAK,qBAAqB,MAAM,CAAC;CAC9C,IAAI,CAAC,YAAY,GAAG;EAClB,MAAM,iBAAiB,YAAY,EACjC,KAAK,oBACP,CAAC;CACH;AACF;AACA,eAAe,gBAAgB,UAAU,cAAc;CACrD,IAAI,UAAU,UAAU,SAAS,KAAK,UAAU,OAAO,KAAK,IAAI,UAAU,KAAK;CAC/E,IAAI,SAAS,SAAS,KAAK;CAC3B,MAAM,UAAU,OAAO;CACvB,IAAI,aAAa,SAAS,KAAK,IAAI,SAAS;CAC5C,IAAI,CAAC,MAAM,WAAW,YAAY,GAAG;EACnC,IAAI,gBAAgB,SAAS,KAAK;EAClC,IAAI,2BAA2B,SAAS,KAAK;EAC7C,IAAI,MAAM,sBAAsB,OAAO,GAAG,aAAa,2CAA2C,KAAK,cAAc,IAAI,aAAa;EACtI,IAAI;GACF,MAAM,iBAAiB,GAAG;EAC5B,SAAS,OAAO;GACd,IAAI,IAAI,SAAS,UAAU,GAAG;IAC5B,QAAQ,KAAK,uCAAuC;IACpD,IAAI,SAAS,IAAI,QAAQ,eAAe,wBAAwB;IAChE,MAAM,iBAAiB,MAAM;GAC/B,OAAO;IACL,MAAM;GACR;EACF;CACF,OAAO;EACL,IAAI,CAAC,MAAM,WAAW,KAAK,cAAc,MAAM,CAAC,GAAG;GACjD,QAAQ,MAAM,yCAAyC,aAAa,mBAAmB;GACvF,QAAQ,KAAK,CAAC;EAChB;CACF;CACA,IAAI,YAAY;EACd,IAAI;GACF,IAAI;GACJ,IAAI,OAAO,4BAA4B,0BAA0B,SAAS,KAAK,IAAI,KAAK,GAAG,OAAO,QAAQ,4BAA4B,KAAK,IAAI,0BAA0B;GACzK,MAAM,iBAAiB,MAAM,EAC3B,KAAK,aACP,CAAC;EACH,SAAS,KAAK;GACZ,IAAI,GAAG,MAAM,SAAS,UAAU,GAAG;IACjC,QAAQ,KAAK;;;;CAIpB;GACK;GACA,MAAM;EACR;CACF;CACA,IAAI;EACF,IAAI,OAAO,kEAAkE;EAC7E,MAAM,iBAAiB,MAAM,EAC3B,KAAK,aACP,CAAC;EACD,QAAQ,KAAK;EACb,IAAI,MAAM,KAAK,cAAc,GAAG,SAAS,KAAK,GAAG;EACjD,IAAI,CAAC,MAAM,WAAW,GAAG,GAAG;GAC1B,MAAM,IAAI,MAAM,aAAa;EAC/B;EACA,OAAO;CACT,SAAS,KAAK;EACZ,IAAI,SAAS;GACX,QAAQ,KAAK,mBAAmB,IAAI,QAAQ,GAAG,UAAU;EAC7D,IAAI,UAAU,sBAAsB;GAChC,QAAQ,KAAK,gHAAgH;GAC7H,QAAQ,KAAK,CAAC;EAChB;EACA,MAAM,OAAO,YAAY;EACzB,OAAO,MAAM,gBAAgB,UAAU,cAAc,IAAI;CAC3D;AACF;AACA,SAAS,cAAc;CACrB,IAAI;EACF,KAAK,uCAAuC,EAC1C,OAAO,SACT,CAAC;EACD,OAAO;CACT,SAAS,OAAO;EACd,OAAO;CACT;AACF"}
|
|
@@ -2,45 +2,47 @@ import path from "node:path";
|
|
|
2
2
|
import ansis from "ansis";
|
|
3
3
|
import prompts from "prompts";
|
|
4
4
|
import { validateNpmName } from "./validateNpmPackage.mjs";
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
5
|
+
|
|
6
|
+
const getProjectName = async (projectPath) => {
|
|
7
|
+
if (typeof projectPath === "string") {
|
|
8
|
+
projectPath = projectPath.trim();
|
|
9
|
+
}
|
|
10
|
+
console.info();
|
|
11
|
+
console.info(ansis.yellow(` Hello. Let's create a new ${ansis.yellowBright(`\u2460`)} app...`));
|
|
12
|
+
console.info();
|
|
13
|
+
if (!projectPath) {
|
|
14
|
+
const defaultName = "hello-world";
|
|
15
|
+
const res = await prompts({
|
|
16
|
+
type: "text",
|
|
17
|
+
name: "path",
|
|
18
|
+
message: "Name",
|
|
19
|
+
initial: defaultName,
|
|
20
|
+
validate: (name) => {
|
|
21
|
+
const validation = validateNpmName(path.basename(path.resolve(name)));
|
|
22
|
+
if (validation.valid) {
|
|
23
|
+
return true;
|
|
24
|
+
}
|
|
25
|
+
return "Invalid name: " + validation.problems[0];
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
if (typeof res.path === "string") {
|
|
29
|
+
projectPath = res.path.trim() || defaultName;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
if (!projectPath) {
|
|
33
|
+
const name = `create-vxrn`;
|
|
34
|
+
console.info();
|
|
35
|
+
console.info("Please specify the project directory:");
|
|
36
|
+
console.info(` ${ansis.cyan(name)} ${ansis.green("<project-directory>")}`);
|
|
37
|
+
console.info();
|
|
38
|
+
console.info("For example:");
|
|
39
|
+
console.info(` ${ansis.cyan(name)} ${ansis.green("my-app")}`);
|
|
40
|
+
console.info();
|
|
41
|
+
console.info(`Run ${ansis.cyan(`${name} --help`)} to see all options.`);
|
|
42
|
+
process.exit(1);
|
|
43
|
+
}
|
|
44
|
+
return projectPath;
|
|
44
45
|
};
|
|
46
|
+
|
|
45
47
|
export { getProjectName };
|
|
46
48
|
//# sourceMappingURL=getProjectName.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"getProjectName.js","names":[],"sources":["esm/helpers/getProjectName.js"],"sourcesContent":["import path from \"node:path\";\nimport ansis from \"ansis\";\nimport prompts from \"prompts\";\nimport { validateNpmName } from \"./validateNpmPackage\";\nconst getProjectName = async (projectPath) => {\n if (typeof projectPath === \"string\") {\n projectPath = projectPath.trim();\n }\n console.info();\n console.info(\n ansis.yellow(` Hello. Let's create a new ${ansis.yellowBright(`\\u2460`)} app...`)\n );\n console.info();\n if (!projectPath) {\n const defaultName = \"hello-world\";\n const res = await prompts({\n type: \"text\",\n name: \"path\",\n message: \"Name\",\n initial: defaultName,\n validate: (name) => {\n const validation = validateNpmName(path.basename(path.resolve(name)));\n if (validation.valid) {\n return true;\n }\n return \"Invalid name: \" + validation.problems[0];\n }\n });\n if (typeof res.path === \"string\") {\n projectPath = res.path.trim() || defaultName;\n }\n }\n if (!projectPath) {\n const name = `create-vxrn`;\n console.info();\n console.info(\"Please specify the project directory:\");\n console.info(` ${ansis.cyan(name)} ${ansis.green(\"<project-directory>\")}`);\n console.info();\n console.info(\"For example:\");\n console.info(` ${ansis.cyan(name)} ${ansis.green(\"my-app\")}`);\n console.info();\n console.info(`Run ${ansis.cyan(`${name} --help`)} to see all options.`);\n process.exit(1);\n }\n return projectPath;\n};\nexport {\n getProjectName\n};\n//# sourceMappingURL=getProjectName.js.map\n"],"mappings":";;;;;;AAIA,MAAM,iBAAiB,OAAO,gBAAgB;CAC5C,IAAI,OAAO,gBAAgB,UAAU;EACnC,cAAc,YAAY,KAAK;CACjC;CACA,QAAQ,KAAK;CACb,QAAQ,KACN,MAAM,OAAO,+BAA+B,MAAM,aAAa,QAAQ,EAAE,SAAS,CACpF;CACA,QAAQ,KAAK;CACb,IAAI,CAAC,aAAa;EAChB,MAAM,cAAc;EACpB,MAAM,MAAM,MAAM,QAAQ;GACxB,MAAM;GACN,MAAM;GACN,SAAS;GACT,SAAS;GACT,WAAW,SAAS;IAClB,MAAM,aAAa,gBAAgB,KAAK,SAAS,KAAK,QAAQ,IAAI,CAAC,CAAC;IACpE,IAAI,WAAW,OAAO;KACpB,OAAO;IACT;IACA,OAAO,mBAAmB,WAAW,SAAS;GAChD;EACF,CAAC;EACD,IAAI,OAAO,IAAI,SAAS,UAAU;GAChC,cAAc,IAAI,KAAK,KAAK,KAAK;EACnC;CACF;CACA,IAAI,CAAC,aAAa;EAChB,MAAM,OAAO;EACb,QAAQ,KAAK;EACb,QAAQ,KAAK,uCAAuC;EACpD,QAAQ,KAAK,KAAK,MAAM,KAAK,IAAI,EAAE,GAAG,MAAM,MAAM,qBAAqB,GAAG;EAC1E,QAAQ,KAAK;EACb,QAAQ,KAAK,cAAc;EAC3B,QAAQ,KAAK,KAAK,MAAM,KAAK,IAAI,EAAE,GAAG,MAAM,MAAM,QAAQ,GAAG;EAC7D,QAAQ,KAAK;EACb,QAAQ,KAAK,OAAO,MAAM,KAAK,GAAG,KAAK,QAAQ,EAAE,qBAAqB;EACtE,QAAQ,KAAK,CAAC;CAChB;CACA,OAAO;AACT"}
|
|
@@ -2,45 +2,47 @@ import path from "path";
|
|
|
2
2
|
import ansis from "ansis";
|
|
3
3
|
import prompts from "prompts";
|
|
4
4
|
import { validateNpmName } from "./validateNpmPackage.native.js";
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
5
|
+
|
|
6
|
+
var getProjectName = async function(projectPath) {
|
|
7
|
+
if (typeof projectPath === "string") {
|
|
8
|
+
projectPath = projectPath.trim();
|
|
9
|
+
}
|
|
10
|
+
console.info();
|
|
11
|
+
console.info(ansis.yellow(` Hello. Let's create a new ${ansis.yellowBright(`\u2460`)} app...`));
|
|
12
|
+
console.info();
|
|
13
|
+
if (!projectPath) {
|
|
14
|
+
var defaultName = "hello-world";
|
|
15
|
+
var res = await prompts({
|
|
16
|
+
type: "text",
|
|
17
|
+
name: "path",
|
|
18
|
+
message: "Name",
|
|
19
|
+
initial: defaultName,
|
|
20
|
+
validate: function(name2) {
|
|
21
|
+
var validation = validateNpmName(path.basename(path.resolve(name2)));
|
|
22
|
+
if (validation.valid) {
|
|
23
|
+
return true;
|
|
24
|
+
}
|
|
25
|
+
return "Invalid name: " + validation.problems[0];
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
if (typeof res.path === "string") {
|
|
29
|
+
projectPath = res.path.trim() || defaultName;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
if (!projectPath) {
|
|
33
|
+
var name = `create-vxrn`;
|
|
34
|
+
console.info();
|
|
35
|
+
console.info("Please specify the project directory:");
|
|
36
|
+
console.info(` ${ansis.cyan(name)} ${ansis.green("<project-directory>")}`);
|
|
37
|
+
console.info();
|
|
38
|
+
console.info("For example:");
|
|
39
|
+
console.info(` ${ansis.cyan(name)} ${ansis.green("my-app")}`);
|
|
40
|
+
console.info();
|
|
41
|
+
console.info(`Run ${ansis.cyan(`${name} --help`)} to see all options.`);
|
|
42
|
+
process.exit(1);
|
|
43
|
+
}
|
|
44
|
+
return projectPath;
|
|
44
45
|
};
|
|
46
|
+
|
|
45
47
|
export { getProjectName };
|
|
46
48
|
//# sourceMappingURL=getProjectName.native.js.map
|