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 次
580KB
275 行
stoic 🖇
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