16 个版本
0.1.0 | 2022年4月18日 |
---|---|
0.0.18 | 2022年4月7日 |
0.0.16 | 2022年3月27日 |
0.0.13 |
|
0.0.7 | 2021年12月28日 |
#482 in 配置
89KB
2K SLoC
Jointhedots
jointhedots
A simple git-based dotfile manager written entirely in Rust!
USAGE:
jtd <SUBCOMMAND>
OPTIONS:
-h, --help Print help information
SUBCOMMANDS:
help Print this message or the help of the given subcommand(s)
install Install a specified JTD repository
interactive Interactively install dotfiles
sync Sync the currently installed JTD repository with the provided remote repo.
目录
关于
jointhedots 通过读取位于您的 dotfile 仓库中的 "jtd.yaml" 清单文件来工作。该清单包含文件到安装位置的映射(以及其他内容),使 JTD 能够自动安装配置。还可以指定 pre_install
和 post_install
命令,以便在安装过程中进行额外的控制。
jtd 还允许将您的 dotfiles 推送到远程仓库,并通过 git 解决合并。它还允许避免所有输入提示。结合 jtd 的确定性,使其非常适合在脚本中使用。
这些安装步骤设计为在首次安装时运行一次,存储运行步骤的哈希值,然后仅在哈希值不同时运行(即您已使用新的安装步骤修改了您的配置)。
警告:请务必小心通过不受信任的清单安装 dotfiles。pre_install 和 post_install 块允许(可能是恶意的)代码执行**。如果清单包含安装步骤,JTD 将提示您确认您信任该清单。
路线图
特性 | 实现 | 备注 |
---|---|---|
将本地更改同步到远程仓库中的 dotfiles | ✔ | |
交互式模式 | ✔ | |
选择性安装一些 dotfiles | ✔ | |
清单文件的 JSON 模式 | ✔ | |
将最新版本托管在可以 curl 的位置 | ✔ | jtd.danielobr.ie |
选择性同步一些 dotfile 的更改 | ✔ | |
使用 git2 而不是 Command::new("git") |
✔ | |
指定要使用的清单(支持多个清单) | ✔ | |
支持非 GitHub/GitLab 仓库 | ||
手动指定 JTD 同步的提交信息 | ✔ | |
JTD 同步的默认提交信息更详细(列出更改的文件) | ✔ | |
如果没有文件更改,则中止同步 | ✔ | |
如果 dotfiles 落后于远程主分支,则不允许 jtd install (提示用户同步) |
✔ |
安装
手册
获取最新版本这里(适用于x86-64,更多目标正在路上!)
Cargo
通过cargo安装
cargo install jointhedots
Curl(一次性使用)
使用以下单行命令一次性运行JTD安装您的dotfiles
curl -sL jtd.danielobr.ie | sh
配置
JTD的默认行为可以使用.config
键进行覆盖。当前支持的配置
配置键 | 用法 | 默认 |
---|---|---|
commit_prefix |
用于提交前缀的字符串 | 🔁 |
squash_commits |
在同步多个dotfiles时是否压缩提交 | true |
示例清单文件
以下是一个示例清单文件
nvim:
pre_install:
- mkdir -p ~/Applications
- curl -sL -o /tmp/nvim.tar.gz https://github.com/neovim/neovim/releases/latest/download/nvim-linux64.tar.gz
- tar -xvf /tmp/nvim.tar.gz -C ~/Applications
- rm /tmp/nvim.tar.gz
- ln -rfs ~/Applications/nvim-linux64/bin/nvim ~/.local/bin/vim
file: init.vim
target: ~/.config/nvim/init.vim
kitty:
file: kitty.conf
target: ~/.config/kitty/kitty.conf
kitty-theme:
file: theme.conf
target: ~/.config/kitty/theme.conf
fish:
file: config.fish
target: ~/.config/fish/config.fish
post_install:
- git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf
- ~/.fzf/install --all
清单文件应位于存储库的根目录中,并命名为“jtd.yaml”。
清单文件的JSON模式在此处可用。这可以与某些插件结合使用,以提供对jtd清单的语言服务器支持。
常见问题解答
问:我使用的不同平台需要不同的安装步骤,我能针对多个平台吗?
答:是的!您可以为每个平台编写不同的清单,并使用--manifest
标志指定要使用的清单
问:jointhedots能否处理秘密?
答:是的,您可以将您的秘密作为加密文件存储在存储库中,并使用post_install
步骤来解密它们,但我在公共dotfile存储库中不建议这样做。
依赖项
~18–29MB
~517K SLoC