@bifos/dooray-cli 0.5.2 → 0.5.3
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 +39 -0
- package/dist/index.js +761 -84
- package/package.json +6 -3
- package/skills/dooray-cli/SKILL.md +50 -5
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bifos/dooray-cli",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.3",
|
|
4
4
|
"description": "CLI tool for Dooray project management — AI agent & terminal friendly",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"dooray",
|
|
@@ -30,7 +30,9 @@
|
|
|
30
30
|
},
|
|
31
31
|
"scripts": {
|
|
32
32
|
"build": "tsup",
|
|
33
|
-
"dev": "tsup --watch"
|
|
33
|
+
"dev": "tsup --watch",
|
|
34
|
+
"test": "vitest run",
|
|
35
|
+
"test:watch": "vitest"
|
|
34
36
|
},
|
|
35
37
|
"license": "MIT",
|
|
36
38
|
"dependencies": {
|
|
@@ -53,6 +55,7 @@
|
|
|
53
55
|
"@types/nodemailer": "^7.0.11",
|
|
54
56
|
"@types/tmp": "^0.2.6",
|
|
55
57
|
"tsup": "^8.5.1",
|
|
56
|
-
"typescript": "^6.0.2"
|
|
58
|
+
"typescript": "^6.0.2",
|
|
59
|
+
"vitest": "^4.1.5"
|
|
57
60
|
}
|
|
58
61
|
}
|
|
@@ -45,20 +45,23 @@ dooray doctor # 설정 검증
|
|
|
45
45
|
|
|
46
46
|
자연어 요청을 커맨드로 변환할 때 아래 표를 참고한다.
|
|
47
47
|
|
|
48
|
+
> **공통 (post 하위 12개 명령)**: `post get`/`edit`/`done`/`workflow`, `post comment list`/`add`/`edit`/`delete`, `post file list`/`upload`/`download`/`download-all`/`delete`는 `<project> <number>` 외에도 `--id <postId>`, `--url <url>`, 또는 첫 인자에 Dooray URL(`https://*.dooray.com/task/to/<postId>`)을 직접 받는다. **사용자가 URL을 줬으면 그대로 첫 인자로 전달**하는 것이 가장 빠른 경로 (resolve 단계 단축, ADR-020).
|
|
49
|
+
|
|
48
50
|
| 의도 | 커맨드 |
|
|
49
51
|
|------|--------|
|
|
50
52
|
| 초기 설정 (대화형) | `dooray setup` |
|
|
51
53
|
| 프로젝트 찾기 | `dooray project list --search <keyword>` |
|
|
52
54
|
| 개인 프로젝트 목록 | `dooray project list --type private` |
|
|
53
|
-
| 프로젝트 멤버 보기 | `dooray project members <project>` |
|
|
55
|
+
| 프로젝트 멤버 보기 | `dooray project members <project>` 또는 `dooray member list <project>` (이름·organizationMemberId) |
|
|
56
|
+
| 멤버 상세 (organizationMemberId) | `dooray member get <organizationMemberId>` (cache 우회, ADR-021) |
|
|
54
57
|
| 업무 목록 조회 | `dooray post list <project>` |
|
|
55
58
|
| 업무 검색 | `dooray post search <project> "<keyword>"` |
|
|
56
59
|
| 업무 상세 보기 | `dooray post get <project> <number>` |
|
|
57
|
-
| 업무 생성 | `dooray post create <project> --title "..." --body "..."` 또는 `--body-file <path>` (`--body`와 `--body-file`은 동시 사용
|
|
60
|
+
| 업무 생성 | `dooray post create <project> --title "..." --body "..."` 또는 `--body-file <path>` (`--body`와 `--body-file`은 동시 사용 불가, `--tag`/`--parent`/`--workflow`/`--milestone` 지원) |
|
|
58
61
|
| 업무 제목/본문 수정 | `dooray post edit <project> <number> --title "..." --body "..."` 또는 `--body-file <path>` |
|
|
59
62
|
| 업무 완료 처리 | `dooray post done <project> <number>` |
|
|
60
63
|
| 업무 워크플로우 변경 | `dooray post workflow <project> <number> <workflow>` |
|
|
61
|
-
| 댓글 조회 | `dooray post comment list <project> <number>` |
|
|
64
|
+
| 댓글 조회 | `dooray post comment list <project> <number>` (table 출력은 Creator 이름 자동 채움, `--json`은 raw 유지 — ADR-021) |
|
|
62
65
|
| 댓글 추가 | `dooray post comment add <project> <number> --body "..."` 또는 `--body-file <path>` |
|
|
63
66
|
| 댓글 수정 | `dooray post comment edit <project> <number> <comment-id> --body "..."` 또는 `--body-file <path>` |
|
|
64
67
|
| 댓글 삭제 | `dooray post comment delete <project> <number> <comment-id>` |
|
|
@@ -104,7 +107,7 @@ CLI로 처리 **불가능한** 작업. 아래 항목을 요청받으면 웹 UI
|
|
|
104
107
|
2. **프로젝트 코드를 모르면** → `dooray project list --search <keyword>` 로 먼저 찾기
|
|
105
108
|
3. **업무 번호를 모르면** → `dooray post search <project> "<keyword>"` 로 검색
|
|
106
109
|
4. **워크플로우 이름을 모르면** → `dooray project workflows <project>` 로 확인
|
|
107
|
-
5. **멤버 이름을 모르면** → `dooray project members <project>` 로 확인
|
|
110
|
+
5. **멤버 이름을 모르면** → `dooray member list <project>` (또는 `dooray project members <project>`) 로 확인
|
|
108
111
|
6. **결과를 다음 액션에 사용하려면** → `--json` 플래그로 구조화된 데이터 획득
|
|
109
112
|
|
|
110
113
|
---
|
|
@@ -161,6 +164,42 @@ dooray wiki page get tc-ocr 3052841366755571094 --json
|
|
|
161
164
|
|
|
162
165
|
## 커맨드 상세
|
|
163
166
|
|
|
167
|
+
### 업무 식별 방식 (post 하위 12개 명령 공통, ADR-020)
|
|
168
|
+
|
|
169
|
+
`post get`/`edit`/`done`/`workflow`, `post comment list`/`add`/`edit`/`delete`, `post file list`/`upload`/`download`/`download-all`/`delete`는 4가지 입력을 모두 받는다:
|
|
170
|
+
|
|
171
|
+
```bash
|
|
172
|
+
# (1) 기존 positional — 가장 익숙한 형태
|
|
173
|
+
dooray post get tc-ocr 42
|
|
174
|
+
|
|
175
|
+
# (2) Dooray URL을 첫 인자로 — 사용자 메시지에서 URL을 그대로 복사할 때 최적
|
|
176
|
+
dooray post get https://x.dooray.com/task/to/4319587406666362045
|
|
177
|
+
|
|
178
|
+
# (3) --id <postId>
|
|
179
|
+
dooray post get --id 4319587406666362045
|
|
180
|
+
|
|
181
|
+
# (4) --url <url>
|
|
182
|
+
dooray post get --url https://x.dooray.com/task/to/4319587406666362045
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
**우선순위 / 충돌 규칙**: `--id`+`--url` 동시 지정 → 에러. `--id`/`--url`+positional 동시 지정 → 에러. URL/`--id`/`--url` 모드는 standalone API(`getPost(postId)`)로 resolve 단계를 단축.
|
|
186
|
+
|
|
187
|
+
**sub-id 옵션화** (URL/`--id`/`--url` 모드에서 필수):
|
|
188
|
+
```bash
|
|
189
|
+
# comment edit/delete: --comment-id
|
|
190
|
+
dooray post comment edit --url <url> --comment-id <commentId> --body "..."
|
|
191
|
+
dooray post comment delete --url <url> --comment-id <commentId>
|
|
192
|
+
|
|
193
|
+
# file download/delete: --file-id
|
|
194
|
+
dooray post file download --url <url> --file-id <fileId> -o ./downloads
|
|
195
|
+
dooray post file delete --url <url> --file-id <fileId>
|
|
196
|
+
|
|
197
|
+
# file upload: --file (로컬 경로)
|
|
198
|
+
dooray post file upload --url <url> --file ./report.pdf
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
기존 positional 3-arg(`comment edit <project> <number> <comment-id>`, `file upload <project> <number> <path>`)는 그대로 유지.
|
|
202
|
+
|
|
164
203
|
### 업무 생성 (non-interactive)
|
|
165
204
|
|
|
166
205
|
```bash
|
|
@@ -170,7 +209,11 @@ dooray post create <project> \
|
|
|
170
209
|
--to "담당자이름" \ # 여러 명: --to "김철수" --to "이영희"
|
|
171
210
|
--cc "참조자이름" \
|
|
172
211
|
--priority normal \ # highest, high, normal, low, lowest
|
|
173
|
-
--due-date "2026-04-30T18:00:00+09:00"
|
|
212
|
+
--due-date "2026-04-30T18:00:00+09:00" \
|
|
213
|
+
--tag "버그" --tag "긴급" \ # 반복 지정. mandatory 그룹은 클라이언트 사전 검증
|
|
214
|
+
--parent "tc-ocr/337" \ # "code/number" 또는 raw postId 두 형태만 허용
|
|
215
|
+
--workflow "진행 중" \ # 이름 또는 class (registered/working/closed). 부분일치 모호 시 후보 + 에러
|
|
216
|
+
--milestone "Sprint 12"
|
|
174
217
|
```
|
|
175
218
|
|
|
176
219
|
본문이 길면 파일로 (`--body`와 `--body-file`은 함께 사용 불가):
|
|
@@ -178,6 +221,8 @@ dooray post create <project> \
|
|
|
178
221
|
dooray post create <project> --title "제목" --body-file ./content.md
|
|
179
222
|
```
|
|
180
223
|
|
|
224
|
+
> **`--workflow` 동작 주의**: 워크플로우 설정은 post 생성 *후속* 호출이므로, 워크플로우 resolve/설정에 실패해도 stderr 경고만 출력되고 **exit code는 0** (post는 이미 생성됨). 자동화 스크립트에서 워크플로우 적용 여부를 보장해야 하면 stderr를 별도 점검할 것.
|
|
225
|
+
|
|
181
226
|
### 업무 수정 (non-interactive)
|
|
182
227
|
|
|
183
228
|
```bash
|