@bifos/dooray-cli 0.17.0 → 0.19.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 +85 -3
- package/dist/index.js +1137 -365
- package/package.json +5 -2
- package/skills/dooray-cli/SKILL.md +14 -5
- package/skills/dooray-cli/references/common.md +19 -1
- package/skills/dooray-cli/references/mention-link.md +30 -1
- package/skills/dooray-cli/references/post.md +18 -2
- package/skills/dooray-cli/references/wiki.md +78 -7
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bifos/dooray-cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.19.0",
|
|
4
4
|
"description": "CLI tool for Dooray project management — AI agent & terminal friendly",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"dooray",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
},
|
|
23
23
|
"files": [
|
|
24
24
|
"dist",
|
|
25
|
-
"skills",
|
|
25
|
+
"skills/dooray-cli",
|
|
26
26
|
"README.md"
|
|
27
27
|
],
|
|
28
28
|
"engines": {
|
|
@@ -32,8 +32,11 @@
|
|
|
32
32
|
"scripts": {
|
|
33
33
|
"build": "tsup",
|
|
34
34
|
"dev": "tsup --watch",
|
|
35
|
+
"api:inventory": "node scripts/api-endpoint-inventory.mjs",
|
|
35
36
|
"test": "vitest run",
|
|
36
37
|
"test:watch": "vitest",
|
|
38
|
+
"check:pii": "node scripts/check-pii.mjs",
|
|
39
|
+
"check:refs": "node scripts/check-public-refs.mjs",
|
|
37
40
|
"verify:package": "node scripts/verify-package.mjs"
|
|
38
41
|
},
|
|
39
42
|
"license": "MIT",
|
|
@@ -21,10 +21,10 @@ NHN Dooray REST API 를 래핑한 CLI 다. 이 파일은 라우터이므로, 작
|
|
|
21
21
|
## 대상 지정 방법
|
|
22
22
|
|
|
23
23
|
`post get`/`edit`/`done`/`workflow`, `post comment` 전체, `post file` 전체, `post comment file` 전체,
|
|
24
|
-
`wiki page file` 과 `wiki page comment` 전체, 그리고 `wiki page delete` 가 네 가지 형태를 모두 받는다.
|
|
24
|
+
`wiki page get`, `wiki page file` 과 `wiki page comment` 전체, 그리고 `wiki page delete` 가 네 가지 형태를 모두 받는다.
|
|
25
25
|
|
|
26
26
|
- `<project> <number>` — 업무는 번호, 위키는 `<project> <page-id>`
|
|
27
|
-
- `--id <postId>` / `--id <pageId>` — 위키는 `--project`
|
|
27
|
+
- `--id <postId>` / `--id <pageId>` — 위키는 `--project` 없이도 조회된다. 함께 주면 wikiId 를 해석하는 호출을 한 번 아낀다
|
|
28
28
|
- `--url <url>`
|
|
29
29
|
- 첫 인자에 Dooray URL 을 직접
|
|
30
30
|
|
|
@@ -41,6 +41,7 @@ NHN Dooray REST API 를 래핑한 CLI 다. 이 파일은 라우터이므로, 작
|
|
|
41
41
|
- 조회는 `--json` 으로 먼저 실행해 응답 구조를 확인한 뒤 쓰기 명령으로 넘어간다
|
|
42
42
|
- 쓰기 명령은 대상 ID 를 명시하고, 지원하면 `--dry-run` 으로 먼저 확인한다
|
|
43
43
|
- 이름 기반 조회(멤버·그룹·워크플로우·태그)는 부분일치를 지원한다. 모호하면 에러와 후보 목록이 나오므로 임의로 고르지 말고 사용자에게 확인한다
|
|
44
|
+
- 멤버를 이름으로 찾는 것은 그 프로젝트의 멤버로 한정된다. 비멤버는 이메일이나 memberId 로 지정한다 — [post.md](references/post.md)
|
|
44
45
|
- 실패하면 [common.md](references/common.md) 의 에러 처리 표와 대조한다
|
|
45
46
|
|
|
46
47
|
## 파일 명령의 `--json` 스키마
|
|
@@ -95,7 +96,9 @@ NHN Dooray REST API 를 래핑한 CLI 다. 이 파일은 라우터이므로, 작
|
|
|
95
96
|
| 개인 프로젝트 목록 | `dooray project list --type private` |
|
|
96
97
|
| 프로젝트 멤버 보기 | `dooray project members <project>` 또는 `dooray member list <project>` |
|
|
97
98
|
| 프로젝트 멤버 그룹 목록 | `dooray project groups <project>` |
|
|
98
|
-
| 프로젝트 태그 목록 | `dooray project tags <project>` |
|
|
99
|
+
| 프로젝트 태그 목록 | `dooray project tags <project>` — 프로젝트 코드가 `list`·`create`·`group` 과 같으면 `dooray project tags list <project>` |
|
|
100
|
+
| 태그 만들기 | `dooray project tags create <project> --name "<그룹>:<태그>" [--color <hex>]` — 그룹명 생략 가능 |
|
|
101
|
+
| 태그 그룹 속성 변경 | `dooray project tags group <project> "<그룹>" [--mandatory] [--select-one]` — 해제는 `--no-` 접두 |
|
|
99
102
|
| 프로젝트 템플릿 목록 | `dooray project templates <project>` |
|
|
100
103
|
| 멤버 상세 | `dooray member get <organizationMemberId>` (캐시 우회) |
|
|
101
104
|
| organization 전체 멤버 검색 | `dooray member search <keyword>` — 옵션은 [common.md](references/common.md) |
|
|
@@ -142,6 +145,9 @@ NHN Dooray REST API 를 래핑한 CLI 다. 이 파일은 라우터이므로, 작
|
|
|
142
145
|
| 댓글 수정 | `dooray post comment edit <project> <number> <comment-id> --body "..."` |
|
|
143
146
|
| 댓글 삭제 | `dooray post comment delete <project> <number> <comment-id>` — 확인 있음, `-y`/`--yes`로 생략 |
|
|
144
147
|
|
|
148
|
+
내부 ID 를 positional 자리에 넣으면 입력 오류가 나지만, 그 오류가 `--id` 를 쓴 완성 명령을 그대로 보여준다.
|
|
149
|
+
그 줄을 그대로 복사해 실행하면 되고, 자동화는 오류 출력을 읽어 재시도할 수 있다.
|
|
150
|
+
|
|
145
151
|
## 업무 첨부
|
|
146
152
|
|
|
147
153
|
`--json` 출력 스키마는 [post.md](references/post.md) 를 읽는다.
|
|
@@ -171,14 +177,17 @@ NHN Dooray REST API 를 래핑한 CLI 다. 이 파일은 라우터이므로, 작
|
|
|
171
177
|
|
|
172
178
|
| 의도 | 커맨드 |
|
|
173
179
|
| --- | --- |
|
|
174
|
-
| 위키 목록 | `dooray wiki list` |
|
|
180
|
+
| 위키 목록 | `dooray wiki list` — `ID`, `Name`, `Project`, `Type` 네 열을 낸다. 이름은 `--search` 로 찾는다 |
|
|
181
|
+
| 이름으로 위키 찾기 | `dooray wiki list --search <keyword>` — 이름 부분 일치, 대소문자 무시, 전체 목록에서 찾는다 |
|
|
175
182
|
| 페이지 목록 | `dooray wiki pages <project>` |
|
|
176
183
|
| 페이지 트리 | `dooray wiki tree <project>` (`--depth N` 으로 상한, `--json` 은 flat) |
|
|
177
|
-
| 페이지 상세 | `dooray wiki page get <project> <page-id>` |
|
|
184
|
+
| 페이지 상세 | `dooray wiki page get --id <page-id>` — project 없이 조회된다. `<project> <page-id>` 와 `--url` 도 받는다 |
|
|
185
|
+
| 페이지 ID 로 바로 조회 | `wiki page file`, `wiki page comment`, `wiki page delete` 도 `--id` 만으로 동작한다 |
|
|
178
186
|
| 페이지 생성 | `dooray wiki page create <project> --title "..." [--parent <page-id>] [--body "..."]` — `--parent` 를 생략하면 위키 home 아래에 만든다 |
|
|
179
187
|
| 페이지 제목 수정 | `dooray wiki page edit <project> <page-id> --title "..."` |
|
|
180
188
|
| 페이지 본문 수정 | `dooray wiki page edit <project> <page-id> --body "..."` 또는 `--body-file ./new.md` |
|
|
181
189
|
| 페이지 에디터로 수정 | `dooray wiki page edit <project> <page-id>` — 플래그가 없으면 `$EDITOR` 가 열린다 |
|
|
190
|
+
| 페이지 이동 | `dooray wiki page move <project> <page-id> --parent <parent-page-id>` — `--parent` 는 필수다. 하위 페이지는 기본으로 함께 이동하고, `--no-children` 으로 페이지 하나만 옮긴다. `--to-wiki <project-or-wiki-id>` 로 다른 위키로 옮기며, `--first` 와 `--before <page-id>` 로 형제 사이 정렬을 바꾼다 |
|
|
182
191
|
| 페이지 삭제 | `dooray wiki page delete <project> <page-id>` — 확인 있음, `-y`/`--yes`로 생략. 하위 페이지는 삭제한 페이지의 부모 아래로 재부착되어 orphan 이 생기지 않는다 |
|
|
183
192
|
| 첨부 목록 | `dooray wiki page file list <project> <page-id>` — general 과 inline 을 합쳐 보여준다 |
|
|
184
193
|
| 첨부 업로드 | `dooray wiki page file upload <project> <page-id> --file <path> [--type inline_image]` |
|
|
@@ -22,6 +22,15 @@ dooray config set api-key <YOUR_API_TOKEN> # https://{org}.dooray.com/setting/
|
|
|
22
22
|
dooray doctor # 설정 검증
|
|
23
23
|
```
|
|
24
24
|
|
|
25
|
+
값 자리에 `-` 를 주면 stdin 에서 읽는다. 토큰을 명령 인자로 넘기지 않을 때 쓴다.
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
printf '%s' "$TOKEN" | dooray config set api-key -
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
인자로 넘긴 값은 셸 기록과 프로세스 목록에 남는다.
|
|
32
|
+
stdin 값은 양끝 공백을 지운 뒤 저장하고, 비어 있으면 저장하지 않고 종료 코드 3 으로 끝낸다.
|
|
33
|
+
|
|
25
34
|
## Claude Code 스킬 관리
|
|
26
35
|
|
|
27
36
|
```bash
|
|
@@ -80,9 +89,11 @@ CLI로 처리 **불가능한** 작업. 아래 항목을 요청받으면 웹 UI
|
|
|
80
89
|
|
|
81
90
|
| 작업 | 대체 경로 | 근거 |
|
|
82
91
|
|---|---|---|
|
|
83
|
-
| 위키 페이지 이동 (상위 페이지 변경) | 웹 UI (`https://{tenant}.dooray.com/wiki/...`) | Dooray REST API 미지원 |
|
|
84
92
|
| 프로젝트 삭제 | 웹 UI (admin 페이지) | API 미지원 |
|
|
85
93
|
|
|
94
|
+
위키 페이지 이동은 `wiki page move` 로 처리한다.
|
|
95
|
+
자세한 내용은 [위키 페이지 이동 사용법](wiki.md#위키-페이지-이동-사용법)을 참고한다.
|
|
96
|
+
|
|
86
97
|
|
|
87
98
|
---
|
|
88
99
|
|
|
@@ -144,3 +155,10 @@ AI agent 가 `member=me` 응답에 없는 프로젝트의 업무를 다뤄야
|
|
|
144
155
|
```bash
|
|
145
156
|
dooray cache clear # 전체 캐시 삭제 (다음 실행 시 자동 갱신)
|
|
146
157
|
```
|
|
158
|
+
|
|
159
|
+
지울 캐시가 없어도 종료 코드 0 으로 끝난다. 삭제에 실패하면 종료 코드 5 로 끝나므로
|
|
160
|
+
성공 메시지를 확인하지 말고 종료 코드로 판단한다.
|
|
161
|
+
|
|
162
|
+
`api-key` 나 `base-url` 을 바꾸면 캐시가 함께 비워진다.
|
|
163
|
+
캐시는 계정과 접속 환경별로 나뉘지 않아서, 비우지 않으면 이전 계정의 프로젝트와 멤버가 남아 잘못 매칭된다.
|
|
164
|
+
같은 값을 다시 설정하는 경우와 지울 캐시가 없는 경우에는 비우지 않고 안내도 나오지 않는다.
|
|
@@ -61,6 +61,17 @@ title 속성도 없다.
|
|
|
61
61
|
title 은 workflow class 다 — `registered` / `working` / `closed` / `backlog`.
|
|
62
62
|
클릭하면 브라우저가 아니라 Dooray 앱 안에서 이동하며 workflow 상태가 함께 보인다.
|
|
63
63
|
|
|
64
|
+
**표시 텍스트의 대괄호는 엔티티로 바꾼다.** `[` 는 `[`, `]` 는 `]` 다.
|
|
65
|
+
제목에 모듈명을 대괄호로 붙이는 팀이 많은데, 조회한 `subject` 를 그대로 넣으면 링크 문법과 충돌해 깨진다.
|
|
66
|
+
|
|
67
|
+
| 입력 | 결과 |
|
|
68
|
+
| --- | --- |
|
|
69
|
+
| `[my-project/524 [MOD] 한도 분리](dooray://...)` | 링크 깨짐 |
|
|
70
|
+
| `[my-project/524 [MOD] 한도 분리](dooray://...)` | 정상 |
|
|
71
|
+
|
|
72
|
+
치환 대상은 표시 텍스트뿐이고 URL 은 해당 없다.
|
|
73
|
+
`--link-task` 옵션을 쓰면 CLI 가 알아서 치환하므로 손으로 조립할 때만 신경 쓴다.
|
|
74
|
+
|
|
64
75
|
### 위키 페이지
|
|
65
76
|
|
|
66
77
|
```markdown
|
|
@@ -68,13 +79,31 @@ title 은 workflow class 다 — `registered` / `working` / `closed` / `backlog`
|
|
|
68
79
|
```
|
|
69
80
|
|
|
70
81
|
업무 링크와 같은 구조이고 경로만 `pages/{pageId}` 로 다르다. title 은 페이지 상태다.
|
|
82
|
+
표시 텍스트의 대괄호 치환도 업무 링크와 같다.
|
|
71
83
|
|
|
72
84
|
### ID 를 얻는 곳
|
|
73
85
|
|
|
74
86
|
| ID | 얻는 방법 |
|
|
75
87
|
| --- | --- |
|
|
76
88
|
| `orgId` | `~/.dooray/cache/me.json` 의 `data.orgId` |
|
|
77
|
-
| `memberId` |
|
|
89
|
+
| `memberId` | 응답에 있으면 그 값을 쓴다 (아래 참조). 없을 때만 `dooray member search <name>` |
|
|
78
90
|
| `groupId` | `dooray project groups <project>` |
|
|
79
91
|
| `postId` | `dooray post get <project> <number> --json` 의 `id` |
|
|
80
92
|
| `pageId` | `dooray wiki page get <project> <page-id> --json` 의 `id` |
|
|
93
|
+
|
|
94
|
+
### 답장 대상은 이름으로 찾지 않는다
|
|
95
|
+
|
|
96
|
+
답장할 상대의 ID 는 이미 조회 응답 안에 있다. 검색할 필요가 없다.
|
|
97
|
+
|
|
98
|
+
| 대상 | 응답의 위치 |
|
|
99
|
+
| --- | --- |
|
|
100
|
+
| 업무 작성자 | `post get ... --json` 의 `users.from.member.organizationMemberId` |
|
|
101
|
+
| 댓글 작성자 | `post comment list ... --json` 의 `creator.member.organizationMemberId` |
|
|
102
|
+
|
|
103
|
+
이 값을 쓰면 표시 이름이 한자든 영문이든 닉네임이든 항상 정확하다.
|
|
104
|
+
|
|
105
|
+
**검색 결과가 1건이어도 확정 근거로 삼지 않는다.**
|
|
106
|
+
표시 이름이 한자로 되어 있으면 한글 이름 검색에 원 작성자가 아예 안 잡히고, 표기가 비슷한 **다른 사람만** 걸린다.
|
|
107
|
+
후보가 여럿이면 모호하다는 신호라도 있지만, 하나뿐이면 오히려 확신하게 되는 것이 함정이다.
|
|
108
|
+
|
|
109
|
+
이름 검색은 대상이 응답에 없을 때만 쓰고, 그때도 이메일이나 사번으로 교차 확인한다.
|
|
@@ -86,7 +86,7 @@ dooray post edit --id "$POST_ID" --cc-group qa-team --dry-run --json | jq '.user
|
|
|
86
86
|
|
|
87
87
|
참조자·담당자 옵션만 지정하면 `$EDITOR`를 열지 않고 기존 제목·본문·태그를 보존한 채 참여자만 바꾼다.
|
|
88
88
|
|
|
89
|
-
## 본문
|
|
89
|
+
## 본문 전체 교체와 첨부 손실 주의
|
|
90
90
|
|
|
91
91
|
`post edit` 와 `post comment edit` 는 본문을 통째로 바꾼다.
|
|
92
92
|
새 본문에 기존 첨부의 이미지 마크다운(``)이나 일반 링크(`[](/files/<id>)`)가 없으면 확인을 요청하고,
|
|
@@ -130,6 +130,20 @@ dooray post edit --id "$POST_ID" --cc "$MEMBER_ID"
|
|
|
130
130
|
- 이메일 형태 → exact 매칭
|
|
131
131
|
- 그 외 → 이름 부분일치
|
|
132
132
|
|
|
133
|
+
**이름은 그 프로젝트의 멤버만 찾는다.** 이메일과 memberId 는 조직 전체에서 찾는다.
|
|
134
|
+
|
|
135
|
+
그래서 프로젝트 멤버가 아닌 사람을 이름으로 지정하면 실패한다.
|
|
136
|
+
|
|
137
|
+
```bash
|
|
138
|
+
dooray post create <project> --to 홍길동 # 프로젝트 멤버가 아니면 실패
|
|
139
|
+
dooray post create <project> --to user@example.com # 통과
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
에러에 붙는 "사용 가능한 멤버 (N/M)" 은 CLI 의 조회 한계가 아니라 **그 프로젝트의 멤버 목록**이다.
|
|
143
|
+
일부만 가져온 것으로 오해하기 쉬운 표기다.
|
|
144
|
+
|
|
145
|
+
대상이 그 프로젝트 멤버인지 확실하지 않으면 처음부터 이메일을 쓴다. 이메일은 `dooray member search <이름>` 으로 찾는다.
|
|
146
|
+
|
|
133
147
|
## 부모 업무 지정
|
|
134
148
|
|
|
135
149
|
```bash
|
|
@@ -138,7 +152,9 @@ dooray post edit --id "$CHILD_ID" --title "subtask A" --parent <project>/<parent
|
|
|
138
152
|
```
|
|
139
153
|
|
|
140
154
|
`--parent` 를 쓸 때 `--title` 이 필수다. 제목을 바꾸지 않으려면 원래 제목을 그대로 넣는다.
|
|
141
|
-
parent 해제는 API 가 지원하지 않아 CLI 로 할 수
|
|
155
|
+
parent 해제는 API 가 지원하지 않아 CLI 로 할 수 없다. 웹 UI 에서 처리한다.
|
|
156
|
+
계층 구조는 두 단계를 넘지 못한다. 상위업무를 가진 하위업무를 상위 업무로 설정할 수 없고,
|
|
157
|
+
그 조건에서 `--parent` 를 쓰면 실패한다.
|
|
142
158
|
|
|
143
159
|
## 태그만 바꾸기
|
|
144
160
|
|
|
@@ -1,5 +1,46 @@
|
|
|
1
1
|
# wiki
|
|
2
2
|
|
|
3
|
+
## 페이지 ID 만 알 때
|
|
4
|
+
|
|
5
|
+
**project 를 찾을 필요가 없다.** `--id` 하나로 조회한다.
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
dooray wiki page get --id <page-id>
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
같은 방식이 `wiki page` 하위 명령 전체에 통한다.
|
|
12
|
+
`wiki page file`, `wiki page comment`, `wiki page delete` 도 `--id` 만으로 동작한다.
|
|
13
|
+
|
|
14
|
+
`--project` 는 선택이다. 함께 주면 wikiId 를 해석하는 호출을 한 번 아낀다.
|
|
15
|
+
반복 실행하는 자동화라면 함께 주는 편이 빠르다.
|
|
16
|
+
|
|
17
|
+
위키를 이름으로 찾아야 하는 경우는 다음 절에서 다룬다.
|
|
18
|
+
|
|
19
|
+
## 위키를 이름으로 찾는다
|
|
20
|
+
|
|
21
|
+
페이지 ID 를 모르고 위키 자체를 찾아야 할 때, 또는 그 위키의 페이지 목록이나 트리를 보려 할 때 쓴다.
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
dooray wiki list --search <위키 이름 일부> # Project 열의 값이 다음 명령의 project 인자다
|
|
25
|
+
dooray wiki pages <project>
|
|
26
|
+
dooray wiki tree <project>
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
- `--search` 는 이름을 대소문자 무시 부분 일치로 찾는다. 이름의 대소문자를 가정하지 않아도 된다.
|
|
30
|
+
- `--search` 는 전체 목록에서 찾으므로 `--page` 와 `--size` 를 무시한다.
|
|
31
|
+
- `--json` 은 서버 응답을 그대로 내므로 project 코드가 없다.
|
|
32
|
+
자동화는 `project.id` 를 그대로 project 자리에 넣을 수 있다.
|
|
33
|
+
|
|
34
|
+
## 위키 본문 링크의 앞 숫자는 project 가 아니다
|
|
35
|
+
|
|
36
|
+
위키 본문의 페이지 링크는 `dooray://<orgId>/pages/<pageId>` 형태다.
|
|
37
|
+
앞 숫자는 orgId 이고 project 도 위키 ID 도 아니다.
|
|
38
|
+
그 값을 project 자리에 넣으면 `프로젝트에 위키가 없습니다` 로 끝난다.
|
|
39
|
+
|
|
40
|
+
pageId 는 뒤 숫자다. 그것만 떼어 `--id` 에 넣으면 된다.
|
|
41
|
+
|
|
42
|
+
브라우저 주소창의 `https://<tenant>.dooray.com/wiki/<wikiId>/<pageId>` 형태는 `--url` 로 그대로 넣을 수 있다.
|
|
43
|
+
|
|
3
44
|
## 페이지 계층 훑기
|
|
4
45
|
|
|
5
46
|
`wiki tree --json` 은 flat 배열이고 `wiki pages --json` 과 같은 스키마다.
|
|
@@ -27,7 +68,7 @@ dooray wiki page edit <project> <page-id> --body "${CURRENT_BODY}
|
|
|
27
68
|
${SNIPPET}"
|
|
28
69
|
```
|
|
29
70
|
|
|
30
|
-
기존 본문을 먼저 받아 뒤에 이어
|
|
71
|
+
기존 본문을 먼저 받아 뒤에 이어 붙인다. `--body` 는 전체 교체이므로 snippet 만 넣으면 본문이 사라진다.
|
|
31
72
|
|
|
32
73
|
## 첨부 일괄 내려받기
|
|
33
74
|
|
|
@@ -50,14 +91,44 @@ TTY 확인, non-TTY 실행, `-y`와 `--yes` 사용법은 [SKILL.md](../SKILL.md#
|
|
|
50
91
|
|
|
51
92
|
## 페이지 삭제
|
|
52
93
|
|
|
53
|
-
`wiki page delete` 는
|
|
54
|
-
|
|
94
|
+
`wiki page delete` 는 `DELETE /wiki/v1/wikis/{wiki-id}/pages/{page-id}` 를 쓴다.
|
|
95
|
+
공식 API 문서에 있는 endpoint 다.
|
|
55
96
|
|
|
56
|
-
빈 제목·본문으로 덮는 soft delete 우회는 쓰지
|
|
97
|
+
빈 제목·본문으로 덮는 soft delete 우회는 쓰지 않는다. 페이지가 트리에 남아 혼란을 준다.
|
|
57
98
|
|
|
58
99
|
하위 페이지가 있는 페이지를 지우면 하위는 삭제한 페이지의 부모 아래로 재부착된다. orphan 은 생기지 않는다.
|
|
59
100
|
|
|
60
|
-
## 위키 페이지
|
|
101
|
+
## 위키 페이지 이동 사용법
|
|
102
|
+
|
|
103
|
+
`wiki page move` 는 `POST /wiki/v1/wikis/{wiki-id}/pages/{page-id}/move` 를 쓴다.
|
|
104
|
+
공식 API 문서에 있는 endpoint 다.
|
|
105
|
+
|
|
106
|
+
페이지를 옮길 때는 새 부모 페이지를 `--parent` 로 반드시 지정한다.
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
dooray wiki page move <project> <page-id> --parent <parent-page-id>
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
`--id <page-id>` 로 페이지를 직접 지정할 수 있다.
|
|
113
|
+
`--project <project>` 를 함께 주면 CLI 가 wikiId 해석 호출을 줄인다.
|
|
114
|
+
`--project` 는 선택이다.
|
|
115
|
+
|
|
116
|
+
하위 페이지는 기본으로 함께 이동한다.
|
|
117
|
+
페이지 하나만 옮기려면 `--no-children` 을 붙인다.
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
dooray wiki page move --id <page-id> --parent <parent-page-id> --no-children
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
형제 사이 정렬은 `--first` 또는 `--before <page-id>` 로 바꾼다.
|
|
124
|
+
다른 위키로 옮길 때는 `--to-wiki <project-or-wiki-id>` 를 붙인다.
|
|
125
|
+
값에는 프로젝트 코드나 위키 ID 를 줄 수 있다.
|
|
126
|
+
대상 위키에 권한이 없으면 명령은 오류로 끝난다.
|
|
127
|
+
|
|
128
|
+
이동 명령에는 삭제 명령처럼 실행 전 확인 절차가 없다.
|
|
129
|
+
|
|
130
|
+
페이지를 지우고 다시 만드는 방식은 쓰지 않는다.
|
|
131
|
+
첨부와 인라인 이미지, 댓글, 페이지 ID 가 사라진다.
|
|
61
132
|
|
|
62
|
-
`
|
|
63
|
-
|
|
133
|
+
`wiki page edit` 은 부모를 바꾸지 못한다.
|
|
134
|
+
수정 요청에 부모 필드를 넣어도 해당 필드는 무시된다.
|