6个版本

0.2.1 2023年12月22日
0.2.0 2023年12月21日
0.1.3 2023年6月23日
0.1.2 2023年5月29日

1501命令行工具

每月 下载 21

MIT 协议

580KB
275

stoic 🖇

Random stoic bust

Stoic 是一个使用Rust构建的CLI工具。它旨在以集中化的方式简化配置文件(即dotfiles)的管理。使用Stoic,您可以管理您的dotfiles并在不同的环境中保持一致性。

用例示例

假设Bob有一堆dotfiles,他希望安全地存储在云端,以便在不同机器之间移动配置。然后他创建了一个名为 my-configs 的目录,并为每个 程序 创建一个形式为 my-configs/program 的目录,其中可以存储其配置。为了使用 stoic-dotfiles,他首先通过 crates.io 安装它

cargo install stoic-dotfiles

二进制文件将被别名设置为 stoic

为了正确使用 stoic,Bob 将配置放入一个名为 my-configs 的目录中,该目录具有以下结构

my-configs
├── nvim
│  └── init.lua
├── tmux-bob
│  ├── scripts
│  │  └── sessions.sh
│  └── tmux.conf
└── stoic.toml

文件 stoic.toml 是每个程序配置的位置,可以使用三个变量进行配置

  • target:一个包含应创建符号链接的路径的字符串。此路径可以是相对路径或绝对路径(程序还会解析以 "~/" 开头的路径)。

    然后Bob将其以下内容放入他的 stoic.toml

    [nvim]
    target = "~/.config/nvim"
    

    然后运行 stoic 中的 my-configs/,程序将创建符号链接

    /home/bob/.config
    └── nvim
       └── init.lua -> /home/bob/my-configs/nvim/init.lua
    
  • recursive(可选):程序是否应为其在 my-configs/program 中存在的子目录创建符号链接。如果没有设置变量,程序将假定 recursive = false

    假设Bob有一个更复杂的Neovim配置布局

    nvim
    ├── lua
    │  └── bob
    │     ├── plugins.lua
    │     └── settings.lua
    └── init.lua
    

    然后他可以为 nvim 节点启用递归选项

    [nvim]
    target = "~/.config/nvim"
    recursive = true
    

    然后运行 stoic 中的 my-configs,程序应创建以下符号链接

    /home/bob/.config
    └── nvim
       ├── lua
       │  └── bob
       │     ├── plugins.lua -> /home/bob/my-configs/nvim/lua/bob/plugins.lua
       │     └── settings.lua -> /home/bob/my-configs/nvim/lua/bob/settings.lua
       └── init.lua -> /home/bob/my-configs/nvim/init.lua
    
  • src (可选): 包含配置目录路径的字符串,作为符号链接的源目录,如果该变量未设置,程序将假设配置文件中对应 [key] 的相对路径为 "./key"

    如果鲍勃想将所有与他相关的Tmux配置存储在单个目录中,但又不想所有文件都链接到相同的相对目标目录

    他可以在配置文件中添加以下内容来获得这个效果

    [tmux]
    target = "~/.config/tmux"
    
    [tmux_scripts]
    src = "tmux/scripts"
    target = "~/.local/bin"
    

    生成的符号链接如下

    /home/bob/.config
    └── tmux
       ├── scripts
       │  └── sessions.sh -> /home/bob/my-configs/tmux/scripts/sessions.sh
       └── tmux.conf -> /home/bob/my-configs/tmux/tmux.conf
    /home/bob/.local
    └── bin
       └── sessions.sh -> /home/bob/my-configs/tmux/scripts/sessions.sh
    

替代方案

依赖关系

约5-14MB
约156K SLoC