okit-cli 2.1.0 → 2.1.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.
Files changed (78) hide show
  1. package/README.md +103 -139
  2. package/dist/commands/auth.d.ts +4 -0
  3. package/dist/commands/auth.d.ts.map +1 -0
  4. package/dist/commands/auth.js +134 -0
  5. package/dist/commands/auth.js.map +1 -0
  6. package/dist/commands/check.d.ts +2 -0
  7. package/dist/commands/check.d.ts.map +1 -1
  8. package/dist/commands/check.js +122 -29
  9. package/dist/commands/check.js.map +1 -1
  10. package/dist/commands/menu.d.ts.map +1 -1
  11. package/dist/commands/menu.js +5 -0
  12. package/dist/commands/menu.js.map +1 -1
  13. package/dist/commands/profile.d.ts +18 -0
  14. package/dist/commands/profile.d.ts.map +1 -0
  15. package/dist/commands/profile.js +409 -0
  16. package/dist/commands/profile.js.map +1 -0
  17. package/dist/commands/relay.d.ts +14 -0
  18. package/dist/commands/relay.d.ts.map +1 -0
  19. package/dist/commands/relay.js +263 -0
  20. package/dist/commands/relay.js.map +1 -0
  21. package/dist/commands/repo.js +0 -16
  22. package/dist/commands/repo.js.map +1 -1
  23. package/dist/commands/uninstall.d.ts.map +1 -1
  24. package/dist/commands/uninstall.js +21 -72
  25. package/dist/commands/uninstall.js.map +1 -1
  26. package/dist/commands/upgrade.d.ts +1 -3
  27. package/dist/commands/upgrade.d.ts.map +1 -1
  28. package/dist/commands/upgrade.js +45 -110
  29. package/dist/commands/upgrade.js.map +1 -1
  30. package/dist/commands/vault.d.ts +14 -0
  31. package/dist/commands/vault.d.ts.map +1 -0
  32. package/dist/commands/vault.js +255 -0
  33. package/dist/commands/vault.js.map +1 -0
  34. package/dist/config/i18n.d.ts +71 -0
  35. package/dist/config/i18n.d.ts.map +1 -1
  36. package/dist/config/i18n.js +150 -0
  37. package/dist/config/i18n.js.map +1 -1
  38. package/dist/config/registry.d.ts +14 -6
  39. package/dist/config/registry.d.ts.map +1 -1
  40. package/dist/config/registry.js +638 -68
  41. package/dist/config/registry.js.map +1 -1
  42. package/dist/config/user.d.ts +4 -0
  43. package/dist/config/user.d.ts.map +1 -1
  44. package/dist/config/user.js +1 -0
  45. package/dist/config/user.js.map +1 -1
  46. package/dist/executor/deps/BrewDependencyProvider.d.ts.map +1 -1
  47. package/dist/executor/deps/BrewDependencyProvider.js +4 -2
  48. package/dist/executor/deps/BrewDependencyProvider.js.map +1 -1
  49. package/dist/executor/deps/NpmDependencyProvider.d.ts.map +1 -1
  50. package/dist/executor/deps/NpmDependencyProvider.js +4 -2
  51. package/dist/executor/deps/NpmDependencyProvider.js.map +1 -1
  52. package/dist/executor/deps/PipxDependencyProvider.d.ts.map +1 -1
  53. package/dist/executor/deps/PipxDependencyProvider.js +4 -2
  54. package/dist/executor/deps/PipxDependencyProvider.js.map +1 -1
  55. package/dist/executor/deps/UvToolDependencyProvider.d.ts.map +1 -1
  56. package/dist/executor/deps/UvToolDependencyProvider.js +4 -2
  57. package/dist/executor/deps/UvToolDependencyProvider.js.map +1 -1
  58. package/dist/executor/plan/registryDeps.d.ts.map +1 -1
  59. package/dist/executor/plan/registryDeps.js +13 -5
  60. package/dist/executor/plan/registryDeps.js.map +1 -1
  61. package/dist/executor/runner.d.ts.map +1 -1
  62. package/dist/executor/runner.js +11 -9
  63. package/dist/executor/runner.js.map +1 -1
  64. package/dist/main.js +194 -4
  65. package/dist/main.js.map +1 -1
  66. package/dist/relay/client.d.ts +29 -0
  67. package/dist/relay/client.d.ts.map +1 -0
  68. package/dist/relay/client.js +209 -0
  69. package/dist/relay/client.js.map +1 -0
  70. package/dist/utils/semver.d.ts +12 -0
  71. package/dist/utils/semver.d.ts.map +1 -0
  72. package/dist/utils/semver.js +71 -0
  73. package/dist/utils/semver.js.map +1 -0
  74. package/dist/vault/store.d.ts +51 -0
  75. package/dist/vault/store.d.ts.map +1 -0
  76. package/dist/vault/store.js +260 -0
  77. package/dist/vault/store.js.map +1 -0
  78. package/package.json +11 -4
@@ -4,6 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.DEFAULT_REGISTRY = exports.CACHE_DIR = exports.LOGS_DIR = exports.REGISTRY_PATH = exports.OKIT_DIR = void 0;
7
+ exports.resolveCmd = resolveCmd;
7
8
  exports.ensureOkitDir = ensureOkitDir;
8
9
  exports.loadRegistry = loadRegistry;
9
10
  exports.resetRegistry = resetRegistry;
@@ -13,6 +14,15 @@ const fs_extra_1 = __importDefault(require("fs-extra"));
13
14
  const path_1 = __importDefault(require("path"));
14
15
  const os_1 = __importDefault(require("os"));
15
16
  const child_process_1 = require("child_process");
17
+ // 从 CmdField 中解析出当前平台的命令
18
+ function resolveCmd(cmd) {
19
+ if (cmd === undefined)
20
+ return undefined;
21
+ if (typeof cmd === "string")
22
+ return cmd;
23
+ const platform = process.platform;
24
+ return cmd[platform];
25
+ }
16
26
  exports.OKIT_DIR = path_1.default.join(os_1.default.homedir(), ".okit");
17
27
  exports.REGISTRY_PATH = path_1.default.join(exports.OKIT_DIR, "registry.json");
18
28
  exports.LOGS_DIR = path_1.default.join(exports.OKIT_DIR, "logs");
@@ -48,45 +58,81 @@ exports.DEFAULT_REGISTRY = {
48
58
  // 系统基础
49
59
  {
50
60
  name: "Homebrew",
51
- install: getHomebrewInstallCommand(),
52
- upgrade: "brew update && brew upgrade",
53
- check: "command -v brew",
54
- versionCmd: "brew --version | head -1",
61
+ install: { darwin: getHomebrewInstallCommand() },
62
+ upgrade: { darwin: "brew update && brew upgrade" },
63
+ check: { darwin: "command -v brew" },
64
+ versionCmd: { darwin: "brew --version | head -1" },
55
65
  },
56
66
  // 开发基础
57
67
  {
58
68
  name: "Node.js",
59
- install: "brew install node",
60
- upgrade: "brew upgrade node",
61
- uninstall: "brew uninstall node",
69
+ install: {
70
+ darwin: "brew install node",
71
+ linux: "curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash - && sudo apt-get install -y nodejs",
72
+ },
73
+ upgrade: {
74
+ darwin: "brew upgrade node",
75
+ linux: "sudo apt-get update && sudo apt-get install -y nodejs",
76
+ },
77
+ uninstall: {
78
+ darwin: "brew uninstall node",
79
+ linux: "sudo apt-get remove -y nodejs",
80
+ },
62
81
  check: "command -v node",
63
82
  versionCmd: "node --version",
64
83
  dependencies: ["Homebrew"],
65
84
  },
66
85
  {
67
86
  name: "Git",
68
- install: "brew install git",
69
- upgrade: "brew upgrade git",
70
- uninstall: "brew uninstall --force git",
87
+ install: {
88
+ darwin: "brew install git",
89
+ linux: "sudo apt-get update && sudo apt-get install -y git",
90
+ },
91
+ upgrade: {
92
+ darwin: "brew upgrade git",
93
+ linux: "sudo apt-get update && sudo apt-get install -y git",
94
+ },
95
+ uninstall: {
96
+ darwin: "brew uninstall --force git",
97
+ linux: "sudo apt-get remove -y git",
98
+ },
71
99
  check: "command -v git",
72
100
  versionCmd: "git --version",
73
- dependencies: ["Homebrew"],
74
101
  },
75
102
  {
76
103
  name: "GitHub CLI",
77
- install: "brew install gh",
78
- upgrade: "brew upgrade gh",
79
- uninstall: "brew uninstall gh",
104
+ install: {
105
+ darwin: "brew install gh",
106
+ linux: "type -p curl >/dev/null && (curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg && echo 'deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main' | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null && sudo apt-get update && sudo apt-get install -y gh)",
107
+ },
108
+ upgrade: {
109
+ darwin: "brew upgrade gh",
110
+ linux: "sudo apt-get update && sudo apt-get install -y gh",
111
+ },
112
+ uninstall: {
113
+ darwin: "brew uninstall gh",
114
+ linux: "sudo apt-get remove -y gh",
115
+ },
80
116
  check: "command -v gh",
81
117
  versionCmd: "gh --version | head -1",
82
118
  authCheck: "gh auth status 2>&1",
119
+ authFix: "gh auth login",
83
120
  dependencies: ["Homebrew"],
84
121
  },
85
122
  {
86
123
  name: "pnpm",
87
- install: "brew install pnpm",
88
- upgrade: "brew upgrade pnpm",
89
- uninstall: "brew uninstall pnpm",
124
+ install: {
125
+ darwin: "brew install pnpm",
126
+ linux: "npm install -g pnpm",
127
+ },
128
+ upgrade: {
129
+ darwin: "brew upgrade pnpm",
130
+ linux: "npm update -g pnpm",
131
+ },
132
+ uninstall: {
133
+ darwin: "brew uninstall pnpm",
134
+ linux: "npm uninstall -g pnpm",
135
+ },
90
136
  check: "command -v pnpm",
91
137
  versionCmd: "pnpm --version",
92
138
  dependencies: ["Homebrew"],
@@ -101,21 +147,40 @@ exports.DEFAULT_REGISTRY = {
101
147
  },
102
148
  {
103
149
  name: "Python",
104
- install: "brew install python",
105
- upgrade: "brew upgrade python",
106
- uninstall: "brew uninstall python",
150
+ install: {
151
+ darwin: "brew install python",
152
+ linux: "sudo apt-get update && sudo apt-get install -y python3 python3-pip",
153
+ },
154
+ upgrade: {
155
+ darwin: "brew upgrade python",
156
+ linux: "sudo apt-get update && sudo apt-get install -y python3 python3-pip",
157
+ },
158
+ uninstall: {
159
+ darwin: "brew uninstall python",
160
+ linux: "sudo apt-get remove -y python3",
161
+ },
107
162
  check: "command -v python3",
108
163
  versionCmd: "python3 --version",
109
164
  dependencies: ["Homebrew"],
110
165
  },
111
166
  {
112
167
  name: "Docker",
113
- install: "echo '正在安装 Docker Desktop...' && brew install --cask docker || (echo 'Homebrew 安装失败,请手动从 https://www.docker.com/products/docker-desktop 下载安装' && exit 1)",
114
- upgrade: "brew upgrade --cask docker",
115
- uninstall: "brew uninstall --cask docker",
168
+ install: {
169
+ darwin: "brew install --cask docker || echo 'Homebrew 安装失败,请手动从 https://www.docker.com/products/docker-desktop 下载安装'",
170
+ linux: "curl -fsSL https://get.docker.com | sudo sh && sudo usermod -aG docker $USER",
171
+ },
172
+ upgrade: {
173
+ darwin: "brew upgrade --cask docker",
174
+ linux: "sudo apt-get update && sudo apt-get install -y docker-ce docker-ce-cli containerd.io",
175
+ },
176
+ uninstall: {
177
+ darwin: "brew uninstall --cask docker",
178
+ linux: "sudo apt-get remove -y docker-ce docker-ce-cli containerd.io",
179
+ },
116
180
  check: "command -v docker",
117
181
  versionCmd: "docker --version",
118
182
  authCheck: "docker info 2>&1 | head -3",
183
+ authFix: "docker login",
119
184
  dependencies: ["Homebrew"],
120
185
  },
121
186
  // AI Coding
@@ -148,18 +213,36 @@ exports.DEFAULT_REGISTRY = {
148
213
  // 信息抓取
149
214
  {
150
215
  name: "yt-dlp",
151
- install: "brew install yt-dlp",
152
- upgrade: "brew upgrade yt-dlp",
153
- uninstall: "brew uninstall yt-dlp",
216
+ install: {
217
+ darwin: "brew install yt-dlp",
218
+ linux: "sudo curl -L https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -o /usr/local/bin/yt-dlp && sudo chmod a+rx /usr/local/bin/yt-dlp",
219
+ },
220
+ upgrade: {
221
+ darwin: "brew upgrade yt-dlp",
222
+ linux: "sudo yt-dlp -U",
223
+ },
224
+ uninstall: {
225
+ darwin: "brew uninstall yt-dlp",
226
+ linux: "sudo rm -f /usr/local/bin/yt-dlp",
227
+ },
154
228
  check: "command -v yt-dlp",
155
229
  versionCmd: "yt-dlp --version",
156
230
  dependencies: ["Homebrew"],
157
231
  },
158
232
  {
159
233
  name: "curl",
160
- install: "brew install curl",
161
- upgrade: "brew upgrade curl",
162
- uninstall: "brew uninstall curl",
234
+ install: {
235
+ darwin: "brew install curl",
236
+ linux: "sudo apt-get update && sudo apt-get install -y curl",
237
+ },
238
+ upgrade: {
239
+ darwin: "brew upgrade curl",
240
+ linux: "sudo apt-get update && sudo apt-get install -y curl",
241
+ },
242
+ uninstall: {
243
+ darwin: "brew uninstall curl",
244
+ linux: "sudo apt-get remove -y curl",
245
+ },
163
246
  check: "command -v curl",
164
247
  versionCmd: "curl --version | head -1",
165
248
  dependencies: ["Homebrew"],
@@ -191,36 +274,72 @@ exports.DEFAULT_REGISTRY = {
191
274
  },
192
275
  {
193
276
  name: "Pandoc",
194
- install: "brew install pandoc",
195
- upgrade: "brew upgrade pandoc",
196
- uninstall: "brew uninstall pandoc",
277
+ install: {
278
+ darwin: "brew install pandoc",
279
+ linux: "sudo apt-get update && sudo apt-get install -y pandoc",
280
+ },
281
+ upgrade: {
282
+ darwin: "brew upgrade pandoc",
283
+ linux: "sudo apt-get update && sudo apt-get install -y pandoc",
284
+ },
285
+ uninstall: {
286
+ darwin: "brew uninstall pandoc",
287
+ linux: "sudo apt-get remove -y pandoc",
288
+ },
197
289
  check: "command -v pandoc",
198
290
  dependencies: ["Homebrew"],
199
291
  },
200
292
  // 视频 & 多媒体
201
293
  {
202
294
  name: "ffmpeg",
203
- install: "brew install ffmpeg",
204
- upgrade: "brew upgrade ffmpeg",
205
- uninstall: "brew uninstall ffmpeg",
295
+ install: {
296
+ darwin: "brew install ffmpeg",
297
+ linux: "sudo apt-get update && sudo apt-get install -y ffmpeg",
298
+ },
299
+ upgrade: {
300
+ darwin: "brew upgrade ffmpeg",
301
+ linux: "sudo apt-get update && sudo apt-get install -y ffmpeg",
302
+ },
303
+ uninstall: {
304
+ darwin: "brew uninstall ffmpeg",
305
+ linux: "sudo apt-get remove -y ffmpeg",
306
+ },
206
307
  check: "command -v ffmpeg",
207
308
  versionCmd: "ffmpeg -version 2>&1 | head -1",
208
309
  dependencies: ["Homebrew"],
209
310
  },
210
311
  {
211
312
  name: "ImageMagick",
212
- install: "brew install imagemagick",
213
- upgrade: "brew upgrade imagemagick",
214
- uninstall: "brew uninstall imagemagick",
313
+ install: {
314
+ darwin: "brew install imagemagick",
315
+ linux: "sudo apt-get update && sudo apt-get install -y imagemagick",
316
+ },
317
+ upgrade: {
318
+ darwin: "brew upgrade imagemagick",
319
+ linux: "sudo apt-get update && sudo apt-get install -y imagemagick",
320
+ },
321
+ uninstall: {
322
+ darwin: "brew uninstall imagemagick",
323
+ linux: "sudo apt-get remove -y imagemagick",
324
+ },
215
325
  check: "command -v convert",
216
326
  versionCmd: "convert --version | head -1",
217
327
  dependencies: ["Homebrew"],
218
328
  },
219
329
  {
220
330
  name: "pipx",
221
- install: "brew install pipx && pipx ensurepath",
222
- upgrade: "brew upgrade pipx",
223
- uninstall: "brew uninstall pipx",
331
+ install: {
332
+ darwin: "brew install pipx && pipx ensurepath",
333
+ linux: "sudo apt-get update && sudo apt-get install -y pipx && pipx ensurepath",
334
+ },
335
+ upgrade: {
336
+ darwin: "brew upgrade pipx",
337
+ linux: "sudo apt-get update && sudo apt-get install -y pipx",
338
+ },
339
+ uninstall: {
340
+ darwin: "brew uninstall pipx",
341
+ linux: "sudo apt-get remove -y pipx",
342
+ },
224
343
  check: "command -v pipx",
225
344
  versionCmd: "pipx --version",
226
345
  dependencies: ["Homebrew", "Python"],
@@ -244,9 +363,18 @@ exports.DEFAULT_REGISTRY = {
244
363
  },
245
364
  {
246
365
  name: "DuckDB",
247
- install: "brew install duckdb",
248
- upgrade: "brew upgrade duckdb",
249
- uninstall: "brew uninstall duckdb",
366
+ install: {
367
+ darwin: "brew install duckdb",
368
+ linux: "curl -fsSL https://install.duckdb.org | sh",
369
+ },
370
+ upgrade: {
371
+ darwin: "brew upgrade duckdb",
372
+ linux: "curl -fsSL https://install.duckdb.org | sh",
373
+ },
374
+ uninstall: {
375
+ darwin: "brew uninstall duckdb",
376
+ linux: "sudo rm -f /usr/local/bin/duckdb",
377
+ },
250
378
  check: "command -v duckdb",
251
379
  versionCmd: "duckdb --version 2>/dev/null || echo unknown",
252
380
  dependencies: ["Homebrew"],
@@ -254,62 +382,504 @@ exports.DEFAULT_REGISTRY = {
254
382
  // 通用效率
255
383
  {
256
384
  name: "ripgrep",
257
- install: "brew install ripgrep",
258
- upgrade: "brew upgrade ripgrep",
259
- uninstall: "brew uninstall ripgrep",
385
+ install: {
386
+ darwin: "brew install ripgrep",
387
+ linux: "sudo apt-get update && sudo apt-get install -y ripgrep",
388
+ },
389
+ upgrade: {
390
+ darwin: "brew upgrade ripgrep",
391
+ linux: "sudo apt-get update && sudo apt-get install -y ripgrep",
392
+ },
393
+ uninstall: {
394
+ darwin: "brew uninstall ripgrep",
395
+ linux: "sudo apt-get remove -y ripgrep",
396
+ },
260
397
  check: "command -v rg",
261
398
  versionCmd: "rg --version | head -1",
262
399
  dependencies: ["Homebrew"],
263
400
  },
264
401
  {
265
402
  name: "fzf",
266
- install: "brew install fzf",
267
- upgrade: "brew upgrade fzf",
268
- uninstall: "brew uninstall fzf",
403
+ install: {
404
+ darwin: "brew install fzf",
405
+ linux: "sudo apt-get update && sudo apt-get install -y fzf",
406
+ },
407
+ upgrade: {
408
+ darwin: "brew upgrade fzf",
409
+ linux: "sudo apt-get update && sudo apt-get install -y fzf",
410
+ },
411
+ uninstall: {
412
+ darwin: "brew uninstall fzf",
413
+ linux: "sudo apt-get remove -y fzf",
414
+ },
269
415
  check: "command -v fzf",
270
416
  versionCmd: "fzf --version",
271
417
  dependencies: ["Homebrew"],
272
418
  },
273
419
  {
274
420
  name: "tmux",
275
- install: "brew install tmux",
276
- upgrade: "brew upgrade tmux",
277
- uninstall: "brew uninstall tmux",
421
+ install: {
422
+ darwin: "brew install tmux",
423
+ linux: "sudo apt-get update && sudo apt-get install -y tmux",
424
+ },
425
+ upgrade: {
426
+ darwin: "brew upgrade tmux",
427
+ linux: "sudo apt-get update && sudo apt-get install -y tmux",
428
+ },
429
+ uninstall: {
430
+ darwin: "brew uninstall tmux",
431
+ linux: "sudo apt-get remove -y tmux",
432
+ },
278
433
  check: "command -v tmux",
279
434
  dependencies: ["Homebrew"],
280
435
  },
281
436
  {
282
437
  name: "iTerm2",
283
- install: "brew install --cask iterm2",
284
- upgrade: "brew upgrade --cask iterm2",
285
- uninstall: "brew uninstall --cask iterm2",
286
- check: "test -d /Applications/iTerm.app",
438
+ install: { darwin: "brew install --cask iterm2" },
439
+ upgrade: { darwin: "brew upgrade --cask iterm2" },
440
+ uninstall: { darwin: "brew uninstall --cask iterm2" },
441
+ check: { darwin: "test -d /Applications/iTerm.app" },
287
442
  dependencies: ["Homebrew"],
288
443
  },
289
444
  {
290
445
  name: "iTerm2 Browser Plugin",
291
- install: "bash -lc 'set -euo pipefail; TMP_DIR=\"$(mktemp -d)\"; trap \"rm -rf \\\"$TMP_DIR\\\"\" EXIT; ZIP_PATH=\"$TMP_DIR/iTermBrowserPlugin-1.0.zip\"; curl -fL \"https://iterm2.com/downloads/browser-plugin/iTermBrowserPlugin-1.0.zip\" -o \"$ZIP_PATH\"; unzip -o \"$ZIP_PATH\" -d \"$TMP_DIR\" >/dev/null; APP_PATH=\"$(find \"$TMP_DIR\" -maxdepth 3 -type d -name \"iTermBrowserPlugin*.app\" | head -n 1)\"; if [ -z \"$APP_PATH\" ]; then echo \"未在压缩包中找到 iTermBrowserPlugin.app\"; exit 1; fi; sudo rm -rf \"/Applications/$(basename \"$APP_PATH\")\"; sudo mv \"$APP_PATH\" /Applications/'",
292
- upgrade: "bash -lc 'set -euo pipefail; TMP_DIR=\"$(mktemp -d)\"; trap \"rm -rf \\\"$TMP_DIR\\\"\" EXIT; ZIP_PATH=\"$TMP_DIR/iTermBrowserPlugin-1.0.zip\"; curl -fL \"https://iterm2.com/downloads/browser-plugin/iTermBrowserPlugin-1.0.zip\" -o \"$ZIP_PATH\"; unzip -o \"$ZIP_PATH\" -d \"$TMP_DIR\" >/dev/null; APP_PATH=\"$(find \"$TMP_DIR\" -maxdepth 3 -type d -name \"iTermBrowserPlugin*.app\" | head -n 1)\"; if [ -z \"$APP_PATH\" ]; then echo \"未在压缩包中找到 iTermBrowserPlugin.app\"; exit 1; fi; sudo rm -rf \"/Applications/$(basename \"$APP_PATH\")\"; sudo mv \"$APP_PATH\" /Applications/'",
293
- uninstall: "sudo rm -rf /Applications/iTermBrowserPlugin.app",
294
- check: "test -d /Applications/iTermBrowserPlugin.app",
446
+ install: {
447
+ darwin: "bash -lc 'set -euo pipefail; TMP_DIR=\"$(mktemp -d)\"; trap \"rm -rf \\\"$TMP_DIR\\\"\" EXIT; ZIP_PATH=\"$TMP_DIR/iTermBrowserPlugin-1.0.zip\"; curl -fL \"https://iterm2.com/downloads/browser-plugin/iTermBrowserPlugin-1.0.zip\" -o \"$ZIP_PATH\"; unzip -o \"$ZIP_PATH\" -d \"$TMP_DIR\" >/dev/null; APP_PATH=\"$(find \"$TMP_DIR\" -maxdepth 3 -type d -name \"iTermBrowserPlugin*.app\" | head -n 1)\"; if [ -z \"$APP_PATH\" ]; then echo \"未在压缩包中找到 iTermBrowserPlugin.app\"; exit 1; fi; sudo rm -rf \"/Applications/$(basename \"$APP_PATH\")\"; sudo mv \"$APP_PATH\" /Applications/'",
448
+ },
449
+ upgrade: {
450
+ darwin: "bash -lc 'set -euo pipefail; TMP_DIR=\"$(mktemp -d)\"; trap \"rm -rf \\\"$TMP_DIR\\\"\" EXIT; ZIP_PATH=\"$TMP_DIR/iTermBrowserPlugin-1.0.zip\"; curl -fL \"https://iterm2.com/downloads/browser-plugin/iTermBrowserPlugin-1.0.zip\" -o \"$ZIP_PATH\"; unzip -o \"$ZIP_PATH\" -d \"$TMP_DIR\" >/dev/null; APP_PATH=\"$(find \"$TMP_DIR\" -maxdepth 3 -type d -name \"iTermBrowserPlugin*.app\" | head -n 1)\"; if [ -z \"$APP_PATH\" ]; then echo \"未在压缩包中找到 iTermBrowserPlugin.app\"; exit 1; fi; sudo rm -rf \"/Applications/$(basename \"$APP_PATH\")\"; sudo mv \"$APP_PATH\" /Applications/'",
451
+ },
452
+ uninstall: { darwin: "sudo rm -rf /Applications/iTermBrowserPlugin.app" },
453
+ check: { darwin: "test -d /Applications/iTermBrowserPlugin.app" },
295
454
  dependencies: ["iTerm2"],
296
455
  },
297
456
  {
298
457
  name: "Warp",
299
- install: "brew install --cask warp",
300
- upgrade: "brew upgrade --cask warp",
301
- uninstall: "brew uninstall --cask warp",
302
- check: "test -d /Applications/Warp.app",
458
+ install: { darwin: "brew install --cask warp" },
459
+ upgrade: { darwin: "brew upgrade --cask warp" },
460
+ uninstall: { darwin: "brew uninstall --cask warp" },
461
+ check: { darwin: "test -d /Applications/Warp.app" },
303
462
  dependencies: ["Homebrew"],
304
463
  },
305
464
  {
306
465
  name: "uv (uvx)",
307
- install: "brew install uv",
308
- upgrade: "brew upgrade uv",
309
- uninstall: "brew uninstall uv",
466
+ install: {
467
+ darwin: "brew install uv",
468
+ linux: "curl -LsSf https://astral.sh/uv/install.sh | sh",
469
+ },
470
+ upgrade: {
471
+ darwin: "brew upgrade uv",
472
+ linux: "uv self update",
473
+ },
474
+ uninstall: {
475
+ darwin: "brew uninstall uv",
476
+ linux: "uv self uninstall",
477
+ },
310
478
  check: "command -v uv && command -v uvx",
311
479
  dependencies: ["Homebrew"],
312
480
  },
481
+ // 部署 & 云服务
482
+ {
483
+ name: "Wrangler",
484
+ install: "npm install -g wrangler",
485
+ upgrade: "npm update -g wrangler",
486
+ uninstall: "npm uninstall -g wrangler",
487
+ check: "command -v wrangler",
488
+ versionCmd: "wrangler --version 2>/dev/null | head -1",
489
+ authCheck: "wrangler whoami 2>&1",
490
+ authFix: "wrangler login",
491
+ dependencies: ["Node.js"],
492
+ },
493
+ {
494
+ name: "Vercel CLI",
495
+ install: "npm install -g vercel",
496
+ upgrade: "npm update -g vercel",
497
+ uninstall: "npm uninstall -g vercel",
498
+ check: "command -v vercel",
499
+ versionCmd: "vercel --version 2>/dev/null | head -1",
500
+ authCheck: "vercel whoami 2>&1",
501
+ authFix: "vercel login",
502
+ dependencies: ["Node.js"],
503
+ },
504
+ {
505
+ name: "Netlify CLI",
506
+ install: "npm install -g netlify-cli",
507
+ upgrade: "npm update -g netlify-cli",
508
+ uninstall: "npm uninstall -g netlify-cli",
509
+ check: "command -v netlify",
510
+ versionCmd: "netlify --version 2>/dev/null | head -1",
511
+ authCheck: "netlify status 2>&1",
512
+ authFix: "netlify login",
513
+ dependencies: ["Node.js"],
514
+ },
515
+ {
516
+ name: "AWS CLI",
517
+ install: {
518
+ darwin: "brew install awscli",
519
+ linux: "curl \"https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip\" -o /tmp/awscliv2.zip && unzip -o /tmp/awscliv2.zip -d /tmp && sudo /tmp/aws/install && rm -rf /tmp/awscliv2.zip /tmp/aws",
520
+ },
521
+ upgrade: {
522
+ darwin: "brew upgrade awscli",
523
+ linux: "curl \"https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip\" -o /tmp/awscliv2.zip && unzip -o /tmp/awscliv2.zip -d /tmp && sudo /tmp/aws/install --update && rm -rf /tmp/awscliv2.zip /tmp/aws",
524
+ },
525
+ uninstall: {
526
+ darwin: "brew uninstall awscli",
527
+ linux: "sudo rm -rf /usr/local/aws-cli /usr/local/bin/aws /usr/local/bin/aws_completer",
528
+ },
529
+ check: "command -v aws",
530
+ versionCmd: "aws --version 2>&1 | head -1",
531
+ authCheck: "aws sts get-caller-identity 2>&1",
532
+ authFix: "aws configure",
533
+ dependencies: ["Homebrew"],
534
+ },
535
+ {
536
+ name: "Railway CLI",
537
+ install: "npm install -g @railway/cli",
538
+ upgrade: "npm update -g @railway/cli",
539
+ uninstall: "npm uninstall -g @railway/cli",
540
+ check: "command -v railway",
541
+ versionCmd: "railway --version 2>/dev/null",
542
+ authCheck: "railway whoami 2>&1",
543
+ authFix: "railway login",
544
+ dependencies: ["Node.js"],
545
+ },
546
+ {
547
+ name: "Supabase CLI",
548
+ install: {
549
+ darwin: "brew install supabase/tap/supabase",
550
+ linux: "npm install -g supabase",
551
+ },
552
+ upgrade: {
553
+ darwin: "brew upgrade supabase/tap/supabase",
554
+ linux: "npm update -g supabase",
555
+ },
556
+ uninstall: {
557
+ darwin: "brew uninstall supabase",
558
+ linux: "npm uninstall -g supabase",
559
+ },
560
+ check: "command -v supabase",
561
+ versionCmd: "supabase --version 2>/dev/null",
562
+ authCheck: "supabase projects list 2>&1",
563
+ authFix: "supabase login",
564
+ dependencies: ["Homebrew"],
565
+ },
566
+ {
567
+ name: "Firebase CLI",
568
+ install: "npm install -g firebase-tools",
569
+ upgrade: "npm update -g firebase-tools",
570
+ uninstall: "npm uninstall -g firebase-tools",
571
+ check: "command -v firebase",
572
+ versionCmd: "firebase --version 2>/dev/null",
573
+ authCheck: "firebase login:list 2>&1",
574
+ authFix: "firebase login",
575
+ dependencies: ["Node.js"],
576
+ },
577
+ // 网络 & 隧道
578
+ {
579
+ name: "ngrok",
580
+ install: {
581
+ darwin: "brew install ngrok/ngrok/ngrok",
582
+ linux: "curl -sSL https://ngrok-agent.s3.amazonaws.com/ngrok.asc | sudo tee /etc/apt/trusted.gpg.d/ngrok.asc >/dev/null && echo 'deb https://ngrok-agent.s3.amazonaws.com buster main' | sudo tee /etc/apt/sources.list.d/ngrok.list && sudo apt-get update && sudo apt-get install -y ngrok",
583
+ },
584
+ upgrade: {
585
+ darwin: "brew upgrade ngrok/ngrok/ngrok",
586
+ linux: "sudo apt-get update && sudo apt-get install -y ngrok",
587
+ },
588
+ uninstall: {
589
+ darwin: "brew uninstall ngrok",
590
+ linux: "sudo apt-get remove -y ngrok",
591
+ },
592
+ check: "command -v ngrok",
593
+ versionCmd: "ngrok --version 2>/dev/null",
594
+ authCheck: "ngrok config check 2>&1",
595
+ authFix: "ngrok config add-authtoken",
596
+ dependencies: ["Homebrew"],
597
+ },
598
+ {
599
+ name: "cloudflared",
600
+ install: {
601
+ darwin: "brew install cloudflare/cloudflare/cloudflared",
602
+ linux: "curl -L https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb -o /tmp/cloudflared.deb && sudo dpkg -i /tmp/cloudflared.deb && rm /tmp/cloudflared.deb",
603
+ },
604
+ upgrade: {
605
+ darwin: "brew upgrade cloudflare/cloudflare/cloudflared",
606
+ linux: "curl -L https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb -o /tmp/cloudflared.deb && sudo dpkg -i /tmp/cloudflared.deb && rm /tmp/cloudflared.deb",
607
+ },
608
+ uninstall: {
609
+ darwin: "brew uninstall cloudflared",
610
+ linux: "sudo apt-get remove -y cloudflared",
611
+ },
612
+ check: "command -v cloudflared",
613
+ versionCmd: "cloudflared --version 2>/dev/null",
614
+ dependencies: ["Homebrew"],
615
+ },
616
+ // 云平台 CLI
617
+ {
618
+ name: "Google Cloud CLI",
619
+ install: {
620
+ darwin: "brew install --cask google-cloud-sdk",
621
+ linux: "curl https://sdk.cloud.google.com | bash -s -- --disable-prompts && echo 'source ~/google-cloud-sdk/path.bash.inc' >> ~/.bashrc",
622
+ },
623
+ upgrade: {
624
+ darwin: "brew upgrade --cask google-cloud-sdk",
625
+ linux: "gcloud components update --quiet",
626
+ },
627
+ uninstall: {
628
+ darwin: "brew uninstall --cask google-cloud-sdk",
629
+ linux: "rm -rf ~/google-cloud-sdk && sed -i '/google-cloud-sdk/d' ~/.bashrc",
630
+ },
631
+ check: "command -v gcloud",
632
+ versionCmd: "gcloud --version 2>/dev/null | head -1",
633
+ authCheck: "gcloud auth list 2>&1 | head -5",
634
+ authFix: "gcloud auth login",
635
+ dependencies: ["Homebrew"],
636
+ },
637
+ {
638
+ name: "Azure CLI",
639
+ install: {
640
+ darwin: "brew install azure-cli",
641
+ linux: "curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash",
642
+ },
643
+ upgrade: {
644
+ darwin: "brew upgrade azure-cli",
645
+ linux: "sudo apt-get update && sudo apt-get install -y azure-cli",
646
+ },
647
+ uninstall: {
648
+ darwin: "brew uninstall azure-cli",
649
+ linux: "sudo apt-get remove -y azure-cli",
650
+ },
651
+ check: "command -v az",
652
+ versionCmd: "az --version 2>/dev/null | head -1",
653
+ authCheck: "az account show 2>&1 | head -5",
654
+ authFix: "az login",
655
+ dependencies: ["Homebrew"],
656
+ },
657
+ {
658
+ name: "Fly.io CLI",
659
+ install: {
660
+ darwin: "brew install flyctl",
661
+ linux: "curl -L https://fly.io/install.sh | sh",
662
+ },
663
+ upgrade: {
664
+ darwin: "brew upgrade flyctl",
665
+ linux: "flyctl version update",
666
+ },
667
+ uninstall: {
668
+ darwin: "brew uninstall flyctl",
669
+ linux: "rm -rf ~/.fly",
670
+ },
671
+ check: "command -v flyctl || command -v fly",
672
+ versionCmd: "flyctl version 2>/dev/null | head -1",
673
+ authCheck: "flyctl auth whoami 2>&1",
674
+ authFix: "flyctl auth login",
675
+ dependencies: ["Homebrew"],
676
+ },
677
+ {
678
+ name: "Heroku CLI",
679
+ install: {
680
+ darwin: "brew tap heroku/brew && brew install heroku",
681
+ linux: "curl https://cli-assets.heroku.com/install.sh | sh",
682
+ },
683
+ upgrade: {
684
+ darwin: "brew upgrade heroku",
685
+ linux: "curl https://cli-assets.heroku.com/install.sh | sh",
686
+ },
687
+ uninstall: {
688
+ darwin: "brew uninstall heroku",
689
+ linux: "sudo rm -rf /usr/local/lib/heroku /usr/local/bin/heroku",
690
+ },
691
+ check: "command -v heroku",
692
+ versionCmd: "heroku --version 2>/dev/null | head -1",
693
+ authCheck: "heroku auth:whoami 2>&1",
694
+ authFix: "heroku auth:login",
695
+ dependencies: ["Homebrew"],
696
+ },
697
+ // 通用效率工具
698
+ {
699
+ name: "jq",
700
+ install: {
701
+ darwin: "brew install jq",
702
+ linux: "sudo apt-get update && sudo apt-get install -y jq",
703
+ },
704
+ upgrade: {
705
+ darwin: "brew upgrade jq",
706
+ linux: "sudo apt-get update && sudo apt-get install -y jq",
707
+ },
708
+ uninstall: {
709
+ darwin: "brew uninstall jq",
710
+ linux: "sudo apt-get remove -y jq",
711
+ },
712
+ check: "command -v jq",
713
+ versionCmd: "jq --version",
714
+ dependencies: ["Homebrew"],
715
+ },
716
+ {
717
+ name: "httpie",
718
+ install: {
719
+ darwin: "brew install httpie",
720
+ linux: "sudo apt-get update && sudo apt-get install -y httpie",
721
+ },
722
+ upgrade: {
723
+ darwin: "brew upgrade httpie",
724
+ linux: "sudo apt-get update && sudo apt-get install -y httpie",
725
+ },
726
+ uninstall: {
727
+ darwin: "brew uninstall httpie",
728
+ linux: "sudo apt-get remove -y httpie",
729
+ },
730
+ check: "command -v http",
731
+ versionCmd: "http --version 2>/dev/null | head -1",
732
+ dependencies: ["Homebrew"],
733
+ },
734
+ {
735
+ name: "tree",
736
+ install: {
737
+ darwin: "brew install tree",
738
+ linux: "sudo apt-get update && sudo apt-get install -y tree",
739
+ },
740
+ upgrade: {
741
+ darwin: "brew upgrade tree",
742
+ linux: "sudo apt-get update && sudo apt-get install -y tree",
743
+ },
744
+ uninstall: {
745
+ darwin: "brew uninstall tree",
746
+ linux: "sudo apt-get remove -y tree",
747
+ },
748
+ check: "command -v tree",
749
+ versionCmd: "tree --version 2>/dev/null | head -1",
750
+ dependencies: ["Homebrew"],
751
+ },
752
+ {
753
+ name: "bat",
754
+ install: {
755
+ darwin: "brew install bat",
756
+ linux: "sudo apt-get update && sudo apt-get install -y bat",
757
+ },
758
+ upgrade: {
759
+ darwin: "brew upgrade bat",
760
+ linux: "sudo apt-get update && sudo apt-get install -y bat",
761
+ },
762
+ uninstall: {
763
+ darwin: "brew uninstall bat",
764
+ linux: "sudo apt-get remove -y bat",
765
+ },
766
+ check: "command -v bat",
767
+ versionCmd: "bat --version 2>/dev/null | head -1",
768
+ dependencies: ["Homebrew"],
769
+ },
770
+ {
771
+ name: "watchman",
772
+ install: {
773
+ darwin: "brew install watchman",
774
+ linux: "sudo apt-get update && sudo apt-get install -y watchman",
775
+ },
776
+ upgrade: {
777
+ darwin: "brew upgrade watchman",
778
+ linux: "sudo apt-get update && sudo apt-get install -y watchman",
779
+ },
780
+ uninstall: {
781
+ darwin: "brew uninstall watchman",
782
+ linux: "sudo apt-get remove -y watchman",
783
+ },
784
+ check: "command -v watchman",
785
+ versionCmd: "watchman --version 2>/dev/null",
786
+ dependencies: ["Homebrew"],
787
+ },
788
+ // 容器 & 编排
789
+ {
790
+ name: "kubectl",
791
+ install: {
792
+ darwin: "brew install kubectl",
793
+ linux: "curl -LO \"https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl\" && sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl && rm kubectl",
794
+ },
795
+ upgrade: {
796
+ darwin: "brew upgrade kubectl",
797
+ linux: "curl -LO \"https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl\" && sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl && rm kubectl",
798
+ },
799
+ uninstall: {
800
+ darwin: "brew uninstall kubectl",
801
+ linux: "sudo rm -f /usr/local/bin/kubectl",
802
+ },
803
+ check: "command -v kubectl",
804
+ versionCmd: "kubectl version --client --short 2>/dev/null || kubectl version --client 2>&1 | head -1",
805
+ authCheck: "kubectl cluster-info 2>&1 | head -1",
806
+ authFix: "kubectl config set-cluster",
807
+ dependencies: ["Homebrew"],
808
+ },
809
+ {
810
+ name: "Terraform",
811
+ install: {
812
+ darwin: "brew install hashicorp/tap/terraform",
813
+ linux: "curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg && echo 'deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main' | sudo tee /etc/apt/sources.list.d/hashicorp.list && sudo apt-get update && sudo apt-get install -y terraform",
814
+ },
815
+ upgrade: {
816
+ darwin: "brew upgrade hashicorp/tap/terraform",
817
+ linux: "sudo apt-get update && sudo apt-get install -y terraform",
818
+ },
819
+ uninstall: {
820
+ darwin: "brew uninstall terraform",
821
+ linux: "sudo apt-get remove -y terraform",
822
+ },
823
+ check: "command -v terraform",
824
+ versionCmd: "terraform --version 2>/dev/null | head -1",
825
+ dependencies: ["Homebrew"],
826
+ },
827
+ // 数据库客户端
828
+ {
829
+ name: "Redis CLI",
830
+ install: {
831
+ darwin: "brew install redis",
832
+ linux: "sudo apt-get update && sudo apt-get install -y redis-tools",
833
+ },
834
+ upgrade: {
835
+ darwin: "brew upgrade redis",
836
+ linux: "sudo apt-get update && sudo apt-get install -y redis-tools",
837
+ },
838
+ uninstall: {
839
+ darwin: "brew uninstall redis",
840
+ linux: "sudo apt-get remove -y redis-tools",
841
+ },
842
+ check: "command -v redis-cli",
843
+ versionCmd: "redis-cli --version",
844
+ dependencies: ["Homebrew"],
845
+ },
846
+ {
847
+ name: "PostgreSQL",
848
+ install: {
849
+ darwin: "brew install postgresql@16",
850
+ linux: "sudo apt-get update && sudo apt-get install -y postgresql-client",
851
+ },
852
+ upgrade: {
853
+ darwin: "brew upgrade postgresql@16",
854
+ linux: "sudo apt-get update && sudo apt-get install -y postgresql-client",
855
+ },
856
+ uninstall: {
857
+ darwin: "brew uninstall postgresql@16",
858
+ linux: "sudo apt-get remove -y postgresql-client",
859
+ },
860
+ check: "command -v psql",
861
+ versionCmd: "psql --version",
862
+ dependencies: ["Homebrew"],
863
+ },
864
+ // AI & LLM
865
+ {
866
+ name: "Ollama",
867
+ install: {
868
+ darwin: "brew install --cask ollama",
869
+ linux: "curl -fsSL https://ollama.com/install.sh | sh",
870
+ },
871
+ upgrade: {
872
+ darwin: "brew upgrade --cask ollama",
873
+ linux: "curl -fsSL https://ollama.com/install.sh | sh",
874
+ },
875
+ uninstall: {
876
+ darwin: "brew uninstall --cask ollama",
877
+ linux: "sudo rm -f /usr/local/bin/ollama",
878
+ },
879
+ check: "command -v ollama",
880
+ versionCmd: "ollama --version 2>/dev/null",
881
+ dependencies: ["Homebrew"],
882
+ },
313
883
  {
314
884
  name: "OpenClaw",
315
885
  install: "bash -c 'set -e; if command -v curl >/dev/null 2>&1; then curl -fsSL https://openclaw.ai/install.sh | bash; elif command -v npm >/dev/null 2>&1; then npm install -g openclaw@latest; elif command -v pnpm >/dev/null 2>&1; then pnpm add -g openclaw@latest; else echo \"缺少 curl/npm/pnpm,无法安装 OpenClaw\"; exit 1; fi'",