@asagiri-design/labels-config 0.2.2
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/LICENSE +21 -0
- package/README.ja.md +387 -0
- package/README.md +387 -0
- package/dist/chunk-4ZUJQMV7.mjs +285 -0
- package/dist/chunk-DGUMSQAI.mjs +496 -0
- package/dist/chunk-DSI7SDAM.mjs +161 -0
- package/dist/chunk-QJLMZSVA.mjs +496 -0
- package/dist/chunk-QZ7TP4HQ.mjs +7 -0
- package/dist/chunk-VU2JB66N.mjs +103 -0
- package/dist/chunk-ZYHIDOG2.mjs +247 -0
- package/dist/cli.d.mts +1 -0
- package/dist/cli.d.ts +1 -0
- package/dist/cli.js +1417 -0
- package/dist/cli.mjs +436 -0
- package/dist/config/index.d.mts +49 -0
- package/dist/config/index.d.ts +49 -0
- package/dist/config/index.js +554 -0
- package/dist/config/index.mjs +10 -0
- package/dist/github/index.d.mts +113 -0
- package/dist/github/index.d.ts +113 -0
- package/dist/github/index.js +310 -0
- package/dist/github/index.mjs +9 -0
- package/dist/index.d.mts +309 -0
- package/dist/index.d.ts +309 -0
- package/dist/index.js +306 -0
- package/dist/index.mjs +44 -0
- package/dist/types-CkwsO1Iu.d.mts +50 -0
- package/dist/types-CkwsO1Iu.d.ts +50 -0
- package/docs/API.md +309 -0
- package/docs/GETTING_STARTED.md +305 -0
- package/package.json +87 -0
- package/templates/prod-labels.json +106 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024 BoxPistols
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.ja.md
ADDED
|
@@ -0,0 +1,387 @@
|
|
|
1
|
+
# @boxpistols/labels-config
|
|
2
|
+
|
|
3
|
+
ターミナル完結型 GitHub ラベル管理 - シンプル、高速、トークン不要
|
|
4
|
+
|
|
5
|
+
gh CLI を使ってターミナルから GitHub ラベルを管理。トークンの手動設定は不要です。
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## クイックスタート
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
# 1. gh CLI をインストールして認証(初回のみ)
|
|
13
|
+
brew install gh # macOS
|
|
14
|
+
gh auth login
|
|
15
|
+
|
|
16
|
+
# 2. labels-config をインストール
|
|
17
|
+
npm install -g @boxpistols/labels-config
|
|
18
|
+
|
|
19
|
+
# 3. テンプレートから初期化
|
|
20
|
+
labels-config init minimal --file labels.json
|
|
21
|
+
|
|
22
|
+
# 4. リポジトリに同期
|
|
23
|
+
labels-config sync --owner your-name --repo your-repo --file labels.json
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
完了!ラベルが同期されました。
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## 特徴
|
|
31
|
+
|
|
32
|
+
- **ターミナル完結**: トークン管理不要 - gh CLI 認証を使用
|
|
33
|
+
- **シンプルな CLI**: 5つのコマンド、わかりやすい使い方
|
|
34
|
+
- **ビルトインテンプレート**: 9種類のすぐに使えるラベルセット
|
|
35
|
+
- **バリデーション**: 同期前に設定をチェック
|
|
36
|
+
- **ドライラン**: 変更を適用前にプレビュー
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## インストール
|
|
41
|
+
|
|
42
|
+
### 前提条件
|
|
43
|
+
|
|
44
|
+
gh CLI をインストールして認証:
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
# macOS
|
|
48
|
+
brew install gh
|
|
49
|
+
|
|
50
|
+
# Linux (Debian/Ubuntu)
|
|
51
|
+
sudo apt install gh
|
|
52
|
+
|
|
53
|
+
# Windows
|
|
54
|
+
winget install --id GitHub.cli
|
|
55
|
+
|
|
56
|
+
# 認証
|
|
57
|
+
gh auth login
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### labels-config をインストール
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
npm install -g @boxpistols/labels-config
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## 使い方
|
|
69
|
+
|
|
70
|
+
### init と sync の違いを理解する
|
|
71
|
+
|
|
72
|
+
**重要:** `init` コマンドはローカルに設定ファイルを作成するだけで、GitHub には同期されません。
|
|
73
|
+
|
|
74
|
+
| コマンド | 何をするか |
|
|
75
|
+
|---------|-----------|
|
|
76
|
+
| `init` | `labels.json` をローカルに作成(GitHubは変更されない) |
|
|
77
|
+
| `sync` | `labels.json` を GitHub リポジトリに適用 |
|
|
78
|
+
|
|
79
|
+
**ワークフロー例:**
|
|
80
|
+
```bash
|
|
81
|
+
# ステップ1: ローカルに設定ファイルを作成(まだGitHubは変更されない)
|
|
82
|
+
labels-config init prod-ja --file labels.json
|
|
83
|
+
|
|
84
|
+
# ステップ2: ファイルの内容を確認
|
|
85
|
+
cat labels.json
|
|
86
|
+
|
|
87
|
+
# ステップ3: GitHub に適用(ここで実際にラベルが変更される)
|
|
88
|
+
labels-config sync --owner your-name --repo your-repo --file labels.json
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### 1. ラベル設定を作成
|
|
92
|
+
|
|
93
|
+
**テンプレートから:**
|
|
94
|
+
```bash
|
|
95
|
+
labels-config init minimal --file labels.json
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
**利用可能なテンプレート:**
|
|
99
|
+
- `minimal` - 基本3ラベルセット(bug、feature、documentation)
|
|
100
|
+
- `github` - GitHub 標準ラベル
|
|
101
|
+
- `prod-ja` - プロダクションプロジェクト(日本語、14ラベル)
|
|
102
|
+
- `prod-en` - プロダクションプロジェクト(英語、14ラベル)
|
|
103
|
+
- `agile` - アジャイル/スクラムワークフロー
|
|
104
|
+
- `react`、`vue`、`frontend` - フレームワーク特化
|
|
105
|
+
|
|
106
|
+
### 2. 設定を検証
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
labels-config validate labels.json
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
### 3. 変更をプレビュー(ドライラン)
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
labels-config sync \
|
|
116
|
+
--owner your-name \
|
|
117
|
+
--repo your-repo \
|
|
118
|
+
--file labels.json \
|
|
119
|
+
--dry-run \
|
|
120
|
+
--verbose
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
### 4. GitHub に同期
|
|
124
|
+
|
|
125
|
+
**追加モード**(デフォルト - 既存ラベルを保持):
|
|
126
|
+
```bash
|
|
127
|
+
labels-config sync --owner your-name --repo your-repo --file labels.json
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
**置き換えモード**(リストにないラベルを削除):
|
|
131
|
+
```bash
|
|
132
|
+
labels-config sync --owner your-name --repo your-repo --file labels.json --delete-extra
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
### 5. 既存ラベルをエクスポート
|
|
136
|
+
|
|
137
|
+
```bash
|
|
138
|
+
labels-config export --owner your-name --repo your-repo --file exported.json
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
---
|
|
142
|
+
|
|
143
|
+
## CLI コマンド
|
|
144
|
+
|
|
145
|
+
| コマンド | 説明 |
|
|
146
|
+
|---------|------|
|
|
147
|
+
| `init <template>` | テンプレートからラベル設定を作成 |
|
|
148
|
+
| `validate <file>` | ラベル設定を検証 |
|
|
149
|
+
| `sync` | ラベルを GitHub に同期 |
|
|
150
|
+
| `export` | GitHub からラベルをエクスポート |
|
|
151
|
+
| `help` | ヘルプを表示 |
|
|
152
|
+
|
|
153
|
+
### オプション
|
|
154
|
+
|
|
155
|
+
| オプション | 説明 |
|
|
156
|
+
|-----------|------|
|
|
157
|
+
| `--owner <name>` | リポジトリのオーナー |
|
|
158
|
+
| `--repo <name>` | リポジトリ名 |
|
|
159
|
+
| `--file <path>` | 設定ファイルのパス |
|
|
160
|
+
| `--dry-run` | 変更をプレビューのみ |
|
|
161
|
+
| `--delete-extra` | リストにないラベルを削除(置き換えモード) |
|
|
162
|
+
| `--verbose` | 詳細な出力を表示 |
|
|
163
|
+
|
|
164
|
+
---
|
|
165
|
+
|
|
166
|
+
## ラベル設定フォーマット
|
|
167
|
+
|
|
168
|
+
```json
|
|
169
|
+
{
|
|
170
|
+
"version": "1.0.0",
|
|
171
|
+
"labels": [
|
|
172
|
+
{
|
|
173
|
+
"name": "bug",
|
|
174
|
+
"color": "d73a4a",
|
|
175
|
+
"description": "何かが正常に動作していません"
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
"name": "feature",
|
|
179
|
+
"color": "0e8a16",
|
|
180
|
+
"description": "新機能のリクエスト"
|
|
181
|
+
}
|
|
182
|
+
]
|
|
183
|
+
}
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
**要件:**
|
|
187
|
+
- `name`: 1-50文字
|
|
188
|
+
- `color`: 3または6文字の16進数カラーコード(# なし)
|
|
189
|
+
- `description`: 1-200文字
|
|
190
|
+
|
|
191
|
+
---
|
|
192
|
+
|
|
193
|
+
## 同期モード
|
|
194
|
+
|
|
195
|
+
### 追加モード(デフォルト)
|
|
196
|
+
新しいラベルを追加し、既存のラベルを更新。設定にないラベルは保持されます。
|
|
197
|
+
|
|
198
|
+
```bash
|
|
199
|
+
labels-config sync --owner user --repo repo --file labels.json
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
### 置き換えモード
|
|
203
|
+
設定にないすべてのラベルを削除。完全なコントロール。
|
|
204
|
+
|
|
205
|
+
```bash
|
|
206
|
+
labels-config sync --owner user --repo repo --file labels.json --delete-extra
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
⚠️ **警告**: 置き換えモードはすべての Issue と PR からラベルを削除します。必ず `--dry-run` を先に実行してください!
|
|
210
|
+
|
|
211
|
+
---
|
|
212
|
+
|
|
213
|
+
## 複数リポジトリへの同期
|
|
214
|
+
|
|
215
|
+
同じラベルを複数のリポジトリに同期:
|
|
216
|
+
|
|
217
|
+
```bash
|
|
218
|
+
#!/bin/bash
|
|
219
|
+
REPOS=("org/repo1" "org/repo2" "org/repo3")
|
|
220
|
+
|
|
221
|
+
for REPO in "${REPOS[@]}"; do
|
|
222
|
+
OWNER=$(echo $REPO | cut -d'/' -f1)
|
|
223
|
+
REPO_NAME=$(echo $REPO | cut -d'/' -f2)
|
|
224
|
+
|
|
225
|
+
labels-config sync \
|
|
226
|
+
--owner $OWNER \
|
|
227
|
+
--repo $REPO_NAME \
|
|
228
|
+
--file labels.json \
|
|
229
|
+
--verbose
|
|
230
|
+
done
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
---
|
|
234
|
+
|
|
235
|
+
## ワークフロー統合
|
|
236
|
+
|
|
237
|
+
### GitHub Actions
|
|
238
|
+
|
|
239
|
+
```yaml
|
|
240
|
+
name: Sync Labels
|
|
241
|
+
|
|
242
|
+
on:
|
|
243
|
+
push:
|
|
244
|
+
paths:
|
|
245
|
+
- 'labels.json'
|
|
246
|
+
branches:
|
|
247
|
+
- main
|
|
248
|
+
|
|
249
|
+
jobs:
|
|
250
|
+
sync:
|
|
251
|
+
runs-on: ubuntu-latest
|
|
252
|
+
steps:
|
|
253
|
+
- uses: actions/checkout@v4
|
|
254
|
+
|
|
255
|
+
- name: Setup Node.js
|
|
256
|
+
uses: actions/setup-node@v4
|
|
257
|
+
with:
|
|
258
|
+
node-version: '18'
|
|
259
|
+
|
|
260
|
+
- name: Install labels-config
|
|
261
|
+
run: npm install -g @boxpistols/labels-config
|
|
262
|
+
|
|
263
|
+
- name: Install gh CLI
|
|
264
|
+
run: |
|
|
265
|
+
sudo apt update
|
|
266
|
+
sudo apt install gh -y
|
|
267
|
+
|
|
268
|
+
- name: Authenticate gh CLI
|
|
269
|
+
env:
|
|
270
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
271
|
+
run: echo "$GITHUB_TOKEN" | gh auth login --with-token
|
|
272
|
+
|
|
273
|
+
- name: Sync labels
|
|
274
|
+
run: |
|
|
275
|
+
labels-config sync \
|
|
276
|
+
--owner ${{ github.repository_owner }} \
|
|
277
|
+
--repo ${{ github.event.repository.name }} \
|
|
278
|
+
--file labels.json \
|
|
279
|
+
--verbose
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
---
|
|
283
|
+
|
|
284
|
+
## トラブルシューティング
|
|
285
|
+
|
|
286
|
+
### 認証失敗
|
|
287
|
+
|
|
288
|
+
```bash
|
|
289
|
+
# gh CLI のステータスを確認
|
|
290
|
+
gh auth status
|
|
291
|
+
|
|
292
|
+
# 再認証
|
|
293
|
+
gh auth login
|
|
294
|
+
|
|
295
|
+
# 認証をリフレッシュ
|
|
296
|
+
gh auth refresh
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
### バリデーションエラー
|
|
300
|
+
|
|
301
|
+
```bash
|
|
302
|
+
# 具体的なエラーを確認
|
|
303
|
+
labels-config validate labels.json
|
|
304
|
+
|
|
305
|
+
# よくある問題:
|
|
306
|
+
# - ラベル名の重複
|
|
307
|
+
# - 無効な16進数カラー(# なしで3または6文字)
|
|
308
|
+
# - 名前が長すぎる(最大50文字)
|
|
309
|
+
# - 説明が長すぎる(最大200文字)
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
### ラベルが同期されない
|
|
313
|
+
|
|
314
|
+
```bash
|
|
315
|
+
# 詳細な出力で確認
|
|
316
|
+
labels-config sync --owner user --repo repo --file labels.json --verbose
|
|
317
|
+
|
|
318
|
+
# ドライランで何が変更されるか確認
|
|
319
|
+
labels-config sync --owner user --repo repo --file labels.json --dry-run --verbose
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
### レート制限超過
|
|
323
|
+
|
|
324
|
+
```bash
|
|
325
|
+
# レート制限のステータスを確認
|
|
326
|
+
gh api rate_limit
|
|
327
|
+
|
|
328
|
+
# リセットを待つ(通常60分)
|
|
329
|
+
```
|
|
330
|
+
|
|
331
|
+
---
|
|
332
|
+
|
|
333
|
+
## ベストプラクティス
|
|
334
|
+
|
|
335
|
+
**✅ すべきこと:**
|
|
336
|
+
- `labels.json` をバージョン管理に含める
|
|
337
|
+
- 実際の同期前に `--dry-run` を実行
|
|
338
|
+
- セマンティックなコミットメッセージを使用
|
|
339
|
+
- プロジェクトでラベルの目的を文書化
|
|
340
|
+
- プロジェクト間で一貫した色使いをする
|
|
341
|
+
|
|
342
|
+
**❌ すべきでないこと:**
|
|
343
|
+
- Issue/PR での使用状況を確認せずにラベルを削除
|
|
344
|
+
- ラベル名を頻繁に変更
|
|
345
|
+
- 同期前のバリデーションをスキップ
|
|
346
|
+
|
|
347
|
+
---
|
|
348
|
+
|
|
349
|
+
## 高度な使用方法
|
|
350
|
+
|
|
351
|
+
### npm パッケージとして使用
|
|
352
|
+
|
|
353
|
+
コード内でライブラリとして使用することもできます:
|
|
354
|
+
|
|
355
|
+
```typescript
|
|
356
|
+
import { GitHubLabelSync } from '@boxpistols/labels-config/github'
|
|
357
|
+
import { CONFIG_TEMPLATES } from '@boxpistols/labels-config'
|
|
358
|
+
|
|
359
|
+
const sync = new GitHubLabelSync({
|
|
360
|
+
owner: 'your-org',
|
|
361
|
+
repo: 'your-repo'
|
|
362
|
+
})
|
|
363
|
+
|
|
364
|
+
const labels = CONFIG_TEMPLATES.minimal
|
|
365
|
+
await sync.syncLabels(labels)
|
|
366
|
+
```
|
|
367
|
+
|
|
368
|
+
プロジェクトにインストール:
|
|
369
|
+
```bash
|
|
370
|
+
npm install @boxpistols/labels-config
|
|
371
|
+
```
|
|
372
|
+
|
|
373
|
+
---
|
|
374
|
+
|
|
375
|
+
## ライセンス
|
|
376
|
+
|
|
377
|
+
MIT
|
|
378
|
+
|
|
379
|
+
---
|
|
380
|
+
|
|
381
|
+
## 関連
|
|
382
|
+
|
|
383
|
+
- [English README](./README.md)
|
|
384
|
+
|
|
385
|
+
---
|
|
386
|
+
|
|
387
|
+
**gh CLI を愛するターミナルユーザーのために作られました** 🚀
|