jointhedots 0.0.12

A simple git-based dotfile manager written entirely in Rust!
Documentation
jointhedots-0.0.12 has been yanked.

Join The Dots

asciicast

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.

About

jointhedots works by reading a "jtd.yaml" manifest file located within your dotfile repository. The manifest contains a mapping of file to installed location (amongst other things), allowing for JTD to automatically install configurations. pre_install and post_install commands can also be specified, allowing for additional control over installation.

WARNING: Be very careful about installing dotfiles via untrusted manifests. The pre_install and post_install blocks allow for (potentially malicious) code execution. JTD will prompt you to confirm you trust a manifest if it contains install steps.

Roadmap

Feature Implemented Notes
Sync local changes to dotfiles with remote repo
Interactive mode
Selectively install only some dotfiles
JSON Schema for manifest files
Host latest version somewhere that can be curled jtd.danielobr.ie
Selectively sync only some dotfile changes
Use git2 as opposed to Command::new("git") 🕓
Prevent syncing when the local dotfiles are from an older version of the remote repo
Ability to specify which manifest to use in (multiple manifest support)
Support for non-GitHub/GitLab repos
Ability to manually specify commit message for JTD sync
More detailed default commit messages for JTD sync (list the changed files)

Example

An example manifest file is shown below:

nvim:
  file: init.vim
  pre_install:
    - sudo apt install nvim
  target: ~/.config/nvim/init.vim

nvim-coc:
  file: coc-settings.json
  target: ~/.config/nvim/coc-settings.json

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

The manifest file should be located in the root of the repository and called "jtd.yaml".

A JSON Schema for the manifest is available here. This can be used in conjunction with certain plugins to provide language server support for jtd manifests.

Download

Grab the latest version here! Or use the following 1 liner to 1-off run JTD to install your dotfiles

curl -sL jtd.danielobr.ie | sh