A Good Symlinks Manager. Swap files from any location with symlinks and manage them easily in one place
An approach to manage symlinks that just works out of the box! No more fighting with junk configs/systems to manage your dotfiles across multiple systems.
NAME:
shelf - A new cli application
USAGE:
shelf.bin [global options] command [command options] [arguments...]
DESCRIPTION:
A Good Symlinks Manager
COMMANDS:
create, c creates a Shelf
track, t track a file
clone, cl clones a shelf
snapshot, s creates a snapshot of existing shelves
restore, r restores all the links from a shelf
where, w prints where the given shelf is
list, ls lists all the files tracked by shelf
help, h Shows a list of commands or help for one command
GLOBAL OPTIONS:
--help, -h show help (default: false)
shelf can be used to create multiple shleves. A shelf is a collection of files you want to track together.
You can create a shelf using shelf create command.
$ shelf create dotfilesThis creates a shelf under $HOME/.shelves/dotfiles.
A shelf is just a directory with all the tracked files. Shelfs can be managed using either git or any other backup system.
Also a shelf.json is created inside the shelf which keeps track of all the files and their symlink paths. This files needs to be maintained with other files.
To start tracking/adding a file to a shelf:
$ shelf track dotfiles ~/.gitconfigThis moves the file from ~/.gitconfig to ~/.shelves/dotfiles/.gitconfig and creates a symlink at ~/.gitconfig.
To move to a shelf directory(for example for running git commands or any other backup commands):
$ cd `shelf where dotfiles`A shelf can be snapshotted using shelf CLI itself. There are 2 modes to take a snapshot:
To keep a track of your shelf using .git, you can use
$ shelf snapshot git dotfilesThis will add all the existing files in your shelf directory, create an automated commit and push the commit to
the remote branch.
To use any other backup mechanism, shelf comes with a utility to create a .tar.gz archive for your shelf.
$ shelf snapshot archive --output /data/backup/shelves dotfilesThis will create an archive file of your shelf in /data/backup/shelves/dotfiles.tar.gz and you can use any backup tool
to preserve this data for long term.
A shelf can be cloned directly into the local system if the shelf has git repo. For cloning:
$ shelf clone https://github.com/iamd3vil/dotfiles.gitAfter cloning, for restoring all the symlinks:
$ shelf restore dotfilesIf there is already a file/symlink in the restoring path, it will print a warning and skips the file.
For example, if only a single file needs to be restored, the restore command can be run again and the warnings for the other files can be ignored.