#dotfile #configuration #cli

bin+lib underdose

愿 dotfiles 伴你左右

3 个版本

0.0.3 2024年5月4日
0.0.2 2024年5月4日
0.0.1 2024年3月2日

#1550命令行工具

Download history 240/week @ 2024-05-04 1/week @ 2024-05-11

每月196 次下载

MIT 许可证

55KB
1.5K SLoC

Rust 879 SLoC // 0.0% comments BASH 259 SLoC PowerShell 91 SLoC Elvish 76 SLoC

Underdose (WIP)

Dotfile 过度使用者理想的伴侣。建议将二进制文件 underdose 别名为 ud。计划通过 cargo、AUR 和 homebrew 进行分发。

WIP 警告

此工件仍在建设中。声明的功能尚未完全实现。

动机和哲学

为潜在用户提出的三个断言

  • 每天生成 dotfiles 并想备份它们或在机器之间同步它们。
  • 认为集中式 git 仓库是管理 dotfiles 的可行方式。
  • 会使用 git,并期望工具链简单且无惊喜。

希望 underdose 可以作为满足上述需求的有力候选工具。

用户界面

先决条件

需要具有两个要求的 git 仓库

  1. 具有有效的 Drugstore.toml 文件;
  2. 具有遵循 Drugstore.toml 中列出的规则的子目录。

git 仓库可以在任何时间准备好。分支不重要;历史不重要;只需确保工作树是干净的,即没有未跟踪的内容,没有暂存的内容,一切都被 git 管理。

underdose 只关心同步机器上的 dotfiles 和本地仓库;远程仓库在任何 underdose 操作中保持完整,这意味着

你必须自己设置 git 仓库并承诺维护它。

好处是你可以使用任何你感到舒适的工具链组合。

Drugstore 生命周期

准备一个本地 git 仓库。如果是远程的,请检索它。任何你想去的地方都可以。从现在起我们称它为 drugstore

drugstore 下运行 ud init。然后,如果你有 $EDITOR 环境变量,将引导你到机器上的 Underdose.toml 设置,实际上是运行 ud config

如果你忘了仓库在哪里,不要感到困惑!ud where 会为你提供帮助。

Drugstore.toml 设置

包含两部分。

  1. env 信息用于决定在特定机器上是否需要同步某些药片;
  2. 每个 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

  1. 如果药库没有干净的工作树,则终止并提示用户进行暂存和提交。
  2. 对于所有药片,underdose 会观察机器上的所有 drip,并查看它是否未同步、可修复地未同步或已同步。
    1. 对于链接,未同步意味着它没有正确指向药库内部的地址。
    2. 对于 git,未同步意味着它不是正确的仓库;可修复地未同步意味着它是正确的仓库但未拉取。
    3. 对于收集器,// 待定: ..
  3. 在所有准备工作完成后,underdose 会提示您本地同步已完成,您应该运行远程同步。

请注意,这些命令是在药片粒度级别上提供的,因此您可以操作一个特定的药片

ud sync nvim

ud sync 之后,您应该考虑通过 git pullgit push 进行仓库级别的远程同步,以保持您的机器 drip 最新。

就这些了!享受吧。

免责声明

此软件处于 alpha 阶段,可能包含未预见的错误。具有讽刺意味的是,尽管它是一个备份工具链,但请自行备份。幸运的是,underdose 不会在您的系统中产生垃圾,因此其他备份工具可以像以前一样轻松地管理事物。

依赖关系

~16–29MB
~461K SLoC