#symlink #home-dir #dotfile #home #env-var

bin+lib link_o_matic

一个基于约定优于配置哲学的dotfile符号链接管理器

2 个版本

0.4.2 2024年7月2日
0.4.1 2024年6月28日

#195 in 配置

Download history 146/week @ 2024-06-22 173/week @ 2024-06-29 8/week @ 2024-07-06

每月63次下载

GPL-3.0 许可证

28KB
692

link_o_matic

自学Rust

仅仅是又一个dot文件符号链接器:symlinker_o_matic

注意:这是一个Beta版本,仅由我使用,因此请不要在确定我会做什么之前使用删除功能--但是到目前为止,我还没有意外删除文件。

使用约定优于配置原则

期望有一个名为LINKOMATIC_ROOT的环境变量,它指向dotfile检查出的位置。不需要导出,只需在运行link_o_matic时设置它即可

在你的LINKOMATIC_ROOT内部,你将创建一个名为home的目录,它将是你希望链接的文件/目录,名称中不需要前导.

  • home/thing将被链接到~/.thing
  • home/config/other_thing将被链接到~/.config/other_thing

期望有一个名为LINKOMATIC_HOSTNAME的环境变量,它是你想表示的主机上的任何字符串。可以与HOSTNAME相同,也可以不同,如果你想在git仓库中隐藏你的主机名。

任何以下划线开头的文件只有在

  • 它们以_${LINKOMATIC_HOSTNAME}开始时才会被符号链接
    • 将被链接为_machine,其余部分
      • 例如,_bob.nvim.lua仅在主机bob上被链接为_machine.nvim.lua
    • 其他机器应该有自己的LINKOMATIC_HOSTNAME
  • 它们以_mac _linux之一开始,并且你的操作系统是mac或linux
    • 将被链接为_platform
      • 例如 _mac.fish 会在 macOS 上链接为 _platform.fish

这样,您的配置文件可以引用您的 _machine_platform 文件,而不必知道实际的名称。

命令

install cleanup sync autocleanup implode

install

LINKOMATIC_ROOT/home 开始

如果是目录,则递归。如果是文件,则创建指向该文件的符号链接。如果是符号链接,则创建指向其目标的符号链接。其名称将有一个 .

前缀

cleanup

查找 ~ 中指向 LINKOMATIC_ROOT/home 中内容的链接。在 ~ 的根目录中查找,或递归地通过任何 ~/dir,该 ~/dir 具有匹配的 LINKOMATIC_ROOT/home/dir 以避免扫描整个家目录。因此,如果您删除顶级目录,您将在这个点上留下孤立的链接,除非您首先从存储库中删除它们并在删除顶级目录之前进行清理。待办事项:是否有更好的方法?

如果是一个损坏的或无效的链接,则提示删除。

sync

首先 install 然后 cleanup

autocleanup

cleanup 相同,但不会提示。

implode

查找 ~ 中指向 LINKOMATIC_ROOT/home 中内容的链接。提示删除。

如果您在 LINKOMATIC_ROOT/home 内创建一个指向 LINKOMATIC_ROOT 内文件的有效 相对 路径的符号链接,当创建链接时,它将直接指向符号链接的目标,而不是中间的符号链接。

例如,从您的配置文件开始

cd ~/$LINKOMATIC_ROOT

这一步不是必需的,但将允许目标补全

cd home

现在创建一个指向目标文件的相对链接(如果您跳过了上面的步骤,您将链接到 home/vimrc

ln -s ../config/nvim/init.vim vimrc

现在您将在 LINKOMATIC_ROOT/home/vimrc 中有一个符号链接,该链接指向 LINKOMATIC_ROOT/config/nvim/init.vim,但相对。

当您运行 install 时,您的 ~/.vimrc 将指向您的 LINKOMATIC_ROOT/config/nvim/init.vim ... 而不是指向符号链接 LINKOMATIC_ROOT/home/vimrc

依赖项

~170KB