Package: dotfilemanager
dotfilemanager.py - a dotfiles manager script.This is similar to [Steve Kemp's dotfile manager][] but I rewrote it inPython and tweaked the behaviour a bit.[Steve Kemp's dotfile manager]: http://blog.steve.org.uk/i_ve_got_a_sick_friend__i_need_her_help_.html`dotfilemanager link` Make a symlink in your homedir to each top-levelfile and directory in `~/.dotfiles`.`dotfilemanager tidy` Delete any broken symlinks in your homedir.`dotfilemanager report` Report on what link or tidy would do, but don'tactually create or delete any symlinks.Optionally you can specify the directories to link from and to asarguments, usage:dotfilemanager link|tidy|report [FROM_DIR [TO_DIR]]* * *The idea is that you have some folder called the `TO_DIR` (defaults to`~/.dotfiles`), where you move all the dotfiles that you want to manage,e.g.~/.dotfiles/~/.dotfiles/_muttrc~/.dotfiles/_nanorc...You can backup and synchronise this directory between multiple hostsusing rsync, unison, a version-control system, Dropbox, or whatever youwant. When you run `dotfilemanager link` it will create symlinks in afolder called the `FROM_DIR` (defaults to `~`), e.g.~/.muttrc -> ~/.dotfiles/_muttrc~/.nanorc -> ~/.dotfiles/_nanorc...Leading underscores in the filenames in `TO_DIR` will be converted toleading dots for the symlinks. You can also link files without leadingunderscores, and you can link directories too, just place them in`TO_DIR` and run `dotfilemanager link`.Per-host configuration is supported by putting `__hostname` at the endof file and directory names in `TO_DIR`. For example if `TO_DIR`contains files named:_muttrc_muttrc__kisimul_muttrc__dulipThen on the host dulip a symlink `FROM_DIR/.muttrc` will be created to`TO_DIR/_muttrc__dulip`. On a host named kisimul `_muttrc__kisimul` will belinked to. On other hosts `_muttrc` will be linked to.(To discover the hostname of your machine run `uname -n`.)Tip: handle directories like `~/.config` separately-------------------------------------------------On my system a lot of config files are stored in `~/.config`. I want tomanage some of the files in `~/.config` but not all of them. I havehost-specific versions of some files in `~/.config` but not others. Iwouldn't want to move `~/.config` to `~/.dotfiles/_config` and havedotfilemanager make a symlink `~/.config -> ~/.dotfiles/_config` becausethat would be putting _all_ the files in `~/.config` into `~/.dotfiles`,and dotfilemanager would make the same symlink for every host, if Iwanted a host-specific version of a file in `~/.config` I'd have to put_another_ complete copy of the directory into `~/.dotfiles` with a`__hostname` at the end.What you can do instead is have a `~/config` directory separate from`~/.dotfiles`, move the files from `~/.config` that you want to manageinto `~/config`, make host-specific versions if you want, then run bothcommands:dotfilemanager.py link ~ ~/.dotfilesdotfilemanager.py link ~/.config ~/configTip: override hostname with `DOTFILEMANAGER_HOSTNAME` environment variable------------------------------------------------------------------------If the `DOTFILEMANAGER_HOSTNAME` environment variable is set then it isused instead of your real hostname to resolve hostname-specific files in`TO_DIR`.  This is useful for accounts on networked systems where youlogin to the same user account from different computers, the systemhostname will be different each time you switch computers but you wantto use the same config files whenever you login to this account. So justmake up a name for the account and set it as the value of`DOTFILEMANAGER_HOSTNAME`.