@rhseung/ps-cli 1.0.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/README.md +290 -0
- package/dist/chunk-2E4VSP6O.js +641 -0
- package/dist/chunk-EIFFWFLS.js +68 -0
- package/dist/chunk-FYS2JH42.js +31 -0
- package/dist/chunk-IJLJBKLK.js +1689 -0
- package/dist/chunk-KFQFQJYT.js +9948 -0
- package/dist/chunk-OOTPZD7O.js +42 -0
- package/dist/chunk-TQXMB7XV.js +52 -0
- package/dist/commands/config.js +234 -0
- package/dist/commands/fetch.js +606 -0
- package/dist/commands/run.js +191 -0
- package/dist/commands/stats.js +165 -0
- package/dist/commands/submit.js +493 -0
- package/dist/commands/test.js +413 -0
- package/dist/index.js +9503 -0
- package/package.json +58 -0
- package/templates/solution.cpp +13 -0
- package/templates/solution.py +5 -0
package/README.md
ADDED
|
@@ -0,0 +1,290 @@
|
|
|
1
|
+
# ps-cli
|
|
2
|
+
|
|
3
|
+
백준(BOJ) 문제 해결을 위한 통합 CLI 도구입니다. Ink 기반의 인터랙티브 터미널 UI로 문제 가져오기, 로컬 테스트, 제출까지 지원하는 개발 환경을 제공합니다.
|
|
4
|
+
|
|
5
|
+
## 설치
|
|
6
|
+
|
|
7
|
+
### npm 사용
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npm install -g @rhseung/ps-cli
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
### bun 사용
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
bun install -g @rhseung/ps-cli
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
또는 `bunx`를 사용하여 직접 실행:
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
bunx @rhseung/ps-cli fetch 1000
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## 요구사항
|
|
26
|
+
|
|
27
|
+
- Node.js >= 18.0.0
|
|
28
|
+
|
|
29
|
+
## 주요 기능
|
|
30
|
+
|
|
31
|
+
- **문제 가져오기**: Solved.ac API와 BOJ 크롤링을 통한 문제 정보 및 예제 데이터 자동 생성
|
|
32
|
+
- **로컬 테스트**: 여러 언어(JS/TS, Python, C++) 지원 및 자동 테스트 실행
|
|
33
|
+
- **제출**: BOJ 자동 제출 및 결과 확인
|
|
34
|
+
- **통계**: Solved.ac API를 활용한 사용자 통계 조회
|
|
35
|
+
- **Watch 모드**: 파일 저장 시 자동 테스트 실행
|
|
36
|
+
|
|
37
|
+
## 명령어
|
|
38
|
+
|
|
39
|
+
### `fetch` - 문제 가져오기
|
|
40
|
+
|
|
41
|
+
백준 문제를 가져와서 로컬에 파일을 생성합니다.
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
ps fetch <문제번호> [옵션]
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
**기능:**
|
|
48
|
+
|
|
49
|
+
- Solved.ac API와 BOJ 크롤링을 통해 문제 정보 수집
|
|
50
|
+
- 문제 설명, 입출력 형식, 예제 입출력 파일 자동 생성
|
|
51
|
+
- 선택한 언어의 솔루션 템플릿 파일 생성
|
|
52
|
+
- README.md에 문제 정보, 통계, 태그 등 포함
|
|
53
|
+
|
|
54
|
+
**옵션:**
|
|
55
|
+
|
|
56
|
+
- `--language, -l`: 언어 선택 (python, javascript, typescript, cpp)
|
|
57
|
+
- 기본값: python
|
|
58
|
+
|
|
59
|
+
**예제:**
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
ps fetch 1000
|
|
63
|
+
ps fetch 1000 --language python
|
|
64
|
+
ps fetch 1000 -l cpp
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### `test` - 로컬 테스트 실행
|
|
68
|
+
|
|
69
|
+
예제 입출력 기반으로 로컬 테스트를 실행합니다.
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
ps test [문제번호] [옵션]
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
**기능:**
|
|
76
|
+
|
|
77
|
+
- 현재 디렉토리 또는 지정한 문제 번호의 테스트 실행
|
|
78
|
+
- `solution.*` 파일을 자동으로 찾아 언어 감지
|
|
79
|
+
- `input*.txt`와 `output*.txt` 파일을 기반으로 테스트
|
|
80
|
+
- 문제의 시간 제한을 자동으로 적용
|
|
81
|
+
- `--watch` 옵션으로 파일 변경 시 자동 재테스트
|
|
82
|
+
|
|
83
|
+
**옵션:**
|
|
84
|
+
|
|
85
|
+
- `--language, -l`: 언어 선택 (지정 시 자동 감지 무시)
|
|
86
|
+
- `--watch, -w`: watch 모드 (파일 변경 시 자동 재테스트)
|
|
87
|
+
|
|
88
|
+
**예제:**
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
ps test # 현재 디렉토리에서 테스트
|
|
92
|
+
ps test 1000 # 1000번 문제 테스트
|
|
93
|
+
ps test --watch # watch 모드로 테스트
|
|
94
|
+
ps test 1000 --watch # 1000번 문제를 watch 모드로 테스트
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### `run` - 코드 실행
|
|
98
|
+
|
|
99
|
+
코드를 실행합니다 (테스트 없이).
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
ps run [문제번호] [옵션]
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
**기능:**
|
|
106
|
+
|
|
107
|
+
- 현재 디렉토리 또는 지정한 문제 번호의 코드 실행
|
|
108
|
+
- `solution.*` 파일을 자동으로 찾아 언어 감지
|
|
109
|
+
- `input.txt` 또는 `input1.txt`를 표준 입력으로 사용
|
|
110
|
+
- 테스트 케이스 검증 없이 단순 실행
|
|
111
|
+
|
|
112
|
+
**옵션:**
|
|
113
|
+
|
|
114
|
+
- `--language, -l`: 언어 선택 (지정 시 자동 감지 무시)
|
|
115
|
+
- `--input, -i`: 입력 파일 지정 (기본값: input.txt 또는 input1.txt)
|
|
116
|
+
|
|
117
|
+
**예제:**
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
ps run # 현재 디렉토리에서 실행
|
|
121
|
+
ps run 1000 # 1000번 문제 실행
|
|
122
|
+
ps run --language python # Python으로 실행
|
|
123
|
+
ps run --input input2.txt # 특정 입력 파일 사용
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
### `submit` - BOJ 제출
|
|
127
|
+
|
|
128
|
+
현재 문제의 솔루션 파일을 BOJ에 제출합니다.
|
|
129
|
+
|
|
130
|
+
```bash
|
|
131
|
+
ps submit [문제번호] [옵션]
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
**기능:**
|
|
135
|
+
|
|
136
|
+
- 현재 디렉토리 또는 지정한 문제 번호의 솔루션 파일 제출
|
|
137
|
+
- `solution.*` 파일을 자동으로 찾아 언어 감지
|
|
138
|
+
- 제출 후 채점 결과를 자동으로 확인
|
|
139
|
+
|
|
140
|
+
**옵션:**
|
|
141
|
+
|
|
142
|
+
- `--language, -l`: 언어 선택 (지정 시 자동 감지 무시)
|
|
143
|
+
- `--dry-run`: 실제 제출 없이 검증만 수행
|
|
144
|
+
|
|
145
|
+
**예제:**
|
|
146
|
+
|
|
147
|
+
```bash
|
|
148
|
+
ps submit # 현재 디렉토리에서 제출
|
|
149
|
+
ps submit 1000 # 1000번 문제 제출
|
|
150
|
+
ps submit --language python # Python으로 제출
|
|
151
|
+
ps submit --dry-run # 제출 전 검증만 수행
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
**참고:** 제출 기능을 사용하려면 먼저 BOJ 세션 쿠키를 설정해야 합니다:
|
|
155
|
+
|
|
156
|
+
```bash
|
|
157
|
+
ps config boj-session-cookie "boj_session=your_session_cookie"
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
### `stats` - 사용자 통계 조회
|
|
161
|
+
|
|
162
|
+
Solved.ac에서 사용자 통계를 조회합니다.
|
|
163
|
+
|
|
164
|
+
```bash
|
|
165
|
+
ps stats [핸들] [옵션]
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
**기능:**
|
|
169
|
+
|
|
170
|
+
- 티어, 레이팅, 해결한 문제 수 등 표시
|
|
171
|
+
- 그라데이션으로 시각적으로 표시
|
|
172
|
+
|
|
173
|
+
**옵션:**
|
|
174
|
+
|
|
175
|
+
- `--handle, -h`: Solved.ac 핸들 (설정에 저장된 값 사용 가능)
|
|
176
|
+
|
|
177
|
+
**예제:**
|
|
178
|
+
|
|
179
|
+
```bash
|
|
180
|
+
ps stats myhandle
|
|
181
|
+
ps stats --handle myhandle
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
**참고:** 핸들을 설정에 저장하면 매번 입력할 필요가 없습니다:
|
|
185
|
+
|
|
186
|
+
```bash
|
|
187
|
+
ps config solved-ac-handle myhandle
|
|
188
|
+
ps stats # 설정된 핸들 사용
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
### `config` - 설정 관리
|
|
192
|
+
|
|
193
|
+
사용자 설정을 관리합니다.
|
|
194
|
+
|
|
195
|
+
```bash
|
|
196
|
+
ps config <키> [값]
|
|
197
|
+
ps config <키> --get
|
|
198
|
+
ps config --list
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
**설정 키:**
|
|
202
|
+
|
|
203
|
+
- `boj-session-cookie`: BOJ 세션 쿠키 (제출 기능용)
|
|
204
|
+
- `default-language`: 기본 언어 (python, javascript, typescript, cpp)
|
|
205
|
+
- `code-open`: 코드 공개 여부 (true/false)
|
|
206
|
+
- `editor`: 에디터 명령어 (예: code, vim, nano)
|
|
207
|
+
- `auto-open-editor`: fetch 후 자동으로 에디터 열기 (true/false)
|
|
208
|
+
- `solved-ac-handle`: Solved.ac 핸들 (stats 명령어용)
|
|
209
|
+
|
|
210
|
+
**옵션:**
|
|
211
|
+
|
|
212
|
+
- `--get`: 설정 값 조회
|
|
213
|
+
- `--list`: 모든 설정 조회
|
|
214
|
+
- `--help, -h`: 도움말 표시
|
|
215
|
+
|
|
216
|
+
**예제:**
|
|
217
|
+
|
|
218
|
+
```bash
|
|
219
|
+
ps config boj-session-cookie "boj_session=xxx"
|
|
220
|
+
ps config default-language python
|
|
221
|
+
ps config solved-ac-handle myhandle
|
|
222
|
+
ps config solved-ac-handle --get
|
|
223
|
+
ps config --list
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
### `help` - 도움말 표시
|
|
227
|
+
|
|
228
|
+
도움말을 표시합니다.
|
|
229
|
+
|
|
230
|
+
```bash
|
|
231
|
+
ps help
|
|
232
|
+
ps --help
|
|
233
|
+
ps <명령어> --help
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
## 기술 스택
|
|
237
|
+
|
|
238
|
+
- **Ink**: React 기반 터미널 UI
|
|
239
|
+
- **TypeScript**: 타입 안전성
|
|
240
|
+
- **Meow**: CLI 인자 파싱
|
|
241
|
+
- **Execa**: 프로세스 실행
|
|
242
|
+
- **Cheerio**: HTML 파싱
|
|
243
|
+
- **tsup**: 빌드 도구
|
|
244
|
+
|
|
245
|
+
## 사용 예제
|
|
246
|
+
|
|
247
|
+
### 전체 워크플로우
|
|
248
|
+
|
|
249
|
+
```bash
|
|
250
|
+
# 1. 문제 가져오기
|
|
251
|
+
ps fetch 1000 --language python
|
|
252
|
+
|
|
253
|
+
# 2. 문제 디렉토리로 이동
|
|
254
|
+
cd problems/1000
|
|
255
|
+
|
|
256
|
+
# 3. 코드 작성 (solution.py 편집)
|
|
257
|
+
|
|
258
|
+
# 4. 로컬 테스트
|
|
259
|
+
ps test
|
|
260
|
+
|
|
261
|
+
# 5. Watch 모드로 개발 (파일 저장 시 자동 테스트)
|
|
262
|
+
ps test --watch
|
|
263
|
+
|
|
264
|
+
# 6. 단일 입력으로 실행 테스트
|
|
265
|
+
ps run
|
|
266
|
+
|
|
267
|
+
# 7. BOJ에 제출
|
|
268
|
+
ps submit
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
### 설정 예제
|
|
272
|
+
|
|
273
|
+
```bash
|
|
274
|
+
# BOJ 세션 쿠키 설정 (제출 기능용)
|
|
275
|
+
ps config boj-session-cookie "boj_session=your_cookie_here"
|
|
276
|
+
|
|
277
|
+
# 기본 언어 설정
|
|
278
|
+
ps config default-language python
|
|
279
|
+
|
|
280
|
+
# Solved.ac 핸들 설정
|
|
281
|
+
ps config solved-ac-handle myhandle
|
|
282
|
+
|
|
283
|
+
# fetch 후 자동으로 VS Code 열기
|
|
284
|
+
ps config editor code
|
|
285
|
+
ps config auto-open-editor true
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
## 라이선스
|
|
289
|
+
|
|
290
|
+
MIT
|