@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 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