#manifest-file #yaml-config #step #automatic #install #git-configuration #git-repository

bin+lib jointhedots

使用 Rust 语言编写的简单基于 git 的 dotfile 管理器!

16 个版本

0.1.0 2022年4月18日
0.0.18 2022年4月7日
0.0.16 2022年3月27日
0.0.13 2022年2月6日
0.0.7 2021年12月28日

#482 in 配置

MIT 许可证

89KB
2K SLoC

Jointhedots

Release Test PRs Welcome codecov

Demo

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.

目录

关于

Git log example

jointhedots 通过读取位于您的 dotfile 仓库中的 "jtd.yaml" 清单文件来工作。该清单包含文件到安装位置的映射(以及其他内容),使 JTD 能够自动安装配置。还可以指定 pre_installpost_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