@take-out/cli 0.4.3 → 0.4.5
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/cjs/cli.cjs +53 -35
- package/dist/cjs/commands/changed.cjs +133 -95
- package/dist/cjs/commands/docs.cjs +276 -203
- package/dist/cjs/commands/env-setup.cjs +45 -33
- package/dist/cjs/commands/onboard.cjs +668 -224
- package/dist/cjs/commands/run-all.cjs +54 -45
- package/dist/cjs/commands/run.cjs +80 -65
- package/dist/cjs/commands/script.cjs +263 -187
- package/dist/cjs/commands/skills.cjs +174 -118
- package/dist/cjs/commands/sync.cjs +193 -93
- package/dist/cjs/constants/ascii.cjs +14 -12
- package/dist/cjs/index.cjs +12 -10
- package/dist/cjs/types.cjs +7 -5
- package/dist/cjs/utils/env-categories.cjs +53 -48
- package/dist/cjs/utils/env-setup.cjs +214 -106
- package/dist/cjs/utils/env.cjs +65 -44
- package/dist/cjs/utils/files.cjs +186 -113
- package/dist/cjs/utils/parallel-runner.cjs +125 -75
- package/dist/cjs/utils/ports.cjs +21 -21
- package/dist/cjs/utils/prerequisites.cjs +42 -34
- package/dist/cjs/utils/prompts.cjs +66 -41
- package/dist/cjs/utils/script-listing.cjs +130 -60
- package/dist/cjs/utils/script-utils.cjs +29 -19
- package/dist/cjs/utils/sync.cjs +67 -45
- package/dist/esm/cli.mjs +40 -24
- package/dist/esm/cli.mjs.map +1 -1
- package/dist/esm/commands/changed.mjs +104 -68
- package/dist/esm/commands/changed.mjs.map +1 -1
- package/dist/esm/commands/docs.mjs +245 -174
- package/dist/esm/commands/docs.mjs.map +1 -1
- package/dist/esm/commands/env-setup.mjs +18 -8
- package/dist/esm/commands/env-setup.mjs.map +1 -1
- package/dist/esm/commands/onboard.mjs +631 -189
- package/dist/esm/commands/onboard.mjs.map +1 -1
- package/dist/esm/commands/run-all.mjs +26 -19
- package/dist/esm/commands/run-all.mjs.map +1 -1
- package/dist/esm/commands/run.mjs +52 -39
- package/dist/esm/commands/run.mjs.map +1 -1
- package/dist/esm/commands/script.mjs +230 -156
- package/dist/esm/commands/script.mjs.map +1 -1
- package/dist/esm/commands/skills.mjs +143 -89
- package/dist/esm/commands/skills.mjs.map +1 -1
- package/dist/esm/commands/sync.mjs +160 -62
- package/dist/esm/commands/sync.mjs.map +1 -1
- package/dist/esm/constants/ascii.mjs +2 -2
- package/dist/esm/constants/ascii.mjs.map +1 -1
- package/dist/esm/utils/env-categories.mjs +29 -26
- package/dist/esm/utils/env-categories.mjs.map +1 -1
- package/dist/esm/utils/env-setup.mjs +184 -78
- package/dist/esm/utils/env-setup.mjs.map +1 -1
- package/dist/esm/utils/env.mjs +50 -31
- package/dist/esm/utils/env.mjs.map +1 -1
- package/dist/esm/utils/files.mjs +171 -100
- package/dist/esm/utils/files.mjs.map +1 -1
- package/dist/esm/utils/parallel-runner.mjs +111 -63
- package/dist/esm/utils/parallel-runner.mjs.map +1 -1
- package/dist/esm/utils/ports.mjs +9 -11
- package/dist/esm/utils/ports.mjs.map +1 -1
- package/dist/esm/utils/prerequisites.mjs +30 -24
- package/dist/esm/utils/prerequisites.mjs.map +1 -1
- package/dist/esm/utils/prompts.mjs +40 -17
- package/dist/esm/utils/prompts.mjs.map +1 -1
- package/dist/esm/utils/script-listing.mjs +101 -33
- package/dist/esm/utils/script-listing.mjs.map +1 -1
- package/dist/esm/utils/script-utils.mjs +14 -6
- package/dist/esm/utils/script-utils.mjs.map +1 -1
- package/dist/esm/utils/sync.mjs +38 -18
- package/dist/esm/utils/sync.mjs.map +1 -1
- package/package.json +5 -5
package/dist/esm/utils/ports.mjs
CHANGED
|
@@ -7,30 +7,28 @@ function isPortInUse(port) {
|
|
|
7
7
|
stdio: ["pipe", "pipe", "ignore"]
|
|
8
8
|
}).trim();
|
|
9
9
|
if (!output) return {
|
|
10
|
-
inUse:
|
|
10
|
+
inUse: false
|
|
11
11
|
};
|
|
12
|
-
const lines = output.split(
|
|
13
|
-
`);
|
|
12
|
+
const lines = output.split("\n");
|
|
14
13
|
for (const line of lines) {
|
|
15
14
|
const parts = line.trim().split(/\s+/);
|
|
16
15
|
if (parts[1]?.includes(`:${port}`) && parts[3] === "LISTENING") {
|
|
17
16
|
const pid = Number.parseInt(parts[4] || "", 10);
|
|
18
17
|
return {
|
|
19
|
-
inUse:
|
|
18
|
+
inUse: true,
|
|
20
19
|
pid: Number.isNaN(pid) ? void 0 : pid
|
|
21
20
|
};
|
|
22
21
|
}
|
|
23
22
|
}
|
|
24
23
|
return {
|
|
25
|
-
inUse:
|
|
24
|
+
inUse: false
|
|
26
25
|
};
|
|
27
26
|
} else {
|
|
28
27
|
const output = execSync(`lsof -i :${port} -t`, {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
`)[0] || "", 10) : void 0;
|
|
28
|
+
encoding: "utf-8",
|
|
29
|
+
stdio: ["pipe", "pipe", "ignore"]
|
|
30
|
+
}).trim();
|
|
31
|
+
const pid = output ? Number.parseInt(output.split("\n")[0] || "", 10) : void 0;
|
|
34
32
|
return {
|
|
35
33
|
inUse: !!output,
|
|
36
34
|
pid: Number.isNaN(pid) ? void 0 : pid
|
|
@@ -38,7 +36,7 @@ function isPortInUse(port) {
|
|
|
38
36
|
}
|
|
39
37
|
} catch {
|
|
40
38
|
return {
|
|
41
|
-
inUse:
|
|
39
|
+
inUse: false
|
|
42
40
|
};
|
|
43
41
|
}
|
|
44
42
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["execSync","isPortInUse","port","process","platform","output","encoding","stdio","trim","inUse","lines","split","line","parts","includes","pid","Number","parseInt","isNaN","TAKEOUT_PORTS","postgres","env","VITE_PORT_POSTGRES","zero","VITE_PORT_ZERO","web","VITE_PORT_WEB","minio","VITE_PORT_MINIO","minioConsole","VITE_PORT_MINIO_CONSOLE","checkPort","name","checkAllPorts","hasPortConflicts","checks","some","c","getConflictingPorts","filter"],"sources":["../../../src/utils/ports.ts"],"sourcesContent":[null],"mappings":"AAIA,SAASA,QAAA,QAAgB;AAIzB,SAASC,YAAYC,IAAA,EAAgD;EACnE,IAAI;IACF,IAAIC,OAAA,CAAQC,QAAA,KAAa,SAAS;MAEhC,MAAMC,MAAA,GAASL,QAAA,CAAS,2BAA2BE,IAAI,IAAI;QACzDI,QAAA,EAAU;QACVC,KAAA,EAAO,CAAC,QAAQ,QAAQ,QAAQ;MAClC,CAAC,EAAEC,IAAA,CAAK;MAER,IAAI,CAACH,MAAA,EAAQ,OAAO;QAAEI,KAAA,EAAO;MAAM;MAGnC,MAAMC,KAAA,GAAQL,MAAA,CAAOM,KAAA,CAAM
|
|
1
|
+
{"version":3,"names":["execSync","isPortInUse","port","process","platform","output","encoding","stdio","trim","inUse","lines","split","line","parts","includes","pid","Number","parseInt","isNaN","TAKEOUT_PORTS","postgres","env","VITE_PORT_POSTGRES","zero","VITE_PORT_ZERO","web","VITE_PORT_WEB","minio","VITE_PORT_MINIO","minioConsole","VITE_PORT_MINIO_CONSOLE","checkPort","name","checkAllPorts","hasPortConflicts","checks","some","c","getConflictingPorts","filter"],"sources":["../../../src/utils/ports.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -16,57 +16,63 @@ function getVersion(command) {
|
|
|
16
16
|
return match ? match[0] : output;
|
|
17
17
|
}
|
|
18
18
|
function compareVersions(current, required) {
|
|
19
|
-
const parseCurrent = current.replace(/^v/, "").split(".").map(Number)
|
|
20
|
-
|
|
19
|
+
const parseCurrent = current.replace(/^v/, "").split(".").map(Number);
|
|
20
|
+
const parseRequired = required.replace(/^v/, "").split(".").map(Number);
|
|
21
21
|
for (let i = 0; i < 3; i++) {
|
|
22
|
-
const curr = parseCurrent[i] || 0
|
|
23
|
-
|
|
24
|
-
if (curr > req) return
|
|
25
|
-
if (curr < req) return
|
|
22
|
+
const curr = parseCurrent[i] || 0;
|
|
23
|
+
const req = parseRequired[i] || 0;
|
|
24
|
+
if (curr > req) return true;
|
|
25
|
+
if (curr < req) return false;
|
|
26
26
|
}
|
|
27
|
-
return
|
|
27
|
+
return true;
|
|
28
28
|
}
|
|
29
29
|
function checkBun() {
|
|
30
|
-
const version = getVersion("bun --version") ?? void 0
|
|
31
|
-
|
|
32
|
-
|
|
30
|
+
const version = getVersion("bun --version") ?? void 0;
|
|
31
|
+
const requiredVersion = "1.0.0";
|
|
32
|
+
const hasBunv = !!execCommand("bunv --version");
|
|
33
33
|
let message = version ? compareVersions(version, requiredVersion) ? `Bun ${version} installed` : `Bun ${version} installed (${requiredVersion}+ recommended)` : "Bun not found";
|
|
34
|
-
|
|
34
|
+
if (version && !hasBunv) {
|
|
35
|
+
message += " (consider installing bunv for auto version switching)";
|
|
36
|
+
}
|
|
37
|
+
return {
|
|
35
38
|
name: "Bun",
|
|
36
|
-
required:
|
|
39
|
+
required: true,
|
|
37
40
|
installed: !!version,
|
|
38
41
|
version,
|
|
39
42
|
requiredVersion,
|
|
40
43
|
message,
|
|
41
44
|
installUrl: "https://bun.sh",
|
|
42
|
-
recommendation: hasBunv ?
|
|
45
|
+
recommendation: !hasBunv ? "Install bunv to automatically switch bun versions: https://github.com/aklinker1/bunv" : void 0
|
|
43
46
|
};
|
|
44
47
|
}
|
|
45
48
|
function checkNode() {
|
|
46
|
-
const version = getVersion("node --version") ?? void 0
|
|
47
|
-
|
|
48
|
-
|
|
49
|
+
const version = getVersion("node --version") ?? void 0;
|
|
50
|
+
const requiredVersion = "20.0.0";
|
|
51
|
+
const hasFnm = !!execCommand("fnm --version");
|
|
49
52
|
let message = version ? compareVersions(version, requiredVersion) ? `Node.js ${version} installed` : `Node.js ${version} installed (${requiredVersion}+ recommended)` : "Node.js not found (optional)";
|
|
50
|
-
|
|
53
|
+
if (version && !hasFnm) {
|
|
54
|
+
message += " (consider installing fnm for auto version switching)";
|
|
55
|
+
}
|
|
56
|
+
return {
|
|
51
57
|
name: "Node.js",
|
|
52
|
-
required:
|
|
58
|
+
required: false,
|
|
53
59
|
installed: !!version,
|
|
54
60
|
version,
|
|
55
61
|
requiredVersion,
|
|
56
62
|
message,
|
|
57
63
|
installUrl: "https://nodejs.org",
|
|
58
|
-
recommendation: hasFnm ?
|
|
64
|
+
recommendation: !hasFnm ? "Install fnm to automatically switch node versions: https://github.com/Schniz/fnm" : void 0
|
|
59
65
|
};
|
|
60
66
|
}
|
|
61
67
|
function checkDocker() {
|
|
62
|
-
const version = getVersion("docker --version") ?? void 0
|
|
63
|
-
|
|
68
|
+
const version = getVersion("docker --version") ?? void 0;
|
|
69
|
+
const isRunning = !!execCommand("docker ps");
|
|
64
70
|
return {
|
|
65
71
|
name: "Docker",
|
|
66
|
-
required:
|
|
72
|
+
required: true,
|
|
67
73
|
installed: !!version,
|
|
68
74
|
version,
|
|
69
|
-
message: version ?
|
|
75
|
+
message: !version ? "Docker not found" : !isRunning ? "Docker installed but not running" : `Docker ${version} running`,
|
|
70
76
|
installUrl: "https://docs.docker.com/get-docker/"
|
|
71
77
|
};
|
|
72
78
|
}
|
|
@@ -74,7 +80,7 @@ function checkGit() {
|
|
|
74
80
|
const version = getVersion("git --version") ?? void 0;
|
|
75
81
|
return {
|
|
76
82
|
name: "Git",
|
|
77
|
-
required:
|
|
83
|
+
required: true,
|
|
78
84
|
installed: !!version,
|
|
79
85
|
version,
|
|
80
86
|
message: version ? `Git ${version} installed` : "Git not found",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["execSync","execCommand","command","encoding","stdio","trim","getVersion","output","match","compareVersions","current","required","parseCurrent","replace","split","map","Number","parseRequired","i","curr","req","checkBun","version","requiredVersion","hasBunv","message","name","installed","installUrl","recommendation","checkNode","hasFnm","checkDocker","isRunning","checkGit","checkAllPrerequisites","hasRequiredPrerequisites","checks","filter","c","every"],"sources":["../../../src/utils/prerequisites.ts"],"sourcesContent":[null],"mappings":"AAIA,SAASA,QAAA,QAAgB;AAIzB,SAASC,YAAYC,OAAA,EAAgC;EACnD,IAAI;IACF,OAAOF,QAAA,CAASE,OAAA,EAAS;MACvBC,QAAA,EAAU;MACVC,KAAA,EAAO,CAAC,QAAQ,QAAQ,QAAQ;IAClC,CAAC,EAAEC,IAAA,CAAK;EACV,QAAQ;IACN,OAAO;EACT;AACF;AAEA,SAASC,WAAWJ,OAAA,EAAgC;EAClD,MAAMK,MAAA,GAASN,WAAA,CAAYC,OAAO;EAClC,IAAI,CAACK,MAAA,EAAQ,OAAO;EAGpB,MAAMC,KAAA,GAAQD,MAAA,CAAOC,KAAA,CAAM,eAAe;EAC1C,OAAOA,KAAA,GAAQA,KAAA,CAAM,CAAC,IAAID,MAAA;AAC5B;AAEA,SAASE,gBAAgBC,OAAA,EAAiBC,QAAA,EAA2B;EACnE,MAAMC,YAAA,GAAeF,OAAA,CAAQG,OAAA,CAAQ,MAAM,EAAE,EAAEC,KAAA,CAAM,GAAG,EAAEC,GAAA,CAAIC,MAAM;
|
|
1
|
+
{"version":3,"names":["execSync","execCommand","command","encoding","stdio","trim","getVersion","output","match","compareVersions","current","required","parseCurrent","replace","split","map","Number","parseRequired","i","curr","req","checkBun","version","requiredVersion","hasBunv","message","name","installed","installUrl","recommendation","checkNode","hasFnm","checkDocker","isRunning","checkGit","checkAllPrerequisites","hasRequiredPrerequisites","checks","filter","c","every"],"sources":["../../../src/utils/prerequisites.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -1,22 +1,23 @@
|
|
|
1
1
|
import * as p from "@clack/prompts";
|
|
2
2
|
import pc from "picocolors";
|
|
3
3
|
function displayWelcome(projectName = "Takeout") {
|
|
4
|
-
console.info()
|
|
5
|
-
|
|
4
|
+
console.info();
|
|
5
|
+
p.intro(pc.bgCyan(pc.black(` ${projectName} Starter Kit `)));
|
|
6
|
+
console.info();
|
|
7
|
+
p.note(pc.dim("You can re-run 'bun onboard' anytime to reconfigure or skip to specific steps.\nNo need to decide everything upfront!"), pc.cyan("Tip"));
|
|
6
8
|
}
|
|
7
9
|
function displayOutro(message) {
|
|
8
10
|
p.outro(pc.green(message));
|
|
9
11
|
}
|
|
10
12
|
function displayPrerequisites(checks) {
|
|
11
13
|
const items = checks.map(check => {
|
|
12
|
-
const icon = check.installed ? pc.green("\u2713") : pc.red("\u2717")
|
|
13
|
-
|
|
14
|
-
|
|
14
|
+
const icon = check.installed ? pc.green("\u2713") : pc.red("\u2717");
|
|
15
|
+
const message = check.message || "";
|
|
16
|
+
const recommendation = check.recommendation ? `
|
|
15
17
|
${pc.dim(check.recommendation)}` : "";
|
|
16
18
|
return `${icon} ${pc.bold(check.name)}: ${message}${recommendation}`;
|
|
17
19
|
});
|
|
18
|
-
p.note(items.join(
|
|
19
|
-
`), "Prerequisites");
|
|
20
|
+
p.note(items.join("\n"), "Prerequisites");
|
|
20
21
|
}
|
|
21
22
|
function displayPortConflicts(conflicts) {
|
|
22
23
|
if (conflicts.length === 0) return;
|
|
@@ -24,15 +25,18 @@ function displayPortConflicts(conflicts) {
|
|
|
24
25
|
const pid = conflict.pid ? ` (PID: ${conflict.pid})` : "";
|
|
25
26
|
return `${pc.yellow("\u26A0")} Port ${conflict.port} (${conflict.name})${pid}`;
|
|
26
27
|
});
|
|
27
|
-
p.note(items.join(
|
|
28
|
-
`), pc.yellow("Port Conflicts Detected"));
|
|
28
|
+
p.note(items.join("\n"), pc.yellow("Port Conflicts Detected"));
|
|
29
29
|
}
|
|
30
|
-
async function confirmContinue(message, defaultValue =
|
|
30
|
+
async function confirmContinue(message, defaultValue = true) {
|
|
31
31
|
const result = await p.confirm({
|
|
32
32
|
message,
|
|
33
33
|
initialValue: defaultValue
|
|
34
34
|
});
|
|
35
|
-
|
|
35
|
+
if (p.isCancel(result)) {
|
|
36
|
+
p.cancel("Operation cancelled.");
|
|
37
|
+
process.exit(0);
|
|
38
|
+
}
|
|
39
|
+
return result;
|
|
36
40
|
}
|
|
37
41
|
async function promptText(message, defaultValue, placeholder) {
|
|
38
42
|
const result = await p.text({
|
|
@@ -40,23 +44,37 @@ async function promptText(message, defaultValue, placeholder) {
|
|
|
40
44
|
defaultValue,
|
|
41
45
|
placeholder
|
|
42
46
|
});
|
|
43
|
-
|
|
47
|
+
if (p.isCancel(result)) {
|
|
48
|
+
p.cancel("Operation cancelled.");
|
|
49
|
+
process.exit(0);
|
|
50
|
+
}
|
|
51
|
+
return result;
|
|
44
52
|
}
|
|
45
53
|
async function promptPassword(message) {
|
|
46
54
|
const result = await p.password({
|
|
47
55
|
message
|
|
48
56
|
});
|
|
49
|
-
|
|
57
|
+
if (p.isCancel(result)) {
|
|
58
|
+
p.cancel("Operation cancelled.");
|
|
59
|
+
process.exit(0);
|
|
60
|
+
}
|
|
61
|
+
return result;
|
|
50
62
|
}
|
|
51
63
|
async function promptSelect(message, options) {
|
|
52
64
|
const result = await p.select({
|
|
53
65
|
message,
|
|
54
66
|
options
|
|
55
67
|
});
|
|
56
|
-
|
|
68
|
+
if (p.isCancel(result)) {
|
|
69
|
+
return "cancel";
|
|
70
|
+
}
|
|
71
|
+
return result;
|
|
57
72
|
}
|
|
58
73
|
async function promptStartStep() {
|
|
59
|
-
|
|
74
|
+
console.info();
|
|
75
|
+
console.info(pc.gray("What would you like to do?"));
|
|
76
|
+
console.info();
|
|
77
|
+
return promptSelect("Select starting point:", [{
|
|
60
78
|
value: "full",
|
|
61
79
|
label: "Complete setup",
|
|
62
80
|
hint: "Run through all setup steps"
|
|
@@ -87,11 +105,16 @@ async function promptOldSelect(message, options) {
|
|
|
87
105
|
message,
|
|
88
106
|
options
|
|
89
107
|
});
|
|
90
|
-
|
|
108
|
+
if (p.isCancel(result)) {
|
|
109
|
+
p.cancel("Operation cancelled.");
|
|
110
|
+
process.exit(0);
|
|
111
|
+
}
|
|
112
|
+
return result;
|
|
91
113
|
}
|
|
92
114
|
function showSpinner(message) {
|
|
93
115
|
const s = p.spinner();
|
|
94
|
-
|
|
116
|
+
s.start(message);
|
|
117
|
+
return s;
|
|
95
118
|
}
|
|
96
119
|
function showError(message) {
|
|
97
120
|
p.log.error(pc.red(message));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["p","pc","displayWelcome","projectName","console","info","intro","bgCyan","black","note","dim","cyan","displayOutro","message","outro","green","displayPrerequisites","checks","items","map","check","icon","installed","red","recommendation","bold","name","join","displayPortConflicts","conflicts","length","conflict","pid","yellow","port","confirmContinue","defaultValue","result","confirm","initialValue","isCancel","cancel","process","exit","promptText","placeholder","text","promptPassword","password","promptSelect","options","select","promptStartStep","gray","value","label","hint","promptOldSelect","showSpinner","s","spinner","start","showError","log","error","showWarning","warning","showSuccess","success","showInfo","blue","showStep","step"],"sources":["../../../src/utils/prompts.ts"],"sourcesContent":[null],"mappings":"AAIA,YAAYA,CAAA,MAAO;AACnB,OAAOC,EAAA,MAAQ;AAIR,SAASC,eAAeC,WAAA,GAAc,WAAiB;EAC5DC,OAAA,CAAQC,IAAA,CAAK,
|
|
1
|
+
{"version":3,"names":["p","pc","displayWelcome","projectName","console","info","intro","bgCyan","black","note","dim","cyan","displayOutro","message","outro","green","displayPrerequisites","checks","items","map","check","icon","installed","red","recommendation","bold","name","join","displayPortConflicts","conflicts","length","conflict","pid","yellow","port","confirmContinue","defaultValue","result","confirm","initialValue","isCancel","cancel","process","exit","promptText","placeholder","text","promptPassword","password","promptSelect","options","select","promptStartStep","gray","value","label","hint","promptOldSelect","showSpinner","s","spinner","start","showError","log","error","showWarning","warning","showSuccess","success","showInfo","blue","showStep","step"],"sources":["../../../src/utils/prompts.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -5,66 +5,134 @@ import pc from "picocolors";
|
|
|
5
5
|
import { discoverScripts, getAllScriptMetadata, getLocalScriptsDir } from "./script-utils.mjs";
|
|
6
6
|
function findScriptsPackageRoot() {
|
|
7
7
|
try {
|
|
8
|
-
const resolved = import.meta.resolve("@take-out/scripts/package.json")
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
if (existsSync(srcPath))
|
|
8
|
+
const resolved = import.meta.resolve("@take-out/scripts/package.json");
|
|
9
|
+
const packageJsonPath = fileURLToPath(new URL(resolved));
|
|
10
|
+
const packageRoot = join(packageJsonPath, "..");
|
|
11
|
+
const srcPath = join(packageRoot, "src");
|
|
12
|
+
if (existsSync(srcPath)) {
|
|
13
|
+
return srcPath;
|
|
14
|
+
}
|
|
13
15
|
} catch {}
|
|
14
16
|
return null;
|
|
15
17
|
}
|
|
16
18
|
function formatScriptList(title, scripts, metadata) {
|
|
17
19
|
if (scripts.size === 0) return;
|
|
18
|
-
console.info()
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
20
|
+
console.info();
|
|
21
|
+
console.info(pc.bold(pc.cyan(title)));
|
|
22
|
+
console.info();
|
|
23
|
+
const categories = /* @__PURE__ */new Map();
|
|
24
|
+
const rootScripts = [];
|
|
25
|
+
for (const [name, path] of scripts) {
|
|
26
|
+
if (name.includes("/")) {
|
|
27
|
+
const category = name.split("/")[0];
|
|
28
|
+
if (!categories.has(category)) {
|
|
29
|
+
categories.set(category, []);
|
|
30
|
+
}
|
|
31
|
+
categories.get(category).push([name, path]);
|
|
32
|
+
} else {
|
|
33
|
+
rootScripts.push([name, path]);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
25
36
|
for (const [name] of rootScripts) {
|
|
26
37
|
let line = ` ${pc.green(name)}`;
|
|
27
38
|
const meta = metadata.get(name);
|
|
28
|
-
|
|
39
|
+
if (meta?.description) {
|
|
40
|
+
line += pc.dim(` - ${meta.description}`);
|
|
41
|
+
}
|
|
42
|
+
console.info(line);
|
|
29
43
|
}
|
|
30
44
|
for (const [category, categoryScripts] of categories) {
|
|
31
|
-
console.info()
|
|
45
|
+
console.info();
|
|
46
|
+
console.info(` ${pc.yellow(category)}/`);
|
|
32
47
|
for (const [name] of categoryScripts) {
|
|
33
48
|
const shortName = name.substring(category.length + 1);
|
|
34
49
|
let line = ` ${pc.green(shortName)}`;
|
|
35
50
|
const meta = metadata.get(name);
|
|
36
|
-
|
|
51
|
+
if (meta?.description) {
|
|
52
|
+
line += pc.dim(` - ${meta.description}`);
|
|
53
|
+
}
|
|
54
|
+
console.info(line);
|
|
37
55
|
}
|
|
38
56
|
}
|
|
39
57
|
}
|
|
40
|
-
async function listAllScripts(includeCommands =
|
|
41
|
-
console.info()
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
58
|
+
async function listAllScripts(includeCommands = true) {
|
|
59
|
+
console.info();
|
|
60
|
+
console.info(pc.bold(pc.cyan("Takeout CLI - Project Scripts & Commands")));
|
|
61
|
+
console.info();
|
|
62
|
+
console.info(pc.dim(" Manage scripts, run tasks, and configure your project"));
|
|
63
|
+
console.info();
|
|
64
|
+
if (includeCommands) {
|
|
65
|
+
console.info(pc.bold(pc.cyan("Built-in Commands")));
|
|
66
|
+
console.info();
|
|
67
|
+
console.info(` ${pc.green("onboard")} - Setup wizard for new projects`);
|
|
68
|
+
console.info(` ${pc.green("docs")} - View documentation`);
|
|
69
|
+
console.info(` ${pc.green("env:setup")} - Setup environment variables`);
|
|
70
|
+
console.info(` ${pc.green("run")} - Run scripts in parallel`);
|
|
71
|
+
console.info(` ${pc.green("script")} - Manage and run scripts`);
|
|
72
|
+
console.info(` ${pc.green("skills")} - Manage Claude Code skills`);
|
|
73
|
+
console.info(` ${pc.green("sync")} - Sync fork with upstream Takeout`);
|
|
74
|
+
console.info(` ${pc.green("changed")} - Show changes since last sync`);
|
|
75
|
+
console.info(` ${pc.green("completion")} - Shell completion setup`);
|
|
76
|
+
}
|
|
77
|
+
const localScripts = discoverScripts(getLocalScriptsDir());
|
|
78
|
+
const builtInDir = findScriptsPackageRoot();
|
|
79
|
+
const builtInScripts = builtInDir ? discoverScripts(builtInDir) : /* @__PURE__ */new Map();
|
|
80
|
+
const allScripts = new Map([...localScripts, ...builtInScripts]);
|
|
81
|
+
const metadata = await getAllScriptMetadata(allScripts);
|
|
82
|
+
if (localScripts.size > 0) {
|
|
83
|
+
formatScriptList("Local Scripts", localScripts, metadata);
|
|
84
|
+
}
|
|
85
|
+
if (builtInScripts.size > 0) {
|
|
86
|
+
formatScriptList("Built-in Scripts", builtInScripts, metadata);
|
|
87
|
+
}
|
|
88
|
+
if (localScripts.size === 0 && builtInScripts.size === 0) {
|
|
89
|
+
console.info();
|
|
90
|
+
console.info(pc.yellow("No scripts found"));
|
|
91
|
+
console.info();
|
|
92
|
+
console.info(pc.dim(`Create scripts in ${relative(process.cwd(), getLocalScriptsDir())}/`));
|
|
93
|
+
console.info(pc.dim(`Or install @take-out/scripts package for built-in scripts`));
|
|
94
|
+
}
|
|
95
|
+
console.info();
|
|
96
|
+
console.info(pc.bold("Usage:"));
|
|
97
|
+
console.info(` ${pc.cyan("tko <command>")} ${pc.dim("Run a built-in command")}`);
|
|
98
|
+
console.info(` ${pc.cyan("tko <script-name>")} ${pc.dim("Execute direct script")}`);
|
|
99
|
+
console.info(` ${pc.cyan("tko <group> <script>")} ${pc.dim("Execute nested script")}`);
|
|
100
|
+
console.info(` ${pc.cyan("tko script new <path>")} ${pc.dim("Create a new script")}`);
|
|
101
|
+
console.info();
|
|
48
102
|
}
|
|
49
103
|
async function listCategoryScripts(categoryName) {
|
|
50
|
-
const localDir = getLocalScriptsDir()
|
|
51
|
-
|
|
104
|
+
const localDir = getLocalScriptsDir();
|
|
105
|
+
const categoryPath = join(localDir, categoryName);
|
|
52
106
|
if (existsSync(categoryPath) && statSync(categoryPath).isDirectory()) {
|
|
53
107
|
const categoryScripts = discoverScripts(categoryPath);
|
|
54
108
|
if (categoryScripts.size > 0) {
|
|
55
109
|
const metadata = await getAllScriptMetadata(categoryScripts);
|
|
56
|
-
console.info()
|
|
110
|
+
console.info();
|
|
111
|
+
console.info(pc.bold(pc.cyan(`${categoryName} Scripts`)));
|
|
112
|
+
console.info();
|
|
57
113
|
for (const [name] of categoryScripts) {
|
|
58
|
-
const shortName = name.replace(`${categoryName}/`, "")
|
|
59
|
-
|
|
114
|
+
const shortName = name.replace(`${categoryName}/`, "");
|
|
115
|
+
const meta = metadata.get(name);
|
|
60
116
|
let line = ` ${pc.green(shortName)}`;
|
|
61
|
-
|
|
117
|
+
if (meta?.description) {
|
|
118
|
+
line += pc.dim(` - ${meta.description}`);
|
|
119
|
+
}
|
|
120
|
+
if (meta?.args && meta.args.length > 0) {
|
|
121
|
+
line += pc.dim(` [${meta.args.join(", ")}]`);
|
|
122
|
+
}
|
|
123
|
+
console.info(line);
|
|
62
124
|
}
|
|
63
|
-
console.info()
|
|
64
|
-
|
|
65
|
-
|
|
125
|
+
console.info();
|
|
126
|
+
console.info(pc.dim(`Run: tko ${categoryName}/<name> [args...] to execute`));
|
|
127
|
+
console.info();
|
|
128
|
+
} else {
|
|
129
|
+
console.info();
|
|
130
|
+
console.info(pc.yellow(`No scripts found in ${categoryName}/`));
|
|
131
|
+
console.info();
|
|
132
|
+
}
|
|
133
|
+
return true;
|
|
66
134
|
}
|
|
67
|
-
return
|
|
135
|
+
return false;
|
|
68
136
|
}
|
|
69
137
|
export { listAllScripts, listCategoryScripts };
|
|
70
138
|
//# sourceMappingURL=script-listing.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["existsSync","statSync","join","relative","fileURLToPath","pc","discoverScripts","getAllScriptMetadata","getLocalScriptsDir","findScriptsPackageRoot","resolved","import","meta","resolve","packageJsonPath","URL","packageRoot","srcPath","formatScriptList","title","scripts","metadata","size","console","info","bold","cyan","categories","Map","rootScripts","name","path","includes","category","split","has","set","get","push","line","green","description","dim","categoryScripts","yellow","shortName","substring","length","listAllScripts","includeCommands","localScripts","builtInDir","builtInScripts","allScripts","process","cwd","listCategoryScripts","categoryName","localDir","categoryPath","isDirectory","replace","args"],"sources":["../../../src/utils/script-listing.ts"],"sourcesContent":[null],"mappings":"AAIA,SAASA,UAAA,EAAYC,QAAA,QAAgB;AACrC,SAASC,IAAA,EAAMC,QAAA,QAAgB;AAC/B,SAASC,aAAA,QAAqB;AAE9B,OAAOC,EAAA,MAAQ;AAEf,SAEEC,eAAA,EACAC,oBAAA,EACAC,kBAAA,QACK;AAGP,SAASC,uBAAA,EAAwC;EAC/C,IAAI;IACF,MAAMC,QAAA,GAAWC,MAAA,CAAAC,IAAA,CAAYC,OAAA,CAAQ,gCAAgC;
|
|
1
|
+
{"version":3,"names":["existsSync","statSync","join","relative","fileURLToPath","pc","discoverScripts","getAllScriptMetadata","getLocalScriptsDir","findScriptsPackageRoot","resolved","import","meta","resolve","packageJsonPath","URL","packageRoot","srcPath","formatScriptList","title","scripts","metadata","size","console","info","bold","cyan","categories","Map","rootScripts","name","path","includes","category","split","has","set","get","push","line","green","description","dim","categoryScripts","yellow","shortName","substring","length","listAllScripts","includeCommands","localScripts","builtInDir","builtInScripts","allScripts","process","cwd","listCategoryScripts","categoryName","localDir","categoryPath","isDirectory","replace","args"],"sources":["../../../src/utils/script-listing.ts"],"sourcesContent":[null],"mappings":"AAIA,SAASA,UAAA,EAAYC,QAAA,QAAgB;AACrC,SAASC,IAAA,EAAMC,QAAA,QAAgB;AAC/B,SAASC,aAAA,QAAqB;AAE9B,OAAOC,EAAA,MAAQ;AAEf,SAEEC,eAAA,EACAC,oBAAA,EACAC,kBAAA,QACK;AAGP,SAASC,uBAAA,EAAwC;EAC/C,IAAI;IACF,MAAMC,QAAA,GAAWC,MAAA,CAAAC,IAAA,CAAYC,OAAA,CAAQ,gCAAgC;IACrE,MAAMC,eAAA,GAAkBV,aAAA,CAAc,IAAIW,GAAA,CAAIL,QAAQ,CAAC;IACvD,MAAMM,WAAA,GAAcd,IAAA,CAAKY,eAAA,EAAiB,IAAI;IAC9C,MAAMG,OAAA,GAAUf,IAAA,CAAKc,WAAA,EAAa,KAAK;IAEvC,IAAIhB,UAAA,CAAWiB,OAAO,GAAG;MACvB,OAAOA,OAAA;IACT;EACF,QAAQ,CAER;EAEA,OAAO;AACT;AAGA,SAASC,iBACPC,KAAA,EACAC,OAAA,EACAC,QAAA,EACM;EACN,IAAID,OAAA,CAAQE,IAAA,KAAS,GAAG;EAExBC,OAAA,CAAQC,IAAA,CAAK;EACbD,OAAA,CAAQC,IAAA,CAAKnB,EAAA,CAAGoB,IAAA,CAAKpB,EAAA,CAAGqB,IAAA,CAAKP,KAAK,CAAC,CAAC;EACpCI,OAAA,CAAQC,IAAA,CAAK;EAEb,MAAMG,UAAA,GAAa,mBAAIC,GAAA,CAAqC;EAC5D,MAAMC,WAAA,GAAuC,EAAC;EAE9C,WAAW,CAACC,IAAA,EAAMC,IAAI,KAAKX,OAAA,EAAS;IAClC,IAAIU,IAAA,CAAKE,QAAA,CAAS,GAAG,GAAG;MACtB,MAAMC,QAAA,GAAWH,IAAA,CAAKI,KAAA,CAAM,GAAG,EAAE,CAAC;MAClC,IAAI,CAACP,UAAA,CAAWQ,GAAA,CAAIF,QAAQ,GAAG;QAC7BN,UAAA,CAAWS,GAAA,CAAIH,QAAA,EAAU,EAAE;MAC7B;MACAN,UAAA,CAAWU,GAAA,CAAIJ,QAAQ,EAAGK,IAAA,CAAK,CAACR,IAAA,EAAMC,IAAI,CAAC;IAC7C,OAAO;MACLF,WAAA,CAAYS,IAAA,CAAK,CAACR,IAAA,EAAMC,IAAI,CAAC;IAC/B;EACF;EAEA,WAAW,CAACD,IAAI,KAAKD,WAAA,EAAa;IAChC,IAAIU,IAAA,GAAO,KAAKlC,EAAA,CAAGmC,KAAA,CAAMV,IAAI,CAAC;IAC9B,MAAMlB,IAAA,GAAOS,QAAA,CAASgB,GAAA,CAAIP,IAAI;IAC9B,IAAIlB,IAAA,EAAM6B,WAAA,EAAa;MACrBF,IAAA,IAAQlC,EAAA,CAAGqC,GAAA,CAAI,MAAM9B,IAAA,CAAK6B,WAAW,EAAE;IACzC;IACAlB,OAAA,CAAQC,IAAA,CAAKe,IAAI;EACnB;EAEA,WAAW,CAACN,QAAA,EAAUU,eAAe,KAAKhB,UAAA,EAAY;IACpDJ,OAAA,CAAQC,IAAA,CAAK;IACbD,OAAA,CAAQC,IAAA,CAAK,KAAKnB,EAAA,CAAGuC,MAAA,CAAOX,QAAQ,CAAC,GAAG;IAExC,WAAW,CAACH,IAAI,KAAKa,eAAA,EAAiB;MACpC,MAAME,SAAA,GAAYf,IAAA,CAAKgB,SAAA,CAAUb,QAAA,CAASc,MAAA,GAAS,CAAC;MACpD,IAAIR,IAAA,GAAO,OAAOlC,EAAA,CAAGmC,KAAA,CAAMK,SAAS,CAAC;MACrC,MAAMjC,IAAA,GAAOS,QAAA,CAASgB,GAAA,CAAIP,IAAI;MAC9B,IAAIlB,IAAA,EAAM6B,WAAA,EAAa;QACrBF,IAAA,IAAQlC,EAAA,CAAGqC,GAAA,CAAI,MAAM9B,IAAA,CAAK6B,WAAW,EAAE;MACzC;MACAlB,OAAA,CAAQC,IAAA,CAAKe,IAAI;IACnB;EACF;AACF;AAGA,eAAsBS,eAAeC,eAAA,GAAkB,MAAM;EAC3D1B,OAAA,CAAQC,IAAA,CAAK;EACbD,OAAA,CAAQC,IAAA,CAAKnB,EAAA,CAAGoB,IAAA,CAAKpB,EAAA,CAAGqB,IAAA,CAAK,0CAA0C,CAAC,CAAC;EACzEH,OAAA,CAAQC,IAAA,CAAK;EACbD,OAAA,CAAQC,IAAA,CAAKnB,EAAA,CAAGqC,GAAA,CAAI,yDAAyD,CAAC;EAC9EnB,OAAA,CAAQC,IAAA,CAAK;EAEb,IAAIyB,eAAA,EAAiB;IACnB1B,OAAA,CAAQC,IAAA,CAAKnB,EAAA,CAAGoB,IAAA,CAAKpB,EAAA,CAAGqB,IAAA,CAAK,mBAAmB,CAAC,CAAC;IAClDH,OAAA,CAAQC,IAAA,CAAK;IACbD,OAAA,CAAQC,IAAA,CAAK,KAAKnB,EAAA,CAAGmC,KAAA,CAAM,SAAS,CAAC,kCAAkC;IACvEjB,OAAA,CAAQC,IAAA,CAAK,KAAKnB,EAAA,CAAGmC,KAAA,CAAM,MAAM,CAAC,uBAAuB;IACzDjB,OAAA,CAAQC,IAAA,CAAK,KAAKnB,EAAA,CAAGmC,KAAA,CAAM,WAAW,CAAC,gCAAgC;IACvEjB,OAAA,CAAQC,IAAA,CAAK,KAAKnB,EAAA,CAAGmC,KAAA,CAAM,KAAK,CAAC,4BAA4B;IAC7DjB,OAAA,CAAQC,IAAA,CAAK,KAAKnB,EAAA,CAAGmC,KAAA,CAAM,QAAQ,CAAC,2BAA2B;IAC/DjB,OAAA,CAAQC,IAAA,CAAK,KAAKnB,EAAA,CAAGmC,KAAA,CAAM,QAAQ,CAAC,8BAA8B;IAClEjB,OAAA,CAAQC,IAAA,CAAK,KAAKnB,EAAA,CAAGmC,KAAA,CAAM,MAAM,CAAC,oCAAoC;IACtEjB,OAAA,CAAQC,IAAA,CAAK,KAAKnB,EAAA,CAAGmC,KAAA,CAAM,SAAS,CAAC,iCAAiC;IACtEjB,OAAA,CAAQC,IAAA,CAAK,KAAKnB,EAAA,CAAGmC,KAAA,CAAM,YAAY,CAAC,2BAA2B;EACrE;EAEA,MAAMU,YAAA,GAAe5C,eAAA,CAAgBE,kBAAA,CAAmB,CAAC;EACzD,MAAM2C,UAAA,GAAa1C,sBAAA,CAAuB;EAC1C,MAAM2C,cAAA,GAAiBD,UAAA,GAAa7C,eAAA,CAAgB6C,UAAU,IAAI,mBAAIvB,GAAA,CAAI;EAE1E,MAAMyB,UAAA,GAAa,IAAIzB,GAAA,CAAI,CAAC,GAAGsB,YAAA,EAAc,GAAGE,cAAc,CAAC;EAC/D,MAAM/B,QAAA,GAAW,MAAMd,oBAAA,CAAqB8C,UAAU;EAEtD,IAAIH,YAAA,CAAa5B,IAAA,GAAO,GAAG;IACzBJ,gBAAA,CAAiB,iBAAiBgC,YAAA,EAAc7B,QAAQ;EAC1D;EAEA,IAAI+B,cAAA,CAAe9B,IAAA,GAAO,GAAG;IAC3BJ,gBAAA,CAAiB,oBAAoBkC,cAAA,EAAgB/B,QAAQ;EAC/D;EAEA,IAAI6B,YAAA,CAAa5B,IAAA,KAAS,KAAK8B,cAAA,CAAe9B,IAAA,KAAS,GAAG;IACxDC,OAAA,CAAQC,IAAA,CAAK;IACbD,OAAA,CAAQC,IAAA,CAAKnB,EAAA,CAAGuC,MAAA,CAAO,kBAAkB,CAAC;IAC1CrB,OAAA,CAAQC,IAAA,CAAK;IACbD,OAAA,CAAQC,IAAA,CACNnB,EAAA,CAAGqC,GAAA,CAAI,qBAAqBvC,QAAA,CAASmD,OAAA,CAAQC,GAAA,CAAI,GAAG/C,kBAAA,CAAmB,CAAC,CAAC,GAAG,CAC9E;IACAe,OAAA,CAAQC,IAAA,CAAKnB,EAAA,CAAGqC,GAAA,CAAI,2DAA2D,CAAC;EAClF;EAEAnB,OAAA,CAAQC,IAAA,CAAK;EACbD,OAAA,CAAQC,IAAA,CAAKnB,EAAA,CAAGoB,IAAA,CAAK,QAAQ,CAAC;EAC9BF,OAAA,CAAQC,IAAA,CACN,KAAKnB,EAAA,CAAGqB,IAAA,CAAK,eAAe,CAAC,cAAcrB,EAAA,CAAGqC,GAAA,CAAI,wBAAwB,CAAC,EAC7E;EACAnB,OAAA,CAAQC,IAAA,CACN,KAAKnB,EAAA,CAAGqB,IAAA,CAAK,mBAAmB,CAAC,UAAUrB,EAAA,CAAGqC,GAAA,CAAI,uBAAuB,CAAC,EAC5E;EACAnB,OAAA,CAAQC,IAAA,CACN,KAAKnB,EAAA,CAAGqB,IAAA,CAAK,sBAAsB,CAAC,OAAOrB,EAAA,CAAGqC,GAAA,CAAI,uBAAuB,CAAC,EAC5E;EACAnB,OAAA,CAAQC,IAAA,CAAK,KAAKnB,EAAA,CAAGqB,IAAA,CAAK,uBAAuB,CAAC,MAAMrB,EAAA,CAAGqC,GAAA,CAAI,qBAAqB,CAAC,EAAE;EACvFnB,OAAA,CAAQC,IAAA,CAAK;AACf;AAGA,eAAsBgC,oBAAoBC,YAAA,EAAwC;EAChF,MAAMC,QAAA,GAAWlD,kBAAA,CAAmB;EACpC,MAAMmD,YAAA,GAAezD,IAAA,CAAKwD,QAAA,EAAUD,YAAY;EAEhD,IAAIzD,UAAA,CAAW2D,YAAY,KAAK1D,QAAA,CAAS0D,YAAY,EAAEC,WAAA,CAAY,GAAG;IACpE,MAAMjB,eAAA,GAAkBrC,eAAA,CAAgBqD,YAAY;IAEpD,IAAIhB,eAAA,CAAgBrB,IAAA,GAAO,GAAG;MAC5B,MAAMD,QAAA,GAAW,MAAMd,oBAAA,CAAqBoC,eAAe;MAE3DpB,OAAA,CAAQC,IAAA,CAAK;MACbD,OAAA,CAAQC,IAAA,CAAKnB,EAAA,CAAGoB,IAAA,CAAKpB,EAAA,CAAGqB,IAAA,CAAK,GAAG+B,YAAY,UAAU,CAAC,CAAC;MACxDlC,OAAA,CAAQC,IAAA,CAAK;MAEb,WAAW,CAACM,IAAI,KAAKa,eAAA,EAAiB;QACpC,MAAME,SAAA,GAAYf,IAAA,CAAK+B,OAAA,CAAQ,GAAGJ,YAAY,KAAK,EAAE;QACrD,MAAM7C,IAAA,GAAOS,QAAA,CAASgB,GAAA,CAAIP,IAAI;QAC9B,IAAIS,IAAA,GAAO,KAAKlC,EAAA,CAAGmC,KAAA,CAAMK,SAAS,CAAC;QAEnC,IAAIjC,IAAA,EAAM6B,WAAA,EAAa;UACrBF,IAAA,IAAQlC,EAAA,CAAGqC,GAAA,CAAI,MAAM9B,IAAA,CAAK6B,WAAW,EAAE;QACzC;QAEA,IAAI7B,IAAA,EAAMkD,IAAA,IAAQlD,IAAA,CAAKkD,IAAA,CAAKf,MAAA,GAAS,GAAG;UACtCR,IAAA,IAAQlC,EAAA,CAAGqC,GAAA,CAAI,KAAK9B,IAAA,CAAKkD,IAAA,CAAK5D,IAAA,CAAK,IAAI,CAAC,GAAG;QAC7C;QAEAqB,OAAA,CAAQC,IAAA,CAAKe,IAAI;MACnB;MAEAhB,OAAA,CAAQC,IAAA,CAAK;MACbD,OAAA,CAAQC,IAAA,CAAKnB,EAAA,CAAGqC,GAAA,CAAI,YAAYe,YAAY,8BAA8B,CAAC;MAC3ElC,OAAA,CAAQC,IAAA,CAAK;IACf,OAAO;MACLD,OAAA,CAAQC,IAAA,CAAK;MACbD,OAAA,CAAQC,IAAA,CAAKnB,EAAA,CAAGuC,MAAA,CAAO,uBAAuBa,YAAY,GAAG,CAAC;MAC9DlC,OAAA,CAAQC,IAAA,CAAK;IACf;IAEA,OAAO;EACT;EAEA,OAAO;AACT","ignoreList":[]}
|
|
@@ -12,7 +12,8 @@ async function getAllScriptMetadata(scripts) {
|
|
|
12
12
|
});
|
|
13
13
|
for (const [name, path] of scripts) {
|
|
14
14
|
try {
|
|
15
|
-
|
|
15
|
+
const head = readFileSync(path, "utf-8").slice(0, 200);
|
|
16
|
+
if (!head.includes("cmd")) continue;
|
|
16
17
|
} catch {
|
|
17
18
|
continue;
|
|
18
19
|
}
|
|
@@ -28,7 +29,9 @@ async function getAllScriptMetadata(scripts) {
|
|
|
28
29
|
};
|
|
29
30
|
if (info.args) {
|
|
30
31
|
const flags = [...info.args.matchAll(/--?([a-z-]+)/gi)];
|
|
31
|
-
flags.length > 0
|
|
32
|
+
if (flags.length > 0) {
|
|
33
|
+
metadata.args = flags.map(m => `--${m[1]}`);
|
|
34
|
+
}
|
|
32
35
|
}
|
|
33
36
|
results.set(name, metadata);
|
|
34
37
|
}
|
|
@@ -36,23 +39,28 @@ async function getAllScriptMetadata(scripts) {
|
|
|
36
39
|
}
|
|
37
40
|
function discoverScripts(dir, baseDir = dir) {
|
|
38
41
|
const scripts = /* @__PURE__ */new Map();
|
|
39
|
-
if (!existsSync(dir))
|
|
42
|
+
if (!existsSync(dir)) {
|
|
43
|
+
return scripts;
|
|
44
|
+
}
|
|
40
45
|
try {
|
|
41
46
|
const entries = readdirSync(dir);
|
|
42
47
|
for (const entry of entries) {
|
|
43
48
|
const fullPath = join(dir, entry);
|
|
44
|
-
|
|
49
|
+
const stat = statSync(fullPath);
|
|
50
|
+
if (stat.isDirectory()) {
|
|
45
51
|
if (entry === "helpers" || entry === "internal") continue;
|
|
46
52
|
const subEntries = readdirSync(fullPath);
|
|
47
53
|
for (const subEntry of subEntries) {
|
|
48
54
|
const subPath = join(fullPath, subEntry);
|
|
49
55
|
if (statSync(subPath).isFile() && (subEntry.endsWith(".ts") || subEntry.endsWith(".js"))) {
|
|
50
|
-
const
|
|
56
|
+
const relativePath = relative(baseDir, subPath).split("\\").join("/");
|
|
57
|
+
const scriptName = relativePath.replace(/\.(ts|js)$/, "");
|
|
51
58
|
scripts.set(scriptName, subPath);
|
|
52
59
|
}
|
|
53
60
|
}
|
|
54
61
|
} else if (entry.endsWith(".ts") || entry.endsWith(".js")) {
|
|
55
|
-
const
|
|
62
|
+
const relativePath = relative(baseDir, fullPath).split("\\").join("/");
|
|
63
|
+
const scriptName = relativePath.replace(/\.(ts|js)$/, "");
|
|
56
64
|
scripts.set(scriptName, fullPath);
|
|
57
65
|
}
|
|
58
66
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["existsSync","readFileSync","readdirSync","statSync","join","relative","setInterceptCmd","getLocalScriptsDir","process","cwd","getAllScriptMetadata","scripts","collected","Map","currentName","info","set","name","path","slice","includes","results","metadata","description","args","flags","matchAll","length","map","m","discoverScripts","dir","baseDir","entries","entry","fullPath","isDirectory","subEntries","subEntry","subPath","isFile","endsWith","
|
|
1
|
+
{"version":3,"names":["existsSync","readFileSync","readdirSync","statSync","join","relative","setInterceptCmd","getLocalScriptsDir","process","cwd","getAllScriptMetadata","scripts","collected","Map","currentName","info","set","name","path","head","slice","includes","results","metadata","description","args","flags","matchAll","length","map","m","discoverScripts","dir","baseDir","entries","entry","fullPath","stat","isDirectory","subEntries","subEntry","subPath","isFile","endsWith","relativePath","split","scriptName","replace"],"sources":["../../../src/utils/script-utils.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|