3 个版本
0.0.3 | 2024年5月4日 |
---|---|
0.0.2 | 2024年5月4日 |
0.0.1 | 2024年3月2日 |
#1550 在 命令行工具
每月196 次下载
55KB
1.5K SLoC
Underdose (WIP)
Dotfile 过度使用者理想的伴侣。建议将二进制文件 underdose
别名为 ud
。计划通过 cargo、AUR 和 homebrew 进行分发。
WIP 警告
此工件仍在建设中。声明的功能尚未完全实现。
动机和哲学
为潜在用户提出的三个断言
- 每天生成 dotfiles 并想备份它们或在机器之间同步它们。
- 认为集中式 git 仓库是管理 dotfiles 的可行方式。
- 会使用 git,并期望工具链简单且无惊喜。
希望 underdose
可以作为满足上述需求的有力候选工具。
用户界面
先决条件
需要具有两个要求的 git 仓库
- 具有有效的
Drugstore.toml
文件; - 具有遵循
Drugstore.toml
中列出的规则的子目录。
git 仓库可以在任何时间准备好。分支不重要;历史不重要;只需确保工作树是干净的,即没有未跟踪的内容,没有暂存的内容,一切都被 git 管理。
underdose
只关心同步机器上的 dotfiles 和本地仓库;远程仓库在任何 underdose
操作中保持完整,这意味着
你必须自己设置 git 仓库并承诺维护它。
好处是你可以使用任何你感到舒适的工具链组合。
Drugstore 生命周期
准备一个本地 git 仓库。如果是远程的,请检索它。任何你想去的地方都可以。从现在起我们称它为 drugstore
。
在 drugstore
下运行 ud init
。然后,如果你有 $EDITOR
环境变量,将引导你到机器上的 Underdose.toml
设置,实际上是运行 ud config
。
如果你忘了仓库在哪里,不要感到困惑!ud where
会为你提供帮助。
Drugstore.toml
设置
包含两部分。
env
信息用于决定在特定机器上是否需要同步某些药片;- 每个
drip
收集的pill
用于管理。
# A simple pill about the nvim configuration. All machines follow the same
# configuration, and under the same path, so there is no subtlety.
[[pill]]
name = "nvim"
[[pill.drip]]
site = "~/.config/nvim"
[[pill.drip.arrow]]
site = "."
src.link = "."
可以将 drip
视为任务组,将 arrow
视为任务。更多示例,请查看 templates/Drugstore.toml
。
本地 underdose
的配置文件,命名为 Underdose.toml
,可以通过 CLI(ud config
,见下文)访问。一个示例(以及详细的教程)可以在 template/Drugstore.toml
中找到。
日常使用
ud sync
(词语选择不当)确保您的机器与您的 本地仓库 保持同步。它可以被视为在您的机器上安装药库或更新药库。 underdose
将按步骤尝试以下操作,并在出错时终止,这需要您手动修复,然后再进行一轮 ud sync
- 如果药库没有干净的工作树,则终止并提示用户进行暂存和提交。
- 对于所有药片,
underdose
会观察机器上的所有drip
,并查看它是否未同步、可修复地未同步或已同步。- 对于链接,未同步意味着它没有正确指向药库内部的地址。
- 对于 git,未同步意味着它不是正确的仓库;可修复地未同步意味着它是正确的仓库但未拉取。
- 对于收集器,// 待定: ..
- 在所有准备工作完成后,
underdose
会提示您本地同步已完成,您应该运行远程同步。
请注意,这些命令是在药片粒度级别上提供的,因此您可以操作一个特定的药片
ud sync nvim
在 ud sync
之后,您应该考虑通过 git pull
和 git push
进行仓库级别的远程同步,以保持您的机器 drip
最新。
就这些了!享受吧。
免责声明
此软件处于 alpha 阶段,可能包含未预见的错误。具有讽刺意味的是,尽管它是一个备份工具链,但请自行备份。幸运的是,underdose
不会在您的系统中产生垃圾,因此其他备份工具可以像以前一样轻松地管理事物。
依赖关系
~16–29MB
~461K SLoC