@yhonda/gcloud-secrets 2.0.11 → 3.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.
Files changed (4) hide show
  1. package/README.md +84 -36
  2. package/cli.js +761 -218
  3. package/package.json +6 -5
  4. package/skills/secrets.md +40 -10
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@yhonda/gcloud-secrets",
3
- "version": "2.0.11",
4
- "description": "GCP Secret Manager GitHub clone 風に管理する CLI ツール",
3
+ "version": "3.0.0",
4
+ "description": "Google Drive + age 暗号化でシークレットを管理する CLI ツール",
5
5
  "type": "module",
6
6
  "main": "cli.js",
7
7
  "bin": {
@@ -23,8 +23,9 @@
23
23
  "url": "git+https://github.com/yhonda-ohishi/gcloudSec.git"
24
24
  },
25
25
  "keywords": [
26
- "gcp",
27
- "secret-manager",
26
+ "google-drive",
27
+ "age-encryption",
28
+ "secrets",
28
29
  "env",
29
30
  "claude-code",
30
31
  "cli"
@@ -42,7 +43,7 @@
42
43
  },
43
44
  "homepage": "https://github.com/yhonda-ohishi/gcloudSec#readme",
44
45
  "dependencies": {
45
- "@google-cloud/secret-manager": "^6.1.1"
46
+ "googleapis": "^144.0.0"
46
47
  },
47
48
  "devDependencies": {
48
49
  "husky": "^9.1.7"
package/skills/secrets.md CHANGED
@@ -1,14 +1,19 @@
1
1
  # Skill: secrets
2
2
 
3
- GCP Secret Manager を使って .env ファイルを管理するスキル
3
+ Google Drive + age 暗号化でシークレットを管理するスキル
4
4
 
5
5
  ## コマンド一覧
6
6
 
7
7
  ### 初期化
8
8
  ```bash
9
- gcloud-secrets init <project-id> [--env <default>]
9
+ gcloud-secrets init [drive-folder-id] --client-id <id> --client-secret <secret> [--env <default>]
10
10
  ```
11
- GCP プロジェクト ID を設定します。`--env` でデフォルト環境を指定できます(省略時は `dev`)。
11
+ Google Drive + OAuth + age 鍵の初期設定を行います。
12
+ - `drive-folder-id` 省略時は Drive に "gcloud-secrets" フォルダを自動作成
13
+ - `--client-id` / `--client-secret`: Google Cloud Console で作成した OAuth クライアント情報
14
+ - `--env` でデフォルト環境を指定(省略時は `dev`)
15
+ - `--age-key <path>` で age 秘密鍵パスを指定(省略時は `~/.age/key.txt`、未作成なら自動生成)
16
+ - `--age-pub <key>` で age 公開鍵を指定(省略時は秘密鍵ファイルから自動取得)
12
17
 
13
18
  ### 一覧表示
14
19
  ```bash
@@ -27,7 +32,7 @@ gcloud-secrets pull --env dev
27
32
  # 指定フォルダから取得
28
33
  gcloud-secrets pull <folder> --env prod
29
34
  ```
30
- Secret Manager から .env 形式でシークレットを取得します。
35
+ Drive から暗号化ファイルをダウンロードし、age で復号して .env 形式で出力します。
31
36
 
32
37
  ### シークレット登録 (push)
33
38
  ```bash
@@ -40,6 +45,7 @@ gcloud-secrets push <folder> --env prod
40
45
  # 指定ファイルをアップロード
41
46
  gcloud-secrets push <folder> <file> --env staging
42
47
  ```
48
+ .env ファイルを age で暗号化し、Drive にアップロードします。
43
49
 
44
50
  ### 同期状況スキャン (scan)
45
51
  ```bash
@@ -52,7 +58,7 @@ gcloud-secrets scan --env dev
52
58
  # 指定ディレクトリ以下をスキャン
53
59
  gcloud-secrets scan <path> --env prod
54
60
  ```
55
- Git リポジトリ内の .env / .dev.vars ファイルと Secret Manager の同期状況を確認します。
61
+ Git リポジトリ内の .env / .dev.vars ファイルと Drive 上の暗号化ファイルの同期状況を確認します。
56
62
 
57
63
  ### 値から逆引き検索 (search)
58
64
  ```bash
@@ -62,13 +68,12 @@ gcloud-secrets search "api-key-12345"
62
68
  # 特定環境のみ検索
63
69
  gcloud-secrets search "client-id" --env prod
64
70
  ```
65
- シークレットの値から、使用しているフォルダ・環境・キーを逆引き検索します。
66
71
 
67
72
  出力例:
68
73
  ```
69
74
  Searching for: "api-key-12345"
70
75
 
71
- Scanning 45 secrets...
76
+ Scanning 8 files...
72
77
 
73
78
  [FOUND] my-app / dev - EXTERNAL_API_KEY
74
79
  [FOUND] my-app / prod - EXTERNAL_API_KEY
@@ -79,7 +84,7 @@ Found 3 matches in 2 folders
79
84
 
80
85
  #### scan 出力例:
81
86
  ```
82
- === Secret Manager 同期状況 ===
87
+ === シークレット同期状況 ===
83
88
 
84
89
  [OK] project-a/ .env [dev] (3 keys)
85
90
  [DIFF] project-b/ .env [prod] (2 keys) - 差分あり
@@ -92,6 +97,25 @@ Found 3 matches in 2 folders
92
97
  未登録: 1
93
98
  ```
94
99
 
100
+ ### .env 自動同期 (pre-commit)
101
+ ```bash
102
+ # カレントディレクトリの .env を Drive に自動同期
103
+ gcloud-secrets pre-commit
104
+ ```
105
+ git hook 用の高速コマンド。キャッシュで .env の変更を検知し、変更がなければ API コール 0 で即座に終了。
106
+ 変更があれば Drive からダウンロード+復号で比較し、差分があれば暗号化+アップロード。
107
+
108
+ ### グローバル git hook (hook)
109
+ ```bash
110
+ # グローバル pre-commit hook をインストール
111
+ gcloud-secrets hook install
112
+
113
+ # アンインストール
114
+ gcloud-secrets hook uninstall
115
+ ```
116
+ `hook install` で全リポジトリの `git commit` 時に `pre-commit` が自動実行されます。
117
+ 既存の `.husky/` や `.git/hooks/` のフックにもフォワードするので互換性があります。
118
+
95
119
  ## 環境 (Environment) オプション
96
120
 
97
121
  `--env` または `-e` で環境を指定できます:
@@ -105,8 +129,8 @@ Found 3 matches in 2 folders
105
129
  ## 使用例
106
130
 
107
131
  ```bash
108
- # 1. 初期化 (デフォルト環境を dev に設定)
109
- gcloud-secrets init my-gcp-project --env dev
132
+ # 1. 初期化 (OAuth クライアント情報を設定)
133
+ gcloud-secrets init --client-id "xxx.apps.googleusercontent.com" --client-secret "GOCSPX-xxx" --env dev
110
134
 
111
135
  # 2. dev 環境に .env を登録
112
136
  gcloud-secrets push --env dev
@@ -122,4 +146,10 @@ gcloud-secrets scan ~/ --env dev
122
146
 
123
147
  # 6. 特定の値がどこで使われているか検索
124
148
  gcloud-secrets search "line-client-id-xxx"
149
+
150
+ # 7. グローバル git hook をインストール (全リポジトリで自動同期)
151
+ gcloud-secrets hook install
152
+
153
+ # 8. 手動で pre-commit を実行
154
+ gcloud-secrets pre-commit
125
155
  ```