WIP: badm - But Another Dotfiles Manager
badm is "But Another Dotfiles Manager".
How it works
badm stores your dotfiles in a directory that replicates the directory hierarchy of the dotfiles' original path, and creates symlinks to their original paths. This creates a standardized approach for managing, deploying, and sharing dotfiles among different systems and users.
Quick Demo
- ferris has created a directory to store their dotfiles at
~/.dots badm set-dir ~/.dotssets the BADM dotfiles dir at~/.dots- badm will search for a badm config file at one of the two valid locations:
$HOMEand$XDG_CONFIG_HOME. If the config file not found, badm will create it under$HOME
- to store
~/.gitconfigas a dotfile, ferris runsbadm stow ~/.gitconfig(relative paths work as well) - badm replicates the path of the dotfile under the
~/.dotsdirectory - the dotfile is moved to this new path in the set dotfiles directory and symlinked at its original path which points to its new path
WIP: Getting Started/Installation
TODO: will populate for v1.0.0 release
Commands
badm set-dir <DIRECTORY>- set dotfiles directory location, if the location is not created BADM has the ability to create one for youbadm stow <FILE>- store a file in the dotfiles directory, create a symlink at the original source of the stowed file.- REVIEW: recursive flag?
badm deploy <FILE>- for new configurations, create symlinks in directories relative to the dotfile's directory hierarchy. Directories to replicate the stored dotfile's directory structure will be created if not found.badm remove <FILE>- remove the stored file from the dotfiles directory and replace the symlink with the original file
Roadmap
- Command-line tool with ability to:
- create/set dotfiles directory (v0.3.0)
- store dotfiles in badm directory
- deploy/setup dotfiles from badm directory to new systems
- remove dotfiles from badm directory
- Use TOML file for persistent configuration
- Glob wildcards are supported (
*,?) - Support exclude patterns
- Support system-specific dotfiles
- Support multiple dotfiles directories (?)
Contributing
Pull requests, issues/feature requests, and bug reports are welcome!
Similar Projects
License
This project is made available under the MIT license. See the LICENSE file for more information.