@rhseung/ps-cli 1.2.1 → 1.3.0
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/{chunk-3TMQ74SA.js → chunk-BM3ZMA4K.js} +1 -1
- package/dist/{chunk-63CK6URL.js → chunk-CIG2LEJC.js} +1 -33
- package/dist/commands/config.js +324 -131
- package/dist/commands/fetch.js +9 -10
- package/dist/commands/init.js +98 -1295
- package/dist/commands/run.js +12 -16
- package/dist/commands/stats.js +11 -12
- package/dist/commands/submit.js +17 -36
- package/dist/commands/test.js +20 -58
- package/dist/index.js +25 -0
- package/package.json +2 -4
- package/dist/chunk-IJLJBKLK.js +0 -1689
package/dist/commands/run.js
CHANGED
|
@@ -6,23 +6,22 @@ import {
|
|
|
6
6
|
detectProblemIdFromPath,
|
|
7
7
|
getProblemDirPath,
|
|
8
8
|
getProblemId
|
|
9
|
-
} from "../chunk-
|
|
9
|
+
} from "../chunk-BM3ZMA4K.js";
|
|
10
10
|
import {
|
|
11
11
|
detectLanguageFromFile,
|
|
12
12
|
getSupportedLanguages,
|
|
13
13
|
getSupportedLanguagesString
|
|
14
14
|
} from "../chunk-TQXMB7XV.js";
|
|
15
|
-
import
|
|
16
|
-
LoadingSpinner
|
|
17
|
-
} from "../chunk-IJLJBKLK.js";
|
|
18
|
-
import "../chunk-63CK6URL.js";
|
|
15
|
+
import "../chunk-CIG2LEJC.js";
|
|
19
16
|
import "../chunk-FYS2JH42.js";
|
|
20
17
|
|
|
21
18
|
// src/commands/run.tsx
|
|
22
19
|
import { useEffect, useState } from "react";
|
|
23
20
|
import { render, Box, Text } from "ink";
|
|
21
|
+
import { StatusMessage, Alert } from "@inkjs/ui";
|
|
24
22
|
import { readdir } from "fs/promises";
|
|
25
23
|
import { join } from "path";
|
|
24
|
+
import { Spinner } from "@inkjs/ui";
|
|
26
25
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
27
26
|
function RunCommand({
|
|
28
27
|
problemDir,
|
|
@@ -57,16 +56,13 @@ function RunCommand({
|
|
|
57
56
|
});
|
|
58
57
|
}, [problemDir, language, inputFile, onComplete]);
|
|
59
58
|
if (status === "loading") {
|
|
60
|
-
return /* @__PURE__ */
|
|
61
|
-
/* @__PURE__ */ jsx(Text, { children: "\uCF54\uB4DC \uC2E4\uD589 \uC911..." }),
|
|
62
|
-
/* @__PURE__ */ jsx(LoadingSpinner, {})
|
|
63
|
-
] });
|
|
59
|
+
return /* @__PURE__ */ jsx(Box, { flexDirection: "column", children: /* @__PURE__ */ jsx(Spinner, { label: "\uCF54\uB4DC \uC2E4\uD589 \uC911..." }) });
|
|
64
60
|
}
|
|
65
61
|
if (status === "error") {
|
|
66
|
-
return /* @__PURE__ */
|
|
67
|
-
|
|
68
|
-
error
|
|
69
|
-
] });
|
|
62
|
+
return /* @__PURE__ */ jsx(Box, { flexDirection: "column", children: /* @__PURE__ */ jsxs(Alert, { variant: "error", children: [
|
|
63
|
+
"\uC2E4\uD589 \uC2E4\uD328",
|
|
64
|
+
error ? `: ${error}` : ""
|
|
65
|
+
] }) });
|
|
70
66
|
}
|
|
71
67
|
if (result) {
|
|
72
68
|
return /* @__PURE__ */ jsxs(Box, { flexDirection: "column", children: [
|
|
@@ -80,11 +76,11 @@ function RunCommand({
|
|
|
80
76
|
] })
|
|
81
77
|
] }),
|
|
82
78
|
/* @__PURE__ */ jsxs(Box, { flexDirection: "column", marginTop: 1, children: [
|
|
83
|
-
result.timedOut ? /* @__PURE__ */ jsx(
|
|
84
|
-
"\
|
|
79
|
+
result.timedOut ? /* @__PURE__ */ jsx(StatusMessage, { variant: "warning", children: "\uC2E4\uD589 \uC2DC\uAC04\uC774 \uCD08\uACFC\uB418\uC5C8\uC2B5\uB2C8\uB2E4." }) : result.exitCode !== 0 ? /* @__PURE__ */ jsxs(StatusMessage, { variant: "error", children: [
|
|
80
|
+
"\uD504\uB85C\uADF8\uB7A8\uC774 \uBE44\uC815\uC0C1 \uC885\uB8CC\uB418\uC5C8\uC2B5\uB2C8\uB2E4 (exit code: ",
|
|
85
81
|
result.exitCode,
|
|
86
82
|
")"
|
|
87
|
-
] }) : /* @__PURE__ */ jsx(
|
|
83
|
+
] }) : /* @__PURE__ */ jsx(StatusMessage, { variant: "success", children: "\uC2E4\uD589 \uC644\uB8CC" }),
|
|
88
84
|
result.stdout && /* @__PURE__ */ jsxs(Box, { marginTop: 1, flexDirection: "column", children: [
|
|
89
85
|
/* @__PURE__ */ jsx(Text, { color: "gray", dimColor: true, children: "\uCD9C\uB825:" }),
|
|
90
86
|
/* @__PURE__ */ jsx(Text, { children: result.stdout })
|
package/dist/commands/stats.js
CHANGED
|
@@ -5,17 +5,16 @@ import {
|
|
|
5
5
|
getUserStats,
|
|
6
6
|
source_default
|
|
7
7
|
} from "../chunk-2E4VSP6O.js";
|
|
8
|
-
import {
|
|
9
|
-
LoadingSpinner
|
|
10
|
-
} from "../chunk-IJLJBKLK.js";
|
|
11
8
|
import {
|
|
12
9
|
getSolvedAcHandle
|
|
13
|
-
} from "../chunk-
|
|
10
|
+
} from "../chunk-CIG2LEJC.js";
|
|
14
11
|
import "../chunk-FYS2JH42.js";
|
|
15
12
|
|
|
16
13
|
// src/commands/stats.tsx
|
|
17
14
|
import { useEffect, useState } from "react";
|
|
18
15
|
import { render, Box, Text } from "ink";
|
|
16
|
+
import { Alert } from "@inkjs/ui";
|
|
17
|
+
import { Spinner } from "@inkjs/ui";
|
|
19
18
|
import gradient from "gradient-string";
|
|
20
19
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
21
20
|
function StatsCommand({ handle, onComplete }) {
|
|
@@ -40,11 +39,11 @@ function StatsCommand({ handle, onComplete }) {
|
|
|
40
39
|
});
|
|
41
40
|
}, [handle, onComplete]);
|
|
42
41
|
if (status === "loading") {
|
|
43
|
-
return /* @__PURE__ */ jsx(Box, { flexDirection: "column", children: /* @__PURE__ */ jsx(
|
|
42
|
+
return /* @__PURE__ */ jsx(Box, { flexDirection: "column", children: /* @__PURE__ */ jsx(Spinner, { label: "\uD1B5\uACC4\uB97C \uBD88\uB7EC\uC624\uB294 \uC911..." }) });
|
|
44
43
|
}
|
|
45
44
|
if (status === "error") {
|
|
46
|
-
return /* @__PURE__ */ jsx(Box, { flexDirection: "column", children: /* @__PURE__ */ jsxs(
|
|
47
|
-
"\
|
|
45
|
+
return /* @__PURE__ */ jsx(Box, { flexDirection: "column", children: /* @__PURE__ */ jsxs(Alert, { variant: "error", children: [
|
|
46
|
+
"\uD1B5\uACC4\uB97C \uBD88\uB7EC\uC62C \uC218 \uC5C6\uC2B5\uB2C8\uB2E4: ",
|
|
48
47
|
error
|
|
49
48
|
] }) });
|
|
50
49
|
}
|
|
@@ -60,11 +59,6 @@ function StatsCommand({ handle, onComplete }) {
|
|
|
60
59
|
"\u2728 ",
|
|
61
60
|
user.handle
|
|
62
61
|
] }) }),
|
|
63
|
-
/* @__PURE__ */ jsx(Box, { marginBottom: 1, children: /* @__PURE__ */ jsxs(Text, { children: [
|
|
64
|
-
tierDisplay,
|
|
65
|
-
" ",
|
|
66
|
-
/* @__PURE__ */ jsx(Text, { bold: true, children: user.rating.toLocaleString() })
|
|
67
|
-
] }) }),
|
|
68
62
|
/* @__PURE__ */ jsx(
|
|
69
63
|
Box,
|
|
70
64
|
{
|
|
@@ -73,6 +67,11 @@ function StatsCommand({ handle, onComplete }) {
|
|
|
73
67
|
borderColor: "gray",
|
|
74
68
|
alignSelf: "flex-start",
|
|
75
69
|
children: /* @__PURE__ */ jsxs(Box, { paddingX: 1, paddingY: 0, flexDirection: "column", children: [
|
|
70
|
+
/* @__PURE__ */ jsxs(Text, { children: [
|
|
71
|
+
tierDisplay,
|
|
72
|
+
" ",
|
|
73
|
+
/* @__PURE__ */ jsx(Text, { bold: true, children: user.rating.toLocaleString() })
|
|
74
|
+
] }),
|
|
76
75
|
/* @__PURE__ */ jsxs(Text, { children: [
|
|
77
76
|
"\uD574\uACB0\uD55C \uBB38\uC81C:",
|
|
78
77
|
" ",
|
package/dist/commands/submit.js
CHANGED
|
@@ -3,25 +3,23 @@ import {
|
|
|
3
3
|
detectProblemIdFromPath,
|
|
4
4
|
getProblemDirPath,
|
|
5
5
|
getProblemId
|
|
6
|
-
} from "../chunk-
|
|
6
|
+
} from "../chunk-BM3ZMA4K.js";
|
|
7
7
|
import {
|
|
8
8
|
detectLanguageFromFile,
|
|
9
9
|
getLanguageConfig,
|
|
10
10
|
getSupportedLanguages,
|
|
11
11
|
getSupportedLanguagesString
|
|
12
12
|
} from "../chunk-TQXMB7XV.js";
|
|
13
|
-
import {
|
|
14
|
-
LoadingSpinner
|
|
15
|
-
} from "../chunk-IJLJBKLK.js";
|
|
16
13
|
import {
|
|
17
14
|
getBojSessionCookie,
|
|
18
15
|
getCodeOpen
|
|
19
|
-
} from "../chunk-
|
|
16
|
+
} from "../chunk-CIG2LEJC.js";
|
|
20
17
|
import "../chunk-FYS2JH42.js";
|
|
21
18
|
|
|
22
19
|
// src/commands/submit.tsx
|
|
23
20
|
import { useState, useEffect } from "react";
|
|
24
21
|
import { render, Text, Box } from "ink";
|
|
22
|
+
import { Badge, StatusMessage, Alert } from "@inkjs/ui";
|
|
25
23
|
import { readdir } from "fs/promises";
|
|
26
24
|
import { join } from "path";
|
|
27
25
|
import { readFile } from "fs/promises";
|
|
@@ -308,6 +306,7 @@ async function submitSolution({
|
|
|
308
306
|
}
|
|
309
307
|
|
|
310
308
|
// src/commands/submit.tsx
|
|
309
|
+
import { Spinner } from "@inkjs/ui";
|
|
311
310
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
312
311
|
function SubmitCommand({
|
|
313
312
|
problemId,
|
|
@@ -355,46 +354,28 @@ function SubmitCommand({
|
|
|
355
354
|
submit();
|
|
356
355
|
}, [problemId, language, sourcePath, dryRun, onComplete]);
|
|
357
356
|
if (status === "loading") {
|
|
358
|
-
return /* @__PURE__ */ jsx(Box, { flexDirection: "column", children: /* @__PURE__ */ jsx(
|
|
357
|
+
return /* @__PURE__ */ jsx(Box, { flexDirection: "column", children: /* @__PURE__ */ jsx(Spinner, { label: message }) });
|
|
359
358
|
}
|
|
360
359
|
if (status === "error") {
|
|
361
|
-
return /* @__PURE__ */ jsx(Box, { flexDirection: "column", children: /* @__PURE__ */ jsxs(
|
|
362
|
-
"\
|
|
360
|
+
return /* @__PURE__ */ jsx(Box, { flexDirection: "column", children: /* @__PURE__ */ jsxs(Alert, { variant: "error", children: [
|
|
361
|
+
"\uC81C\uCD9C \uC2E4\uD328: ",
|
|
363
362
|
error
|
|
364
363
|
] }) });
|
|
365
364
|
}
|
|
366
365
|
if (result) {
|
|
367
|
-
const
|
|
366
|
+
const badgeColor = result.status === "AC" ? "green" : result.status === "WA" || result.status === "CE" || result.status === "RE" ? "red" : result.status === "TLE" || result.status === "MLE" ? "yellow" : "blue";
|
|
367
|
+
const statusVariant = result.status === "AC" ? "success" : result.status === "WA" || result.status === "CE" || result.status === "RE" ? "error" : result.status === "TLE" || result.status === "MLE" ? "warning" : "info";
|
|
368
|
+
const resultDetails = [
|
|
369
|
+
`\uBB38\uC81C: ${result.problemId}`,
|
|
370
|
+
`\uC5B8\uC5B4: ${result.language}`,
|
|
371
|
+
result.time !== null && result.time !== void 0 ? `\uC2DC\uAC04: ${result.time}ms` : null,
|
|
372
|
+
result.memory !== null && result.memory !== void 0 ? `\uBA54\uBAA8\uB9AC: ${result.memory}KB` : null
|
|
373
|
+
].filter(Boolean).join(" | ");
|
|
368
374
|
return /* @__PURE__ */ jsxs(Box, { flexDirection: "column", children: [
|
|
369
375
|
/* @__PURE__ */ jsx(Box, { marginBottom: 1, children: /* @__PURE__ */ jsx(Text, { color: "cyan", bold: true, children: "\uC81C\uCD9C \uACB0\uACFC" }) }),
|
|
370
376
|
/* @__PURE__ */ jsxs(Box, { flexDirection: "column", children: [
|
|
371
|
-
/* @__PURE__ */
|
|
372
|
-
|
|
373
|
-
/* @__PURE__ */ jsx(Text, { bold: true, children: result.problemId })
|
|
374
|
-
] }),
|
|
375
|
-
/* @__PURE__ */ jsxs(Text, { children: [
|
|
376
|
-
"\uC5B8\uC5B4: ",
|
|
377
|
-
/* @__PURE__ */ jsx(Text, { bold: true, children: result.language })
|
|
378
|
-
] }),
|
|
379
|
-
/* @__PURE__ */ jsxs(Text, { children: [
|
|
380
|
-
"\uC0C1\uD0DC:",
|
|
381
|
-
" ",
|
|
382
|
-
/* @__PURE__ */ jsx(Text, { color: statusColor, bold: true, children: result.status })
|
|
383
|
-
] }),
|
|
384
|
-
result.time !== null && result.time !== void 0 && /* @__PURE__ */ jsxs(Text, { children: [
|
|
385
|
-
"\uC2DC\uAC04: ",
|
|
386
|
-
/* @__PURE__ */ jsxs(Text, { bold: true, children: [
|
|
387
|
-
result.time,
|
|
388
|
-
"ms"
|
|
389
|
-
] })
|
|
390
|
-
] }),
|
|
391
|
-
result.memory !== null && result.memory !== void 0 && /* @__PURE__ */ jsxs(Text, { children: [
|
|
392
|
-
"\uBA54\uBAA8\uB9AC: ",
|
|
393
|
-
/* @__PURE__ */ jsxs(Text, { bold: true, children: [
|
|
394
|
-
result.memory,
|
|
395
|
-
"KB"
|
|
396
|
-
] })
|
|
397
|
-
] }),
|
|
377
|
+
/* @__PURE__ */ jsx(Box, { marginBottom: 1, children: /* @__PURE__ */ jsx(Badge, { color: badgeColor, children: result.status }) }),
|
|
378
|
+
/* @__PURE__ */ jsx(StatusMessage, { variant: statusVariant, children: resultDetails }),
|
|
398
379
|
result.message && /* @__PURE__ */ jsx(Box, { marginTop: 1, children: /* @__PURE__ */ jsx(Text, { color: "gray", children: result.message }) })
|
|
399
380
|
] })
|
|
400
381
|
] });
|
package/dist/commands/test.js
CHANGED
|
@@ -6,21 +6,19 @@ import {
|
|
|
6
6
|
detectProblemIdFromPath,
|
|
7
7
|
getProblemDirPath,
|
|
8
8
|
getProblemId
|
|
9
|
-
} from "../chunk-
|
|
9
|
+
} from "../chunk-BM3ZMA4K.js";
|
|
10
10
|
import {
|
|
11
11
|
detectLanguageFromFile,
|
|
12
12
|
getSupportedLanguages,
|
|
13
13
|
getSupportedLanguagesString
|
|
14
14
|
} from "../chunk-TQXMB7XV.js";
|
|
15
|
-
import
|
|
16
|
-
LoadingSpinner
|
|
17
|
-
} from "../chunk-IJLJBKLK.js";
|
|
18
|
-
import "../chunk-63CK6URL.js";
|
|
15
|
+
import "../chunk-CIG2LEJC.js";
|
|
19
16
|
import "../chunk-FYS2JH42.js";
|
|
20
17
|
|
|
21
18
|
// src/commands/test.tsx
|
|
22
19
|
import { useEffect, useState } from "react";
|
|
23
20
|
import { render, Box as Box2, Text as Text2 } from "ink";
|
|
21
|
+
import { Alert } from "@inkjs/ui";
|
|
24
22
|
import chokidar from "chokidar";
|
|
25
23
|
import { readdir as readdir2 } from "fs/promises";
|
|
26
24
|
import { join as join2 } from "path";
|
|
@@ -136,8 +134,12 @@ async function runAllTests({
|
|
|
136
134
|
return { results, summary: buildSummary(results) };
|
|
137
135
|
}
|
|
138
136
|
|
|
137
|
+
// src/commands/test.tsx
|
|
138
|
+
import { Spinner } from "@inkjs/ui";
|
|
139
|
+
|
|
139
140
|
// src/components/test-result.tsx
|
|
140
141
|
import { Box, Text } from "ink";
|
|
142
|
+
import { Badge, StatusMessage } from "@inkjs/ui";
|
|
141
143
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
142
144
|
function truncate(text = "", max = 200) {
|
|
143
145
|
return text.length > max ? `${text.slice(0, max)}...` : text;
|
|
@@ -147,14 +149,11 @@ function formatDuration(ms) {
|
|
|
147
149
|
return `${(ms / 1e3).toFixed(2)}s`;
|
|
148
150
|
}
|
|
149
151
|
function ResultRow({ result }) {
|
|
150
|
-
const
|
|
151
|
-
const statusColor = result.status === "pass" ? "green" : result.status === "fail" ? "red" : "yellow";
|
|
152
|
+
const badgeColor = result.status === "pass" ? "green" : result.status === "fail" ? "red" : "yellow";
|
|
152
153
|
const statusText = result.status === "pass" ? "PASS" : result.status === "fail" ? "FAIL" : "ERROR";
|
|
153
154
|
return /* @__PURE__ */ jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [
|
|
154
155
|
/* @__PURE__ */ jsxs(Box, { children: [
|
|
155
|
-
/* @__PURE__ */ jsx(
|
|
156
|
-
/* @__PURE__ */ jsx(Text, { children: " " }),
|
|
157
|
-
/* @__PURE__ */ jsx(Text, { color: statusColor, bold: true, children: statusText }),
|
|
156
|
+
/* @__PURE__ */ jsx(Badge, { color: badgeColor, children: statusText }),
|
|
158
157
|
/* @__PURE__ */ jsx(Text, { children: " " }),
|
|
159
158
|
/* @__PURE__ */ jsxs(Text, { children: [
|
|
160
159
|
"\uCF00\uC774\uC2A4 ",
|
|
@@ -187,47 +186,13 @@ function ResultRow({ result }) {
|
|
|
187
186
|
}
|
|
188
187
|
function TestResultView({ summary, results }) {
|
|
189
188
|
const allPassed = summary.failed === 0 && summary.errored === 0;
|
|
190
|
-
const
|
|
189
|
+
const summaryVariant = allPassed ? "success" : "error";
|
|
190
|
+
const summaryText = `\uCD1D ${summary.total}\uAC1C | Pass ${summary.passed}${summary.failed > 0 ? ` | Fail ${summary.failed}` : ""}${summary.errored > 0 ? ` | Error ${summary.errored}` : ""}`;
|
|
191
191
|
return /* @__PURE__ */ jsxs(Box, { flexDirection: "column", children: [
|
|
192
|
-
/* @__PURE__ */ jsxs(
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
borderColor: summaryColor,
|
|
197
|
-
paddingX: 1,
|
|
198
|
-
alignSelf: "flex-start",
|
|
199
|
-
flexDirection: "column",
|
|
200
|
-
children: [
|
|
201
|
-
/* @__PURE__ */ jsx(Box, { children: /* @__PURE__ */ jsx(Text, { bold: true, children: "\uD14C\uC2A4\uD2B8 \uACB0\uACFC" }) }),
|
|
202
|
-
/* @__PURE__ */ jsxs(Box, { marginTop: 1, children: [
|
|
203
|
-
/* @__PURE__ */ jsxs(Text, { children: [
|
|
204
|
-
"\uCD1D ",
|
|
205
|
-
/* @__PURE__ */ jsx(Text, { bold: true, children: summary.total }),
|
|
206
|
-
"\uAC1C"
|
|
207
|
-
] }),
|
|
208
|
-
/* @__PURE__ */ jsx(Text, { children: " | " }),
|
|
209
|
-
/* @__PURE__ */ jsxs(Text, { color: "green", children: [
|
|
210
|
-
"Pass ",
|
|
211
|
-
/* @__PURE__ */ jsx(Text, { bold: true, children: summary.passed })
|
|
212
|
-
] }),
|
|
213
|
-
summary.failed > 0 && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
214
|
-
/* @__PURE__ */ jsx(Text, { children: " | " }),
|
|
215
|
-
/* @__PURE__ */ jsxs(Text, { color: "red", children: [
|
|
216
|
-
"Fail ",
|
|
217
|
-
/* @__PURE__ */ jsx(Text, { bold: true, children: summary.failed })
|
|
218
|
-
] })
|
|
219
|
-
] }),
|
|
220
|
-
summary.errored > 0 && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
221
|
-
/* @__PURE__ */ jsx(Text, { children: " | " }),
|
|
222
|
-
/* @__PURE__ */ jsxs(Text, { color: "yellow", children: [
|
|
223
|
-
"Error ",
|
|
224
|
-
/* @__PURE__ */ jsx(Text, { bold: true, children: summary.errored })
|
|
225
|
-
] })
|
|
226
|
-
] })
|
|
227
|
-
] })
|
|
228
|
-
]
|
|
229
|
-
}
|
|
230
|
-
),
|
|
192
|
+
/* @__PURE__ */ jsxs(StatusMessage, { variant: summaryVariant, children: [
|
|
193
|
+
"\uD14C\uC2A4\uD2B8 \uACB0\uACFC: ",
|
|
194
|
+
summaryText
|
|
195
|
+
] }),
|
|
231
196
|
/* @__PURE__ */ jsx(Box, { flexDirection: "column", marginTop: 1, children: results.map((r) => /* @__PURE__ */ jsx(ResultRow, { result: r }, r.caseId)) })
|
|
232
197
|
] });
|
|
233
198
|
}
|
|
@@ -298,16 +263,13 @@ function TestCommand({
|
|
|
298
263
|
return void 0;
|
|
299
264
|
}, [status, watch, onComplete]);
|
|
300
265
|
if (status === "loading") {
|
|
301
|
-
return /* @__PURE__ */
|
|
302
|
-
/* @__PURE__ */ jsx2(Text2, { children: "\uD14C\uC2A4\uD2B8 \uC2E4\uD589 \uC911..." }),
|
|
303
|
-
/* @__PURE__ */ jsx2(LoadingSpinner, {})
|
|
304
|
-
] });
|
|
266
|
+
return /* @__PURE__ */ jsx2(Box2, { flexDirection: "column", children: /* @__PURE__ */ jsx2(Spinner, { label: "\uD14C\uC2A4\uD2B8 \uC2E4\uD589 \uC911..." }) });
|
|
305
267
|
}
|
|
306
268
|
if (status === "error") {
|
|
307
|
-
return /* @__PURE__ */
|
|
308
|
-
|
|
309
|
-
error
|
|
310
|
-
] });
|
|
269
|
+
return /* @__PURE__ */ jsx2(Box2, { flexDirection: "column", children: /* @__PURE__ */ jsxs2(Alert, { variant: "error", children: [
|
|
270
|
+
"\uD14C\uC2A4\uD2B8 \uC2E4\uD589 \uC2E4\uD328",
|
|
271
|
+
error ? `: ${error}` : ""
|
|
272
|
+
] }) });
|
|
311
273
|
}
|
|
312
274
|
return /* @__PURE__ */ jsxs2(Box2, { flexDirection: "column", children: [
|
|
313
275
|
/* @__PURE__ */ jsxs2(Box2, { marginBottom: 1, children: [
|
package/dist/index.js
CHANGED
|
@@ -9359,6 +9359,7 @@ var meow = (helpText, options = {}) => {
|
|
|
9359
9359
|
import { readdir } from "fs/promises";
|
|
9360
9360
|
import { join, dirname } from "path";
|
|
9361
9361
|
import { fileURLToPath as fileURLToPath3 } from "url";
|
|
9362
|
+
import { existsSync } from "fs";
|
|
9362
9363
|
function getCommandsDir() {
|
|
9363
9364
|
const __filename = fileURLToPath3(import.meta.url);
|
|
9364
9365
|
const __dirname = dirname(__filename);
|
|
@@ -9495,6 +9496,30 @@ async function main() {
|
|
|
9495
9496
|
process.exit(1);
|
|
9496
9497
|
return;
|
|
9497
9498
|
}
|
|
9499
|
+
if (command !== "init") {
|
|
9500
|
+
let currentDir = process.cwd();
|
|
9501
|
+
let found = false;
|
|
9502
|
+
const rootPath = process.platform === "win32" ? currentDir.split("\\")[0] + "\\" : "/";
|
|
9503
|
+
while (currentDir !== rootPath && !found) {
|
|
9504
|
+
const projectConfigPath = join(currentDir, ".ps-cli.json");
|
|
9505
|
+
if (existsSync(projectConfigPath)) {
|
|
9506
|
+
found = true;
|
|
9507
|
+
break;
|
|
9508
|
+
}
|
|
9509
|
+
const parentDir = dirname(currentDir);
|
|
9510
|
+
if (parentDir === currentDir) {
|
|
9511
|
+
break;
|
|
9512
|
+
}
|
|
9513
|
+
currentDir = parentDir;
|
|
9514
|
+
}
|
|
9515
|
+
if (!found) {
|
|
9516
|
+
console.error("\uC624\uB958: \uD604\uC7AC \uB514\uB809\uD1A0\uB9AC\uAC00 ps-cli \uD504\uB85C\uC81D\uD2B8\uAC00 \uC544\uB2D9\uB2C8\uB2E4.");
|
|
9517
|
+
console.error("\uD504\uB85C\uC81D\uD2B8\uB97C \uCD08\uAE30\uD654\uD558\uB824\uBA74 \uB2E4\uC74C \uBA85\uB839\uC5B4\uB97C \uC2E4\uD589\uD558\uC138\uC694:");
|
|
9518
|
+
console.error(" $ ps init");
|
|
9519
|
+
process.exit(1);
|
|
9520
|
+
return;
|
|
9521
|
+
}
|
|
9522
|
+
}
|
|
9498
9523
|
await commandDef.execute(args, cli.flags);
|
|
9499
9524
|
}
|
|
9500
9525
|
main().catch((error) => {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rhseung/ps-cli",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0",
|
|
4
4
|
"description": "백준(BOJ) 문제 해결을 위한 통합 CLI 도구",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -44,9 +44,7 @@
|
|
|
44
44
|
"execa": "^9.4.0",
|
|
45
45
|
"gradient-string": "^2.0.2",
|
|
46
46
|
"ink": "^5.0.1",
|
|
47
|
-
"
|
|
48
|
-
"ink-spinner": "^5.0.0",
|
|
49
|
-
"ink-text-input": "^6.0.0",
|
|
47
|
+
"@inkjs/ui": "^2.0.0",
|
|
50
48
|
"meow": "^14.0.0",
|
|
51
49
|
"react": "^18.3.1"
|
|
52
50
|
},
|