🎩 You're Invited:Meet the Socket team at Black Hat in Las Vegas, August 3-6.RSVP
Sign In

@bifos/dooray-cli

Package Overview
Dependencies
Maintainers
1
Versions
19
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@bifos/dooray-cli - npm Package Compare versions

Comparing version
0.8.0
to
0.9.0
+1
-1
package.json
{
"name": "@bifos/dooray-cli",
"version": "0.8.0",
"version": "0.9.0",
"description": "CLI tool for Dooray project management — AI agent & terminal friendly",

@@ -5,0 +5,0 @@ "keywords": [

@@ -49,2 +49,3 @@ # dooray-cli

dooray project tags <project> # 태그 목록 (ID / Color / Name / Group / Mandatory)
dooray project templates <project> # 템플릿 목록 (ID / Template Name, ADR-027)
```

@@ -112,2 +113,20 @@

#### 템플릿 기반 정형 task (ADR-027)
```bash
# 프로젝트의 템플릿 목록
dooray project templates <project>
# 템플릿으로 업무 생성 (body/users/tags 자동 채움)
dooray post create <project> --template "릴리스 플랜"
# 사용자 옵션 override — 일부 필드만 다르게
dooray post create <project> --template "릴리스 플랜" --title "v0.9 릴리스 계획" --tag "p0"
# 19자리 templateId 직접 입력
dooray post create <project> --template 1234567890123456789 --title "by id"
```
`interpolation=true` 가 기본 — Dooray 가 `${year}`, `${month}` 같은 시스템 매크로를 응답에서 자동 치환. 사용자 정의 변수 (`--field key=value`) 는 본 release scope 외.
### 업무 수정

@@ -191,2 +210,51 @@

#### 생성 후 태그 변경 (Issue #66)
```bash
# 기존 태그 유지 + 신규 추가 (dedupe)
dooray post edit --id <postId> --tag "<group>: <name>"
# 기존 태그 전부 제거 + 신규만 적용
dooray post edit --id <postId> --tag-clear --tag "<group>: <name>"
# 특정 태그만 제거 (기존 유지)
dooray post edit --id <postId> --tag-remove "<group>: <name>"
```
`--title` / `--body` 없이 단독 호출 가능 — 기존 본문은 자동 재전송.
mandatory tag 그룹은 `post create` 와 동일하게 사전 검증 (ADR-019).
#### 상위 업무 변경 (`--parent`)
```bash
# 자식 업무에 부모 지정
dooray post edit <project> <child-number> --title "<원제목>" --parent <project>/<parent-number>
# 다른 부모로 변경
dooray post edit --id <postId> --title "<원제목>" --parent <other-parent-postId>
```
내부적으로 `client.updatePost` 호출 후 별도 `POST .../set-parent-post` endpoint 추가 호출. **parent 해제 (top-level 화)** 는 Dooray API 가 미지원이라 웹 UI 에서 수동 처리.
interactive ($EDITOR) 모드에서 `--parent` 사용 시 무시 + stderr 경고. **parent 만 단독 변경하려면 `--title "<원제목>"` 동반 필요** — `post edit` 가 본문 변경(`--title`/`--body`) 동반 시에만 non-interactive 분기로 들어가며, parent 변경은 그 분기 안에서만 수행됨. (Issue #60)
`--dry-run --json` 출력의 `parentChange` 필드는 **사용자 입력 원문 그대로** (`<project>/<number>` 또는 raw postId) — resolver 처리 전 미리보기 값이며 실제 호출 대상 `postId` 가 아님. dry-run 은 API 미호출 원칙을 유지해 `resolvePostRef` 도 건너뜀.
#### `--to` / `--cc` / `--mention` 입력 형식 (자동 분기)
이름 외에도 이메일 / organizationMemberId 직접 입력 가능 — **동명이인 우회 + ID 직접 입력** (Issue #58):
```bash
# 이름 (이전부터 지원, 부분일치)
dooray post create <project> --title "..." --cc 홍길동
# 이메일 (동명이인 우회)
dooray post create <project> --title "..." --cc user@example.com
# organizationMemberId 직접
dooray post create <project> --title "..." --cc 1234567890123456789
```
분기 규칙: `^\d{15,}$` → memberId / `^[^\s@]+@[^\s@]+\.[^\s@]+$` → 이메일 / 그 외 → 이름 부분일치. `member search --email` 의 인프라 재사용.
#### comment list 필터 옵션

@@ -193,0 +261,0 @@

@@ -58,2 +58,3 @@ ---

| 프로젝트 태그 목록 | `dooray project tags <project>` (ID / Color / Name / Group / Mandatory) |
| 프로젝트 템플릿 목록 | `dooray project templates <project>` (id / templateName) |
| 멤버 상세 (organizationMemberId) | `dooray member get <organizationMemberId>` (cache 우회, ADR-021) |

@@ -65,2 +66,3 @@ | organization 전체 멤버 검색 | `dooray member search <keyword>` (이름 기본), `--email`(이메일 exact), `--user-code`(사번 like), `--user-code-exact`(사번 exact), `--page`/`--size` |

| 업무 생성 | `dooray post create <project> --title "..." --body "..."` 또는 `--body-file <path>` (`--body`와 `--body-file`은 동시 사용 불가, `--tag`/`--parent`/`--workflow`/`--milestone` 지원) |
| 템플릿 기반 업무 생성 | `dooray post create <project> --template <name\|id>` — body/users/tags 자동 채움 (사용자 옵션 우선 override, ADR-027) |
| 업무 제목/본문 수정 | `dooray post edit <project> <number> --title "..." --body "..."` 또는 `--body-file <path>` |

@@ -100,2 +102,6 @@ | 업무 완료 처리 | `dooray post done <project> <number>` |

| 신규 업무 + 그룹 cc | `dooray post create <project> --title "..." --cc-group <code>` — 생성 시 그룹 참조자 포함 |
| 상위 업무 설정/변경 | `dooray post edit <project> <number> --title "<원제목>" --parent <ref>` — `<ref>` 는 `<project>/<number>` 또는 raw postId. `--title` 미동반 시 interactive 모드로 진입해 무시. unset 미지원 (Issue #60) |
| `dooray post edit --id <postId> --tag <name>` | 태그 추가 (반복, dedupe) |
| `dooray post edit --id <postId> --tag-clear --tag <name>` | 태그 전체 교체 |
| `dooray post edit --id <postId> --tag-remove <name>` | 특정 태그 제거 |

@@ -310,2 +316,17 @@ > **제목 옵션 네이밍**: `post` 와 `wiki page` 모두 `--title` 표준. `post`의 `--subject`는 deprecated alias로 당분간 동작하되, 새 코드에서는 `--title` 사용을 권장.

## 동명이인 우회 — 이메일 / memberId 직접 (Issue #58)
이름이 동일한 멤버가 여러 명이라 `--cc 홍길동` 이 모호로 실패할 때:
```bash
# 1) 이메일로 우회
dooray post edit --id "$POST_ID" --cc user.specific@example.com
# 2) 사전에 member search 로 ID 확보 후 직접
MEMBER_ID=$(dooray member search 홍길동 --json | jq -r '.[] | select(.externalEmailAddress=="user.specific@example.com") | .id')
dooray post edit --id "$POST_ID" --cc "$MEMBER_ID"
```
`--to` / `--mention` 동일 분기 (resolveMember 인프라). 분기 규칙: `^\d{15,}$` → memberId / 이메일 정규형 → searchMembers exact / 그 외 → 이름 부분일치.
## 신규 업무 생성 후 그룹 cc 첨부 (ADR-025)

@@ -329,2 +350,32 @@

## 자식 업무 먼저 → 후속 부모 지정 (Issue #60)
```bash
# 1. 자식 업무 생성 (parent 모르고)
CHILD_ID=$(dooray post create <project> --title "subtask A" --json | jq -r '.id')
# 2. 부모 결정 후 후속 지정
dooray post edit --id "$CHILD_ID" --title "subtask A" --parent <project>/<parent-number>
```
**한계** (cmux-browser spike 결과): Dooray API 가 `unset-parent-post` 미제공 → CLI 로 parent 해제 불가. 필요 시 웹 UI 에서 처리.
---
## 태그 사후 분류 자동화 (Issue #66)
분류 분석 결과를 받아 태그를 재분류하는 자동화는 단독 호출 패턴이 효율적:
```bash
# 분석 스크립트가 분류한 태그 이름을 cli 로 적용 — body fetch 불요
POST_ID=$(...)
CATEGORY=$(...)
dooray post edit --id "$POST_ID" --tag "분류: $CATEGORY"
```
태그만 변경하는 시나리오에서 `--title` / `--body` 강제 없음.
mandatory 그룹은 친절한 에러 메시지로 안내 (ADR-019).
---
### 댓글 추가 (non-interactive)

@@ -440,2 +491,17 @@

## 정형 task 자동화 (Issue #59 / ADR-027)
매주 같은 형식의 task 를 만드는 자동화는 템플릿 + override 패턴이 효율적:
```bash
# 매주 월요일 실행되는 cron — "주간 릴리스 체크" 템플릿으로 자동 생성
TODAY=$(date +%Y-%m-%d)
POST_ID=$(dooray post create <project> \
--template "주간 릴리스 체크" \
--title "주간 릴리스 체크 — $TODAY" \
--json | jq -r '.id')
```
템플릿 본문의 `${year}` / `${month}` 등 매크로는 Dooray 가 자동 치환 (`interpolation=true` 기본). 사용자 정의 변수는 미지원 — 필요 시 client 측 string replace 로 처리.
## 캐시

@@ -442,0 +508,0 @@

Sorry, the diff of this file is too big to display