@simon_he/pi 0.1.19 → 0.1.21
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/index.cjs +696 -704
- package/dist/index.d.cts +4 -0
- package/dist/index.d.mts +4 -0
- package/dist/index.mjs +729 -0
- package/package.json +14 -14
- package/dist/index.js +0 -748
package/dist/index.js
DELETED
|
@@ -1,748 +0,0 @@
|
|
|
1
|
-
var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
|
|
2
|
-
get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
|
|
3
|
-
}) : x)(function(x) {
|
|
4
|
-
if (typeof require !== "undefined") return require.apply(this, arguments);
|
|
5
|
-
throw Error('Dynamic require of "' + x + '" is not supported');
|
|
6
|
-
});
|
|
7
|
-
|
|
8
|
-
// src/index.ts
|
|
9
|
-
import path2 from "path";
|
|
10
|
-
import process9 from "process";
|
|
11
|
-
import { ccommand as ccommand3 } from "ccommand";
|
|
12
|
-
import fg from "fast-glob";
|
|
13
|
-
import { isWin, spaceFormat } from "lazy-js-utils";
|
|
14
|
-
import {
|
|
15
|
-
hasPkg,
|
|
16
|
-
isGo,
|
|
17
|
-
isRust,
|
|
18
|
-
jsShell as jsShell12,
|
|
19
|
-
useNodeWorker as useNodeWorker4
|
|
20
|
-
} from "lazy-js-utils/node";
|
|
21
|
-
import color3 from "picocolors";
|
|
22
|
-
|
|
23
|
-
// src/help.ts
|
|
24
|
-
import process from "process";
|
|
25
|
-
import { jsShell } from "lazy-js-utils/node";
|
|
26
|
-
|
|
27
|
-
// package.json
|
|
28
|
-
var version = "0.1.19";
|
|
29
|
-
|
|
30
|
-
// src/help.ts
|
|
31
|
-
var isZh = process.env.PI_Lang === "zh";
|
|
32
|
-
async function help(argv) {
|
|
33
|
-
const arg = argv[0];
|
|
34
|
-
if (arg === "-v" || arg === "--version") {
|
|
35
|
-
await jsShell(
|
|
36
|
-
isZh ? `gum style --foreground 212 --border-foreground 212 --border double --align center --width 50 --margin "1 2" --padding "2 4" "pi \u7248\u672C: ${version}" "\u8BF7\u4E3A\u6211\u7684\u52AA\u529B\u70B9\u4E00\u4E2A\u884C \u{1F31F}" "\u8C22\u8C22 \u{1F91F}"` : `gum style --foreground 212 --border-foreground 212 --border double --align center --width 50 --margin "1 2" --padding "2 4" "pi version: ${version}" "Please give me a \u{1F31F} for my efforts" "Thank you \u{1F91F}"`,
|
|
37
|
-
"inherit"
|
|
38
|
-
);
|
|
39
|
-
process.exit(0);
|
|
40
|
-
} else if (arg === "-h" || arg === "--help") {
|
|
41
|
-
await jsShell(
|
|
42
|
-
`gum style --foreground 212 --border-foreground 212 --border double --align left --width 50 --margin "1 2" --padding "1 1" "PI Commands:" "~ pi: install package" "~ pix: npx package" "~ pui: uninstall package" "~ prun: run package script" "~ pinit: package init" "~ pbuild: go build | cargo build" "~ pfind: find monorepo of yarn or pnpm" "~ pa: agent alias" "~ pu: package upgrade" "~ pci: package clean install" "~ pil: package latest install"
|
|
43
|
-
`,
|
|
44
|
-
"inherit"
|
|
45
|
-
);
|
|
46
|
-
process.exit(0);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
// src/installDeps.ts
|
|
51
|
-
import process2 from "process";
|
|
52
|
-
import { isInstallPkg, jsShell as jsShell2 } from "lazy-js-utils/node";
|
|
53
|
-
import color from "picocolors";
|
|
54
|
-
async function installDeps() {
|
|
55
|
-
if (!await isInstallPkg("gum")) {
|
|
56
|
-
console.log(color.cyan("\u6B63\u5728\u4E3A\u60A8\u5B89\u88C5\u5FC5\u8981\u7684\u4F9D\u8D56gum..."));
|
|
57
|
-
const { status } = await jsShell2("brew install gum", [
|
|
58
|
-
"inherit",
|
|
59
|
-
"pipe",
|
|
60
|
-
"inherit"
|
|
61
|
-
]);
|
|
62
|
-
if (status === 0) {
|
|
63
|
-
console.log(color.cyan("gum \u5B89\u88C5\u6210\u529F!"));
|
|
64
|
-
} else {
|
|
65
|
-
console.log(
|
|
66
|
-
color.red(
|
|
67
|
-
"gum \u5B89\u88C5\u5931\u8D25\uFF0C\u8BF7\u5C1D\u8BD5\u4ECE\u5B98\u7F51\u89E3\u51B3\u5B89\u88C5\u95EE\u9898! https://github.com/charmbracelet/gum"
|
|
68
|
-
)
|
|
69
|
-
);
|
|
70
|
-
process2.exit(1);
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
if (!await isInstallPkg("ni")) {
|
|
74
|
-
console.log(color.cyan("\u6B63\u5728\u4E3A\u60A8\u5B89\u88C5\u5FC5\u8981\u7684\u4F9D\u8D56ni..."));
|
|
75
|
-
const { status } = await jsShell2("npm i -g @antfu/ni", [
|
|
76
|
-
"inherit",
|
|
77
|
-
"pipe",
|
|
78
|
-
"inherit"
|
|
79
|
-
]);
|
|
80
|
-
if (status === 0) {
|
|
81
|
-
console.log(color.cyan("ni \u5B89\u88C5\u6210\u529F!"));
|
|
82
|
-
} else {
|
|
83
|
-
console.log(
|
|
84
|
-
color.red(
|
|
85
|
-
"ni \u5B89\u88C5\u5931\u8D25\uFF0C\u8BF7\u5C1D\u8BD5\u4ECE\u5B98\u7F51\u89E3\u51B3\u5B89\u88C5\u95EE\u9898! https://github.com/antfu/ni"
|
|
86
|
-
)
|
|
87
|
-
);
|
|
88
|
-
process2.exit(1);
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
// src/pa.ts
|
|
94
|
-
import { jsShell as jsShell3 } from "lazy-js-utils/node";
|
|
95
|
-
function pa() {
|
|
96
|
-
return jsShell3("na");
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
// src/pi.ts
|
|
100
|
-
import { log } from "console";
|
|
101
|
-
import process5 from "process";
|
|
102
|
-
import { getPkgTool as getPkgTool2, jsShell as jsShell6, useNodeWorker } from "lazy-js-utils/node";
|
|
103
|
-
import colors3 from "picocolors";
|
|
104
|
-
|
|
105
|
-
// src/detectNode.ts
|
|
106
|
-
import process3 from "process";
|
|
107
|
-
import { getPkg, jsShell as jsShell4 } from "lazy-js-utils/node";
|
|
108
|
-
import colors from "picocolors";
|
|
109
|
-
async function detectNode() {
|
|
110
|
-
let pkg;
|
|
111
|
-
try {
|
|
112
|
-
pkg = await getPkg();
|
|
113
|
-
} catch {
|
|
114
|
-
const cwd = process3.cwd();
|
|
115
|
-
console.log(colors.red(`\u5F53\u524D\u76EE\u5F55: ${cwd} \u6CA1\u6709package.json\u6587\u4EF6`));
|
|
116
|
-
process3.exit(1);
|
|
117
|
-
}
|
|
118
|
-
if (pkg.engines?.node) {
|
|
119
|
-
const isSafe = __require("semver").satisfies(
|
|
120
|
-
process3.version,
|
|
121
|
-
pkg.engines.node
|
|
122
|
-
);
|
|
123
|
-
if (!isSafe) {
|
|
124
|
-
const { result, status } = await jsShell4(
|
|
125
|
-
`echo "yes
|
|
126
|
-
no" | gum filter --placeholder=" \u5F53\u524Dnode\u7248\u672C\u4E0D\u6EE1\u8DB3 ${pkg.engines.node}\uFF0C\u662F\u5426\u5207\u6362node\u7248\u672C"`,
|
|
127
|
-
["inherit", "pipe", "inherit"]
|
|
128
|
-
);
|
|
129
|
-
if (status === 0 && result === "yes") {
|
|
130
|
-
await jsShell4(
|
|
131
|
-
`
|
|
132
|
-
current=$(echo $(fnm current))
|
|
133
|
-
registery=$(echo "$(fnm ls)" | sed 's/system//g' | sed 's/default//g' | sed 's/* //g' | sed "s/$current/* $current/g" | gum filter --placeholder=" \u8BF7\u9009\u62E9\u4E00\u4E2Anode\u7248\u672C")
|
|
134
|
-
registery=$(echo \${registery// /} | sed 's/*//g')
|
|
135
|
-
if [ $registery ]; then
|
|
136
|
-
fnm use \${registery% -*}
|
|
137
|
-
fi
|
|
138
|
-
`,
|
|
139
|
-
["inherit", "pipe", "inherit"]
|
|
140
|
-
);
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
// src/utils.ts
|
|
147
|
-
import path from "path";
|
|
148
|
-
import process4 from "process";
|
|
149
|
-
import { isFile } from "lazy-js-utils";
|
|
150
|
-
import { getPkg as getPkg2, getPkgTool, jsShell as jsShell5 } from "lazy-js-utils/node";
|
|
151
|
-
import colors2 from "picocolors";
|
|
152
|
-
var DW = /\s-DW/g;
|
|
153
|
-
var W = /\s-W/g;
|
|
154
|
-
var Dw = /\s-Dw/g;
|
|
155
|
-
var w = /\s-w/g;
|
|
156
|
-
var D = /\s-D(?!w)/g;
|
|
157
|
-
var d = /\s-d(?!w)/g;
|
|
158
|
-
var isZh2 = process4.env.PI_Lang === "zh";
|
|
159
|
-
async function getParams(params) {
|
|
160
|
-
const root = process4.cwd();
|
|
161
|
-
try {
|
|
162
|
-
switch (await getPkgTool()) {
|
|
163
|
-
case "pnpm":
|
|
164
|
-
if (!isFile(path.resolve(root, "./pnpm-workspace.yaml"))) {
|
|
165
|
-
if (DW.test(params))
|
|
166
|
-
return params.replace(DW, " -D");
|
|
167
|
-
if (Dw.test(params))
|
|
168
|
-
return params.replace(Dw, " -D");
|
|
169
|
-
if (W.test(params))
|
|
170
|
-
return params.replace(W, "");
|
|
171
|
-
if (w.test(params))
|
|
172
|
-
return params.replace(w, "");
|
|
173
|
-
if (d.test(params))
|
|
174
|
-
return params.replace(d, " -D");
|
|
175
|
-
}
|
|
176
|
-
if (isFile("./pnpm-workspace.yaml")) {
|
|
177
|
-
if (D.test(params))
|
|
178
|
-
return params.replace(D, " -Dw");
|
|
179
|
-
if (d.test(params))
|
|
180
|
-
return params.replace(d, " -Dw");
|
|
181
|
-
if (!params || Dw.test(params) || w.test(params))
|
|
182
|
-
return params;
|
|
183
|
-
return `${params} -w`;
|
|
184
|
-
}
|
|
185
|
-
if (DW.test(params))
|
|
186
|
-
return params.replace(DW, " -Dw");
|
|
187
|
-
if (W.test(params))
|
|
188
|
-
return params.replace(W, " -w");
|
|
189
|
-
return params;
|
|
190
|
-
case "yarn":
|
|
191
|
-
if (!(await getPkg2(path.resolve(root, "./package.json")))?.workspaces) {
|
|
192
|
-
if (Dw.test(params))
|
|
193
|
-
return params.replace(Dw, " -D");
|
|
194
|
-
if (DW.test(params))
|
|
195
|
-
return params.replace(DW, " -D");
|
|
196
|
-
if (W.test(params))
|
|
197
|
-
return params.replace(W, "");
|
|
198
|
-
if (w.test(params))
|
|
199
|
-
return params.replace(w, "");
|
|
200
|
-
if (d.test(params))
|
|
201
|
-
return params.replace(d, " -D");
|
|
202
|
-
}
|
|
203
|
-
if ((await getPkg2())?.workspaces) {
|
|
204
|
-
if (D.test(params))
|
|
205
|
-
return params.replace(D, " -DW");
|
|
206
|
-
if (d.test(params))
|
|
207
|
-
return params.replace(d, " -DW");
|
|
208
|
-
if (!params || W.test(params) || DW.test(params))
|
|
209
|
-
return params;
|
|
210
|
-
return `${params} -W`;
|
|
211
|
-
}
|
|
212
|
-
if (Dw.test(params))
|
|
213
|
-
return params.replace(Dw, " -DW");
|
|
214
|
-
if (W.test(params))
|
|
215
|
-
return params.replace(W, " -W");
|
|
216
|
-
return params;
|
|
217
|
-
default:
|
|
218
|
-
return d.test(params) ? params.replace(d, " -D") : params;
|
|
219
|
-
}
|
|
220
|
-
} catch {
|
|
221
|
-
console.log(
|
|
222
|
-
colors2.red(
|
|
223
|
-
`${isZh2 ? "package.json\u5E76\u4E0D\u5B58\u5728,\u5728\u4EE5\u4E0B\u76EE\u5F55\u4E2D:" : "package.json has not been found in"} ${process4.cwd()}`
|
|
224
|
-
)
|
|
225
|
-
);
|
|
226
|
-
process4.exit(1);
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
async function loading(text, isSilent = false) {
|
|
230
|
-
const { color: color4, spinner } = await getStyle();
|
|
231
|
-
const ora = (await import("ora")).default;
|
|
232
|
-
return ora({
|
|
233
|
-
text,
|
|
234
|
-
spinner,
|
|
235
|
-
color: color4,
|
|
236
|
-
isSilent,
|
|
237
|
-
discardStdin: true
|
|
238
|
-
}).start();
|
|
239
|
-
}
|
|
240
|
-
async function getStyle() {
|
|
241
|
-
const { PI_COLOR: color4 = "yellow", PI_SPINNER: spinner = "star" } = process4.env;
|
|
242
|
-
return {
|
|
243
|
-
color: color4,
|
|
244
|
-
spinner
|
|
245
|
-
};
|
|
246
|
-
}
|
|
247
|
-
async function getLatestVersion(pkg, isZh6 = true) {
|
|
248
|
-
const data = [];
|
|
249
|
-
for (const p of pkg.replace(/\s+/, " ").split(" ")) {
|
|
250
|
-
const [pName, v] = p.split("$");
|
|
251
|
-
let { status, result } = await jsShell5(`npm view ${pName}`, [
|
|
252
|
-
"inherit",
|
|
253
|
-
"pipe",
|
|
254
|
-
"inherit"
|
|
255
|
-
]);
|
|
256
|
-
if (status === 0) {
|
|
257
|
-
if (result.startsWith("@"))
|
|
258
|
-
result = result.slice(1);
|
|
259
|
-
const item = isZh6 ? `${pName} ${colors2.gray(v)} -> ${result.match(/@(\S+)/)[1]}` : `Installed ${pName} ${colors2.dim(v)} -> latest version\uFF1A${result.match(/@(\S+)/)[1]}`;
|
|
260
|
-
data.push(item);
|
|
261
|
-
} else {
|
|
262
|
-
throw new Error(result);
|
|
263
|
-
}
|
|
264
|
-
}
|
|
265
|
-
return `${data.join(" ")}${isZh6 ? " \u5B89\u88C5\u6210\u529F! \u{1F60A}" : " successfully! \u{1F60A}"}`;
|
|
266
|
-
}
|
|
267
|
-
|
|
268
|
-
// src/pi.ts
|
|
269
|
-
var isZh3 = process5.env.PI_Lang === "zh";
|
|
270
|
-
async function pi(params, pkg, executor = "ni") {
|
|
271
|
-
await detectNode();
|
|
272
|
-
const text = pkg ? `Installing ${params} ...` : "Updating dependency ...";
|
|
273
|
-
const isLatest = executor === "pil";
|
|
274
|
-
const start = Date.now();
|
|
275
|
-
let successMsg = "";
|
|
276
|
-
if (isLatest) {
|
|
277
|
-
successMsg = await getLatestVersion(pkg, isZh3);
|
|
278
|
-
} else {
|
|
279
|
-
successMsg = pkg ? isZh3 ? `${pkg} \u5B89\u88C5\u6210\u529F! \u{1F60A}` : `Installed ${pkg} successfully! \u{1F60A}` : isZh3 ? "\u4F9D\u8D56\u66F4\u65B0\u6210\u529F! \u{1F60A}" : "Updated dependency successfully! \u{1F60A}";
|
|
280
|
-
}
|
|
281
|
-
const failMsg = pkg ? isZh3 ? `${params} \u5B89\u88C5\u5931\u8D25 \u{1F62D}` : `Failed to install ${params} \u{1F62D}` : isZh3 ? "\u4F9D\u8D56\u66F4\u65B0\u5931\u8D25 \u{1F62D}" : "Failed to update dependency \u{1F62D}";
|
|
282
|
-
const isSilent = process5.env.PI_SILENT === "true";
|
|
283
|
-
let stdio = isSilent ? "inherit" : ["inherit", "pipe", "inherit"];
|
|
284
|
-
let loading_status;
|
|
285
|
-
const { PI_DEFAULT, PI_MaxSockets: sockets } = process5.env;
|
|
286
|
-
const pkgTool = await getPkgTool2();
|
|
287
|
-
const maxSockets = sockets || 4;
|
|
288
|
-
const install = !params ? "install" : "add";
|
|
289
|
-
if (pkgTool === "npm") {
|
|
290
|
-
if (PI_DEFAULT) {
|
|
291
|
-
executor = `${PI_DEFAULT} ${install}`;
|
|
292
|
-
loading_status = await loading(text, isSilent);
|
|
293
|
-
} else {
|
|
294
|
-
stdio = "inherit";
|
|
295
|
-
executor = "ni";
|
|
296
|
-
}
|
|
297
|
-
} else {
|
|
298
|
-
executor = `${pkgTool} ${install}`;
|
|
299
|
-
loading_status = await loading(text, isSilent);
|
|
300
|
-
}
|
|
301
|
-
const newParams = isLatest ? "" : await getParams(params);
|
|
302
|
-
const runSockets = executor.split(" ")[0] === "npm" ? ` --max-sockets=${maxSockets}` : "";
|
|
303
|
-
console.log(
|
|
304
|
-
colors3.green(
|
|
305
|
-
isLatest ? params.map((p) => `${executor} ${p}`).join(" & ") : `${executor}${newParams ? ` ${newParams}` : runSockets}`
|
|
306
|
-
)
|
|
307
|
-
);
|
|
308
|
-
let { status, result } = await useNodeWorker({
|
|
309
|
-
params: isLatest ? params.map((p) => `${executor} ${p}`).join(" & ") : `${executor}${newParams ? ` ${newParams}` : runSockets}`,
|
|
310
|
-
stdio,
|
|
311
|
-
errorExit: false
|
|
312
|
-
});
|
|
313
|
-
if (result && result.includes("pnpm versions with respective Node.js version support")) {
|
|
314
|
-
log(result);
|
|
315
|
-
log(
|
|
316
|
-
colors3.yellow(
|
|
317
|
-
isZh3 ? "\u6B63\u5728\u5C1D\u8BD5\u4F7F\u7528 npm \u518D\u6B21\u6267\u884C..." : "Trying to use npm to run again..."
|
|
318
|
-
)
|
|
319
|
-
);
|
|
320
|
-
const { status: newStatus, result: newResult } = await jsShell6(
|
|
321
|
-
`npm install${newParams ? ` ${newParams}` : runSockets}`,
|
|
322
|
-
{
|
|
323
|
-
stdio
|
|
324
|
-
}
|
|
325
|
-
);
|
|
326
|
-
status = newStatus;
|
|
327
|
-
result = newResult;
|
|
328
|
-
}
|
|
329
|
-
if (stdio === "inherit")
|
|
330
|
-
loading_status = await loading("");
|
|
331
|
-
const end = Date.now();
|
|
332
|
-
const costTime = (end - start) / 1e3;
|
|
333
|
-
successMsg += colors3.blue(` ---- \u23F0\uFF1A${costTime}s`);
|
|
334
|
-
if (status === 0) {
|
|
335
|
-
loading_status.succeed(colors3.green(successMsg));
|
|
336
|
-
} else if (result && result.includes("Not Found - 404")) {
|
|
337
|
-
const _pkg = result.match(/\/[^/:]+:/)?.[0].slice(1, -1);
|
|
338
|
-
const _result = isZh3 ? `${_pkg} \u5305\u540D\u53EF\u80FD\u6709\u8BEF\u6216\u8005\u7248\u672C\u53F7\u4E0D\u5B58\u5728\uFF0C\u5E76\u4E0D\u80FD\u5728npm\u4E2D\u641C\u7D22\u5230\uFF0C\u8BF7\u68C0\u67E5` : `${_pkg} the package name may be wrong, and cannot be found in npm, please check`;
|
|
339
|
-
loading_status.fail(colors3.red(result ? `${failMsg}
|
|
340
|
-
${_result}` : failMsg));
|
|
341
|
-
} else {
|
|
342
|
-
loading_status.fail(colors3.red(result ? `${failMsg}
|
|
343
|
-
${result}` : failMsg));
|
|
344
|
-
}
|
|
345
|
-
if (result) {
|
|
346
|
-
const reg = /ERR_PNPM_NO_MATCHING_VERSION_INSIDE_WORKSPACE\u2009 In : No matching version found for\s+([^@]+)/;
|
|
347
|
-
const match = result.match(reg);
|
|
348
|
-
if (match) {
|
|
349
|
-
const dep = match[1];
|
|
350
|
-
jsShell6(`pi ${dep}@latest`);
|
|
351
|
-
}
|
|
352
|
-
}
|
|
353
|
-
process5.exit();
|
|
354
|
-
}
|
|
355
|
-
|
|
356
|
-
// src/pci.ts
|
|
357
|
-
function pci(params, pkg) {
|
|
358
|
-
return pi(params, pkg, "nci");
|
|
359
|
-
}
|
|
360
|
-
|
|
361
|
-
// src/pfind.ts
|
|
362
|
-
import { ccommand } from "ccommand";
|
|
363
|
-
function pfind(params) {
|
|
364
|
-
return ccommand(`find ${params}`);
|
|
365
|
-
}
|
|
366
|
-
|
|
367
|
-
// src/pil.ts
|
|
368
|
-
import process6 from "process";
|
|
369
|
-
import { getPkg as getPkg3, jsShell as jsShell7 } from "lazy-js-utils/node";
|
|
370
|
-
import pc from "picocolors";
|
|
371
|
-
async function pil(params) {
|
|
372
|
-
const { dependencies = {}, devDependencies = {} } = await getPkg3();
|
|
373
|
-
if (!params) {
|
|
374
|
-
const deps = [
|
|
375
|
-
...Object.keys(dependencies).map(
|
|
376
|
-
(key) => `${key}: ${dependencies[key].replace(/([><~])/g, "\\$1")}`
|
|
377
|
-
),
|
|
378
|
-
...Object.keys(devDependencies).map(
|
|
379
|
-
(key) => `${key}: ${devDependencies[key].replace(/([><~])/g, "\\$1")}`
|
|
380
|
-
)
|
|
381
|
-
];
|
|
382
|
-
const { result: choose, status } = await jsShell7(
|
|
383
|
-
`echo ${deps.join(
|
|
384
|
-
","
|
|
385
|
-
)} | sed "s/,/\\n/g" | gum filter --no-limit --placeholder=" \u{1F914}${process6.env.PI_Lang === "zh" ? "\u8BF7\u9009\u62E9\u4E00\u4E2A\u9700\u8981\u83B7\u53D6\u6700\u65B0\u7248\u672C\u7684\u4F9D\u8D56" : "Please select a dependency that needs to obtain the latest version."}"`,
|
|
386
|
-
{
|
|
387
|
-
stdio: ["inherit", "pipe", "inherit"]
|
|
388
|
-
}
|
|
389
|
-
);
|
|
390
|
-
if (status === 130) {
|
|
391
|
-
console.log(pc.dim("\u5DF2\u53D6\u6D88"));
|
|
392
|
-
process6.exit(0);
|
|
393
|
-
} else if (status !== 0) {
|
|
394
|
-
throw new Error(choose);
|
|
395
|
-
}
|
|
396
|
-
const names = choose.trim().split("\n").map((i) => {
|
|
397
|
-
const name = i.split(": ")[0];
|
|
398
|
-
if (name in devDependencies)
|
|
399
|
-
return `${name}@latest -D`;
|
|
400
|
-
return `${name}@latest -S`;
|
|
401
|
-
});
|
|
402
|
-
params = names.join(" ");
|
|
403
|
-
}
|
|
404
|
-
let latestPkgname = params;
|
|
405
|
-
const reg = /\s(-[dws]+)/gi;
|
|
406
|
-
const suffix = [];
|
|
407
|
-
const command = latestPkgname = (await getParams(params)).replace(
|
|
408
|
-
reg,
|
|
409
|
-
(_, k) => {
|
|
410
|
-
suffix.push(k);
|
|
411
|
-
return "";
|
|
412
|
-
}
|
|
413
|
-
);
|
|
414
|
-
latestPkgname = latestPkgname.replace(/@latest/g, "").split(" ").filter(Boolean).map((i) => {
|
|
415
|
-
const v = dependencies[i] || devDependencies[i];
|
|
416
|
-
return `${i}$${v}`;
|
|
417
|
-
}).join(" ");
|
|
418
|
-
const tokens = command.replace(/\s+/, " ").trim().split(" ").filter(Boolean);
|
|
419
|
-
const pkgs = tokens.filter((t) => !t.startsWith("-"));
|
|
420
|
-
let globalWorkspaceFlag = null;
|
|
421
|
-
const perFlags = [];
|
|
422
|
-
let assignIdx = 0;
|
|
423
|
-
for (const f of suffix) {
|
|
424
|
-
if (/^-(?:w|W)$/.test(f)) {
|
|
425
|
-
globalWorkspaceFlag = f;
|
|
426
|
-
continue;
|
|
427
|
-
}
|
|
428
|
-
perFlags[assignIdx++] = f;
|
|
429
|
-
}
|
|
430
|
-
const normalizeFlag = (f) => {
|
|
431
|
-
if (!f)
|
|
432
|
-
return "";
|
|
433
|
-
if (/^-s$/i.test(f) || /^-S$/.test(f))
|
|
434
|
-
return "";
|
|
435
|
-
return f;
|
|
436
|
-
};
|
|
437
|
-
const combineWorkspace = (f, w2) => {
|
|
438
|
-
if (!w2)
|
|
439
|
-
return f;
|
|
440
|
-
if (/w/i.test(f))
|
|
441
|
-
return f;
|
|
442
|
-
if (!f)
|
|
443
|
-
return w2;
|
|
444
|
-
if (/d/i.test(f))
|
|
445
|
-
return `-D${w2.slice(1)}`;
|
|
446
|
-
return w2;
|
|
447
|
-
};
|
|
448
|
-
const finalFlags = pkgs.map((_, i) => combineWorkspace(normalizeFlag(perFlags[i]), globalWorkspaceFlag));
|
|
449
|
-
const group = {};
|
|
450
|
-
pkgs.forEach((p, i) => {
|
|
451
|
-
const key = finalFlags[i] || "";
|
|
452
|
-
if (!group[key])
|
|
453
|
-
group[key] = [];
|
|
454
|
-
group[key].push(p);
|
|
455
|
-
});
|
|
456
|
-
const cmds = Object.entries(group).map(([flag, list]) => `${list.join(" ")}${flag ? ` ${flag}` : ""}`);
|
|
457
|
-
return await pi(cmds, latestPkgname.replace(/@latest/g, ""), "pil");
|
|
458
|
-
}
|
|
459
|
-
|
|
460
|
-
// src/pinit.ts
|
|
461
|
-
import { getPkgTool as getPkgTool3, jsShell as jsShell8 } from "lazy-js-utils/node";
|
|
462
|
-
async function pinit() {
|
|
463
|
-
console.log("Initializing project...");
|
|
464
|
-
switch (await getPkgTool3()) {
|
|
465
|
-
case "npm":
|
|
466
|
-
jsShell8("npm init -y");
|
|
467
|
-
return;
|
|
468
|
-
case "yarn":
|
|
469
|
-
jsShell8("yarn init -y");
|
|
470
|
-
return;
|
|
471
|
-
case "pnpm":
|
|
472
|
-
jsShell8("pnpm init -y");
|
|
473
|
-
return;
|
|
474
|
-
default:
|
|
475
|
-
jsShell8("npm init -y");
|
|
476
|
-
}
|
|
477
|
-
}
|
|
478
|
-
|
|
479
|
-
// src/pio.ts
|
|
480
|
-
import process7 from "process";
|
|
481
|
-
import { useNodeWorker as useNodeWorker2 } from "lazy-js-utils/node";
|
|
482
|
-
import color2 from "picocolors";
|
|
483
|
-
async function pio(params, pkg, executor = "ni") {
|
|
484
|
-
const successMsg = pkg ? `Installed ${pkg} successfully! \u{1F60A}` : "Updated dependency successfully! \u{1F60A}";
|
|
485
|
-
const failMsg = pkg ? `Failed to install ${pkg} \u{1F62D}` : "Failed to update dependency! \u{1F62D}";
|
|
486
|
-
const offline = "--prefer-offline";
|
|
487
|
-
const newParams = await getParams(params);
|
|
488
|
-
const { status, result } = await useNodeWorker2({
|
|
489
|
-
params: `${executor} ${newParams} ${offline}`,
|
|
490
|
-
stdio: "inherit"
|
|
491
|
-
});
|
|
492
|
-
const loading_status = await loading("");
|
|
493
|
-
if (status === 0)
|
|
494
|
-
loading_status.succeed(color2.green(successMsg));
|
|
495
|
-
else
|
|
496
|
-
loading_status.fail(color2.red(result ? `${result}
|
|
497
|
-
|
|
498
|
-
${failMsg}` : failMsg));
|
|
499
|
-
process7.exit();
|
|
500
|
-
}
|
|
501
|
-
|
|
502
|
-
// src/pix.ts
|
|
503
|
-
import { getPkgTool as getPkgTool4, jsShell as jsShell9 } from "lazy-js-utils/node";
|
|
504
|
-
async function pix(params) {
|
|
505
|
-
switch (await getPkgTool4()) {
|
|
506
|
-
case "bun":
|
|
507
|
-
return jsShell9(`bunx ${params}`);
|
|
508
|
-
default:
|
|
509
|
-
return jsShell9(`npx ${params}`);
|
|
510
|
-
}
|
|
511
|
-
}
|
|
512
|
-
|
|
513
|
-
// src/prun.ts
|
|
514
|
-
import { ccommand as ccommand2 } from "ccommand";
|
|
515
|
-
function prun(params) {
|
|
516
|
-
return ccommand2(params);
|
|
517
|
-
}
|
|
518
|
-
|
|
519
|
-
// src/pu.ts
|
|
520
|
-
import { jsShell as jsShell10 } from "lazy-js-utils/node";
|
|
521
|
-
function pu() {
|
|
522
|
-
return jsShell10("nu");
|
|
523
|
-
}
|
|
524
|
-
|
|
525
|
-
// src/pui.ts
|
|
526
|
-
import process8 from "process";
|
|
527
|
-
import { getPkg as getPkg4, jsShell as jsShell11, useNodeWorker as useNodeWorker3 } from "lazy-js-utils/node";
|
|
528
|
-
import colors4 from "picocolors";
|
|
529
|
-
var isZh4 = process8.env.PI_Lang === "zh";
|
|
530
|
-
async function pui(params, pkg) {
|
|
531
|
-
const text = `${isZh4 ? "\u6B63\u5728\u4E3A\u60A8\u5378\u8F7D" : "Uninstalling"} ${pkg} ...`;
|
|
532
|
-
if (!params) {
|
|
533
|
-
const { dependencies = {}, devDependencies = {} } = await getPkg4();
|
|
534
|
-
const deps = [
|
|
535
|
-
...Object.keys(dependencies).map((key) => `${key}: ${dependencies[key]}`),
|
|
536
|
-
...Object.keys(devDependencies).map(
|
|
537
|
-
(key) => `${key}: ${devDependencies[key]}`
|
|
538
|
-
)
|
|
539
|
-
];
|
|
540
|
-
const { result: choose, status: status2 } = await jsShell11(
|
|
541
|
-
`echo ${deps.join(
|
|
542
|
-
","
|
|
543
|
-
)} | sed "s/,/\\n/g" | gum filter --placeholder=" \u{1F914}${process8.env.PI_Lang === "zh" ? "\u8BF7\u9009\u62E9\u4E00\u4E2A\u9700\u8981\u5220\u9664\u4F9D\u8D56" : "Please select a dependency to get the latest version."}"`,
|
|
544
|
-
["inherit", "pipe", "inherit"]
|
|
545
|
-
);
|
|
546
|
-
if (status2 === 130) {
|
|
547
|
-
console.log(colors4.dim("\u5DF2\u53D6\u6D88"));
|
|
548
|
-
process8.exit(0);
|
|
549
|
-
} else if (status2 !== 0) {
|
|
550
|
-
throw new Error(choose);
|
|
551
|
-
}
|
|
552
|
-
pkg = params = choose.split(": ")[0];
|
|
553
|
-
}
|
|
554
|
-
const start = Date.now();
|
|
555
|
-
let successMsg = isZh4 ? `${pkg}\u5378\u8F7D\u6210\u529F! \u{1F60A}` : `UnInstalled ${pkg} successfully! \u{1F60A}`;
|
|
556
|
-
const failMsg = isZh4 ? `${pkg}\u5378\u8F7D\u5931\u8D25 \u{1F62D}` : `Failed to uninstall ${pkg} \u{1F62D}`;
|
|
557
|
-
if (!pkg) {
|
|
558
|
-
console.log(
|
|
559
|
-
colors4.yellow(
|
|
560
|
-
isZh4 ? "\u9700\u8981\u6307\u5B9A\u8981\u5378\u8F7D\u7684\u5305\u540D\uFF01" : "Need to specify an uninstall package name!"
|
|
561
|
-
)
|
|
562
|
-
);
|
|
563
|
-
process8.exit(1);
|
|
564
|
-
}
|
|
565
|
-
const loading_status = await loading(text);
|
|
566
|
-
const { status, result } = await useNodeWorker3(`nun ${params}`);
|
|
567
|
-
const end = Date.now();
|
|
568
|
-
const costTime = (end - start) / 1e3;
|
|
569
|
-
successMsg += colors4.blue(` ---- \u23F0\uFF1A${costTime}s`);
|
|
570
|
-
if (status === 0)
|
|
571
|
-
loading_status.succeed(colors4.green(successMsg));
|
|
572
|
-
else
|
|
573
|
-
loading_status.fail(colors4.red(result ? `${failMsg}
|
|
574
|
-
${result}` : failMsg));
|
|
575
|
-
process8.exit();
|
|
576
|
-
}
|
|
577
|
-
|
|
578
|
-
// src/index.ts
|
|
579
|
-
var rootPath = process9.cwd();
|
|
580
|
-
var runMap = {
|
|
581
|
-
pi,
|
|
582
|
-
"pi.mjs": pi,
|
|
583
|
-
pix,
|
|
584
|
-
"pix.mjs": pix,
|
|
585
|
-
pa,
|
|
586
|
-
"pa.mjs": pa,
|
|
587
|
-
pui,
|
|
588
|
-
"pui.mjs": pui,
|
|
589
|
-
pu,
|
|
590
|
-
"pu.mjs": pu,
|
|
591
|
-
pil,
|
|
592
|
-
"pil.mjs": pil,
|
|
593
|
-
pci,
|
|
594
|
-
"pci.mjs": pci,
|
|
595
|
-
prun,
|
|
596
|
-
"prun.mjs": prun,
|
|
597
|
-
pinit,
|
|
598
|
-
"pinit.mjs": pinit,
|
|
599
|
-
pfind,
|
|
600
|
-
"pfind.mjs": pfind,
|
|
601
|
-
pio,
|
|
602
|
-
"pio.mjs": pio
|
|
603
|
-
};
|
|
604
|
-
var isZh5 = process9.env.PI_Lang === "zh";
|
|
605
|
-
async function setup() {
|
|
606
|
-
const cmd = process9.argv[1];
|
|
607
|
-
let exec = "";
|
|
608
|
-
if (isWin()) {
|
|
609
|
-
const last = cmd.lastIndexOf("\\") + 1;
|
|
610
|
-
exec = cmd.slice(last, cmd.length).split(".").slice(0, -1).join(".");
|
|
611
|
-
} else {
|
|
612
|
-
const last = cmd.lastIndexOf("/") + 1;
|
|
613
|
-
exec = cmd.slice(last, cmd.length);
|
|
614
|
-
}
|
|
615
|
-
const argv = process9.argv.slice(2);
|
|
616
|
-
await help(argv);
|
|
617
|
-
let params = spaceFormat(argv.join(" ")).trim();
|
|
618
|
-
if (!await hasPkg(rootPath)) {
|
|
619
|
-
if (await isGo(rootPath)) {
|
|
620
|
-
if (exec === "pi") {
|
|
621
|
-
const loading_status = await loading(
|
|
622
|
-
`${isZh5 ? "\u6B63\u5728\u4E3A\u60A8\u5B89\u88C5" : "Installing"} ${params} ...
|
|
623
|
-
`
|
|
624
|
-
);
|
|
625
|
-
const { status } = params ? await useNodeWorker4(`go get ${params}`) : await useNodeWorker4("go mod tidy");
|
|
626
|
-
if (status === 0) {
|
|
627
|
-
loading_status.succeed(
|
|
628
|
-
color3.green(isZh5 ? "\u5B89\u88C5\u6210\u529F! \u{1F60A}" : "Installed successfully! \u{1F60A}")
|
|
629
|
-
);
|
|
630
|
-
} else {
|
|
631
|
-
loading_status.fail(
|
|
632
|
-
color3.red(isZh5 ? "\u5B89\u88C5\u5931\u8D25 \u{1F62D}" : "Failed to install \u{1F62D}")
|
|
633
|
-
);
|
|
634
|
-
}
|
|
635
|
-
} else if (exec === "pui") {
|
|
636
|
-
const loading_status = await loading(
|
|
637
|
-
`${isZh5 ? "\u6B63\u5728\u4E3A\u60A8\u5378\u8F7D" : "Uninstalling"} ${params} ...
|
|
638
|
-
`
|
|
639
|
-
);
|
|
640
|
-
const { status } = await useNodeWorker4(`go clean ${params}`);
|
|
641
|
-
if (status === 0) {
|
|
642
|
-
loading_status.succeed(
|
|
643
|
-
color3.green(isZh5 ? "\u5378\u8F7D\u6210\u529F! \u{1F60A}" : "Uninstalled successfully! \u{1F60A}")
|
|
644
|
-
);
|
|
645
|
-
} else {
|
|
646
|
-
loading_status.fail(
|
|
647
|
-
color3.red(isZh5 ? "\u5378\u8F7D\u5931\u8D25 \u{1F62D}" : "Failed to uninstall \u{1F62D}")
|
|
648
|
-
);
|
|
649
|
-
}
|
|
650
|
-
} else if (exec === "prun") {
|
|
651
|
-
const match = params ? params.endsWith(".go") ? [`**/${params}`] : [`**/${params}.go`, `**/${params}/main.go`] : "main.go";
|
|
652
|
-
const target = (await fg(match))[0];
|
|
653
|
-
return target ? await jsShell12(`go run ${target}`, "inherit") : ccommand3(params);
|
|
654
|
-
} else if (exec === "pinit") {
|
|
655
|
-
await jsShell12(`go mod init ${params}`, "inherit");
|
|
656
|
-
} else if (exec === "pbuild") {
|
|
657
|
-
await jsShell12(`go build ${params}`, "inherit");
|
|
658
|
-
} else {
|
|
659
|
-
console.log(
|
|
660
|
-
color3.red(
|
|
661
|
-
isZh5 ? "\u5F53\u524D\u6307\u4EE4\u8FD8\u4E0D\u652F\u6301" : "The commands is not supported"
|
|
662
|
-
)
|
|
663
|
-
);
|
|
664
|
-
}
|
|
665
|
-
process9.exit();
|
|
666
|
-
}
|
|
667
|
-
let projectPath = "";
|
|
668
|
-
if (params && !await isRust()) {
|
|
669
|
-
projectPath = params.split(" ")[0];
|
|
670
|
-
rootPath = path2.resolve(rootPath, projectPath);
|
|
671
|
-
params = params.replace(projectPath, "").trim();
|
|
672
|
-
}
|
|
673
|
-
if (await isRust(rootPath)) {
|
|
674
|
-
if (exec === "pi") {
|
|
675
|
-
const loading_status = await loading(
|
|
676
|
-
`${isZh5 ? "\u6B63\u5728\u4E3A\u60A8\u5B89\u88C5" : "Installing"} ${params} ...
|
|
677
|
-
`
|
|
678
|
-
);
|
|
679
|
-
const { status } = await useNodeWorker4(
|
|
680
|
-
`cargo install ${params}${projectPath ? `--manifest-path=./${projectPath}/Cargo.toml` : ""}`
|
|
681
|
-
);
|
|
682
|
-
if (status === 0) {
|
|
683
|
-
loading_status.succeed(
|
|
684
|
-
color3.green(isZh5 ? "\u5B89\u88C5\u6210\u529F! \u{1F60A}" : "Installed successfully! \u{1F60A}")
|
|
685
|
-
);
|
|
686
|
-
} else {
|
|
687
|
-
loading_status.fail(
|
|
688
|
-
color3.red(isZh5 ? "\u5B89\u88C5\u5931\u8D25 \u{1F62D}" : "Failed to install \u{1F62D}")
|
|
689
|
-
);
|
|
690
|
-
}
|
|
691
|
-
} else if (exec === "pui") {
|
|
692
|
-
const loading_status = await loading(
|
|
693
|
-
`${isZh5 ? "\u6B63\u5728\u4E3A\u60A8\u5378\u8F7D" : "Uninstalling"} ${params} ...
|
|
694
|
-
`
|
|
695
|
-
);
|
|
696
|
-
const { status } = await useNodeWorker4(
|
|
697
|
-
`cargo uninstall ${params}${projectPath ? `--manifest-path=./${projectPath}/Cargo.toml` : ""}`
|
|
698
|
-
);
|
|
699
|
-
if (status === 0) {
|
|
700
|
-
loading_status.succeed(
|
|
701
|
-
color3.green(isZh5 ? "\u5378\u8F7D\u6210\u529F! \u{1F60A}" : "Uninstalled successfully! \u{1F60A}")
|
|
702
|
-
);
|
|
703
|
-
} else {
|
|
704
|
-
loading_status.fail(
|
|
705
|
-
color3.red(isZh5 ? "\u5378\u8F7D\u5931\u8D25 \u{1F62D}" : "Failed to uninstall \u{1F62D}")
|
|
706
|
-
);
|
|
707
|
-
}
|
|
708
|
-
} else if (exec === "prun") {
|
|
709
|
-
await jsShell12(
|
|
710
|
-
`cargo run ${params}${projectPath ? `--manifest-path=./${projectPath}/Cargo.toml` : ""}`,
|
|
711
|
-
"inherit"
|
|
712
|
-
);
|
|
713
|
-
} else if (exec === "pinit") {
|
|
714
|
-
await jsShell12(
|
|
715
|
-
`cargo init ${params}${projectPath ? `--manifest-path=./${projectPath}/Cargo.toml` : ""}`,
|
|
716
|
-
"inherit"
|
|
717
|
-
);
|
|
718
|
-
} else if (exec === "pbuild") {
|
|
719
|
-
await jsShell12(
|
|
720
|
-
`cargo build ${params}${projectPath ? `--manifest-path=./${projectPath}/Cargo.toml` : ""}`,
|
|
721
|
-
"inherit"
|
|
722
|
-
);
|
|
723
|
-
} else {
|
|
724
|
-
console.log(
|
|
725
|
-
color3.red(
|
|
726
|
-
isZh5 ? "\u5F53\u524D\u6307\u4EE4\u8FD8\u4E0D\u652F\u6301" : "The commands is not supported"
|
|
727
|
-
)
|
|
728
|
-
);
|
|
729
|
-
}
|
|
730
|
-
process9.exit();
|
|
731
|
-
}
|
|
732
|
-
if (!runMap[exec]) {
|
|
733
|
-
console.log(
|
|
734
|
-
color3.yellow(
|
|
735
|
-
isZh5 ? "\u547D\u4EE4\u4E0D\u5B58\u5728, \u8BF7\u6267\u884C pi -h \u67E5\u770B\u5E2E\u52A9" : "The command does not exist, please execute pi -h to view the help"
|
|
736
|
-
)
|
|
737
|
-
);
|
|
738
|
-
return;
|
|
739
|
-
}
|
|
740
|
-
}
|
|
741
|
-
const pkg = argv.filter((v) => !v.startsWith("-")).join(" ");
|
|
742
|
-
await installDeps();
|
|
743
|
-
runMap[exec](params, pkg);
|
|
744
|
-
}
|
|
745
|
-
setup();
|
|
746
|
-
export {
|
|
747
|
-
setup
|
|
748
|
-
};
|