DotHerder is a friendly CLI tool that helps you round up and manage your dotfiles with ease. It searches for common configuration files, lets you choose which ones to include, and creates a neat little repository for them. No more scattered configs!
- 🔍 Searches your system for common dotfiles
- ✅ Lets you select which files to include
⚠️ Checks those files for any sus secrets- 📁 Creates a new repository for your dotfiles
- 🔗 Symlinks the selected files to the new repo
- 🌳 Displays a pretty tree structure of your new dotfiles repo
- Make sure you have Rust and Cargo installed on your system.
- Clone this repository:
git clone https://github.com/rupert648/dot-herder.git cd dot-herder
- Build the project:
cargo build --release
-
Use the existing yaml file (under
config.yaml
) or create your own config (see config section):dotfiles: - name: ${HOME}/.zshrc - name: ${HOME}/.bash_profile - name: ${HOME}/.bashrc - name: ${HOME}/.vimrc
-
Run DotHerder:
dot-herder [OPTIONS] --config Copy
-c, --config <CONFIG>
: Path to the configuration file (required)--home <HOME>
: Optional home directory path. Defaults to home (~/)-h, --help
: Print help information-V, --version
: Print version information
- Using a config file with default home directory:
dot-herder --config ~/.dotfiles/config.yaml
- Specifying a custom home directory:
dot-herder --config ~/.dotfiles/config.yaml --home /custom/home/path
- Viewing help information:
dot-herder --help
-
Follow the prompts to select your dotfiles and create your new repo.
-
Enjoy your newly organized dotfiles!
The dotfiles
section contains a list of dotfile entries:
name
: Path to the dotfile, using${HOME}
as a placeholder for the user's home directory. Home is replaced by the--home
argument, defaulting to~
Feel free to open issues or submit pull requests if you have ideas for improvements or new features. Let's make dotfile management a breeze together!
It would be great if config.yaml needed very little editing and covered most common .dotfiles, so please feel free to open a PR and add any you yourself find helpful!
This project is licensed under the MIT License - see the LICENSE file for details.