使用 in-cli 保持有序
Source: Dev.to
管理大量仓库的问题
我们都“喜欢”微服务——至少在理论上是这样。实际上,当你需要在 15 个不同的仓库中升级依赖、执行构建或 git pull 时,这个过程会很快变得痛苦。
“标签页囤积者”策略
手动打开 15 个终端标签页,cd 进入每一个,执行命令,并祈祷没有遗漏。
“Unix 魔法师”策略
尝试构造一行代码遍历目录:
find . -maxdepth 1 -type d -exec sh -c 'cd "{}" && git pull' \;
它能工作,但是串行执行,速度慢。改用 xargs 并行:
ls -d */ | xargs -P 4 -I {} bash -c "cd {} && pnpm update"
现在又遇到另一个难题:xargs 在目录名含空格时会出错。要修复它需要在 find 上加 -print0,在 xargs 上加 -0,把原本简短的一行代码变成了难以阅读的 80 字符混乱。
介绍 in‑cli 🚀
in-cli 是一个零依赖的 Bash CLI,能够在每个目录中快速运行命令。它消除了复杂管道和标志的需求——只需告诉它要做什么。
基本用法
in [OPTIONS] [DIRECTORIES...] [--] COMMAND...
实际场景
场景 1:晨间例行任务
更新 ~/work 文件夹下的所有 20 个仓库:
# 更新 ~/work/ 目录中的每个仓库
in ~/work/* git pull
场景 2:“关键修复”部署
并行触发所有服务的构建脚本:
# 在所有子目录中并行运行 'make build'
in -P 8 ~/work/* make build
场景 3:依赖地狱
因为 CVE 更新每个服务中的 lodash,然后提交并推送:
in ~/work/* 'pnpm update lodash && git commit -am "updating lodash" && git push'
你可以在项目附带的 EXAMPLES.md 文件中找到 +50 其他示例。
为什么使用 in‑cli?
- 速度: 并行运行命令,无需额外标志。
- 简洁: 不必记住复杂的
find | xargs流水线。 - 可移植性: 纯 Bash,实现零外部依赖。
- 安全性: 开箱即用地处理带空格和特殊字符的目录名。
如果你在管理一个单体仓库或一堆微服务文件夹,别再写临时脚本了。试试 in‑cli,并告诉作者它是否为你省下了几次敲键(以及你的理智)。
祝使用愉快!