最近歪楼去做了一个项目,源于我英语不太好,commit message 总想不到最准确的表达,而 Copilot 不知道抽什么风,经常生成中文的 commit message,要么就是贼长,而且大小写、动词还是名词都不符合我同一个项目的写法。
于是打算自己做一个 CLI,用来生成 commit message,倒不一定要一步到位直接帮我 commit,可以写入剪贴板,感觉这是个很舒服的工作流。后来觉得这个 CLI 工具可以拓展下,加上一些我比较需要的功能。第一个想到的是 alias 的功能,以前都是用 pdm scripts,非常好用,但是现在不用慢吞吞的 pdm 改用 uv 了,而 uv 没有现在还没有 scripts 管理的功能
另外就是,确实好像没有个跨平台的 alias 工具。
于是我实现了个。就叫它 m
吧。它的配置存在三个地方,用户目录、venv 中 m 自己的文件夹下、pyproject.toml 中。这算是最佳实践了。python 中似乎没有这样的库,我打算之后完善了之后这一部分也可以单独封装个库来。下面是一些基本用法:
m alias x "a b c d"
这样就设置了 x
为 a b c d
的别名。可以这样使用:
m x --p v # 相当于 a b c d --p v
昨天配置了 uv workspace,第一次尝试用一个 monorepo 的架构维护 python 库哈哈哈。今天解决了一些问题,基本上 alias
的功能算是做完了。还发现了 typer 的一个 tab completion 的 bug,所以把 completion 的功能关了,这样还减少了一个依赖 哈哈哈
我目前已经加了好多 alias 了,确实都是我日常会用到的,下面是一些比较奇特的
- amend 一个提交,然后强推,或者强制同步 origin HEAD
- 一键更新各种包管理软件和他们管理的包
- ssh 到开发服务器
由于 PyPI 上短名字都被占了,我的包名还是 muspi-merl
,也就是说安装略微麻烦:
pip install muspi-merol
感觉有点长,不熟悉我名字的可能不好输入。我也发邮件问了自 2014 年占了茅坑不拉屎的 M
包的作者能不能白送我,目前没收到回复。等这个包变得更多功能了之后再考虑吧~
这几天准备加上:
- 管理环境变量
- m env set / get / del
- 从文件读取到剪贴板 / 从剪贴板粘贴到文件
- m copy / paste
- chat 的功能(这也是最初做这个项目的目的)
- ... | m ask ""
- 生成 commit message
- m gen commit
- 生成 README
- m gen readme
- 发起 HTTP 请求,类似
httpx[cli]
,但是支持流式响应和柯里化传参(中途 input)- m get / post / ...