Muspi Merol

Muspi Merol 的个人主页

马上订阅 Muspi Merol RSS 更新: https://muspimerol.site/feed

m 的诞生

2024年11月6日 23:04

最近歪楼去做了一个项目,源于我英语不太好,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"

这样就设置了 xa 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 / ...