Move the gian docstring into a README file.
This commit is contained in:
parent
24c0732753
commit
0e7156d022
81
README.markdown
Normal file
81
README.markdown
Normal file
@ -0,0 +1,81 @@
|
||||
dotfilemanager.py - a dotfiles manager script.
|
||||
|
||||
This is similar to [Steve Kemp's dotfile manager][] but I rewrote it in
|
||||
Python 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
|
||||
|
||||
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 hosts
|
||||
using rsync, unison, a version-control system, Dropbox, or whatever you
|
||||
want. When you run `dotfilemanager link` it will create symlinks in a
|
||||
folder 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 to
|
||||
leading dots for the symlinks. You can also link files without leading
|
||||
underscores, 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 end
|
||||
of file and directory names in `TO_DIR`. For example if `TO_DIR`
|
||||
contains files named:
|
||||
|
||||
_muttrc
|
||||
_muttrc__kisimul
|
||||
_muttrc__dulip
|
||||
|
||||
Then 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 be
|
||||
linked to. On other hosts `_muttrc` will be linked to.
|
||||
|
||||
(To discover the hostname of your machine run `uname -n`.)
|
||||
|
||||
`dotfilemanager tidy` will remove any dangling symlinks in `FROM_DIR`, and
|
||||
`dotfilemanager report` will just report on what link and tidy would do
|
||||
without actually making any changes to the filesystem.
|
||||
|
||||
Tip: handle directories like `~/.config` separately
|
||||
-------------------------------------------------
|
||||
|
||||
On my system a lot of config files are stored in `~/.config`. I want to
|
||||
manage some of the files in `~/.config` but not all of them. I have
|
||||
host-specific versions of some files in `~/.config` but not others. I
|
||||
wouldn't want to move `~/.config` to `~/.dotfiles/_config` and have
|
||||
dotfilemanager make a symlink `~/.config -> ~/.dotfiles/_config` because
|
||||
that would be putting _all_ the files in `~/.config` into `~/.dotfiles`,
|
||||
and dotfilemanager would make the same symlink for every host, if I
|
||||
wanted 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 manage
|
||||
into `~/config`, make host-specific versions if you want, then run both
|
||||
commands:
|
||||
|
||||
dotfilemanager.py link ~ ~/.dotfiles
|
||||
dotfilemanager.py link ~/.config ~/config
|
||||
|
||||
Tip: override hostname with `DOTFILEMANAGER_HOSTNAME` environment variable
|
||||
------------------------------------------------------------------------
|
||||
|
||||
If the `DOTFILEMANAGER_HOSTNAME` environment variable is set then it is
|
||||
used instead of your real hostname to resolve hostname-specific files in
|
||||
`TO_DIR`. This is useful for accounts on networked systems where you
|
||||
login to the same user account from different computers, the system
|
||||
hostname will be different each time you switch computers but you want
|
||||
to use the same config files whenever you login to this account. So just
|
||||
make up a name for the account and set it as the value of
|
||||
`DOTFILEMANAGER_HOSTNAME`.
|
@ -2,80 +2,6 @@
|
||||
"""dotfilemanager.py - a dotfiles manager script. See --help for usage
|
||||
and command-line arguments.
|
||||
|
||||
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 hosts
|
||||
using rsync, unison, a version-control system, Dropbox, or whatever you
|
||||
want. When you run `dotfilemanager link` it will create symlinks in a
|
||||
folder 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 to
|
||||
leading dots for the symlinks. You can also link files without leading
|
||||
underscores, 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 end of
|
||||
file and directory names in TO_DIR. For example if TO_DIR contains files
|
||||
named:
|
||||
|
||||
_muttrc
|
||||
_muttrc__kisimul
|
||||
_muttrc__dulip
|
||||
|
||||
Then 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 be
|
||||
linked to. On other hosts _muttrc will be linked to.
|
||||
|
||||
(To discover the hostname of your machine run `uname -n`.)
|
||||
|
||||
`dotfilemanager tidy` will remove any dangling symlinks in FROM_DIR, and
|
||||
`dotfilemanager report` will just report on what link and tidy would do
|
||||
without actually making any changes to the filesystem.
|
||||
|
||||
Tip: handle directories like ~/.config separately
|
||||
-------------------------------------------------
|
||||
|
||||
On my system a lot of config files are stored in ~/.config. I want to
|
||||
manage some of the files in ~/.config but not all of them. I have
|
||||
host-specific version of some files in ~/.config but not others. I
|
||||
wouldn't want to move ~/.config to ~/.dotfiles/_config and have
|
||||
dotfilemanager.py make a symlink ~/.config -> ~/.dotfiles/_config
|
||||
because that would be putting _all_ the files in ~/config into
|
||||
~/.dotfiles, and dotfilemanager.py would make the same symlink for every
|
||||
host, if I wanted a host-specific version of ~/.config I'd have to put
|
||||
_another_ complete copy of the directory into ~/.dotfiles with a
|
||||
__hostname at the end.
|
||||
|
||||
What you can to do is have a ~/config directory separate from
|
||||
~/.dotfiles, move the files from ~/.config that you want to manage into
|
||||
~/config, make host-specific versions if you want, then run both
|
||||
commands:
|
||||
|
||||
dotfilemanager.py link ~ ~/.dotfiles
|
||||
dotfilemanager.py link ~/.config ~/config
|
||||
|
||||
Tip: override hostname with DOTFILEMANAGER_HOSTNAME environment variable
|
||||
------------------------------------------------------------------------
|
||||
|
||||
If the DOTFILEMANAGER_HOSTNAME environment variable is set then it is used
|
||||
instead of your real hostname to resolve hostname-specific files in TO_DIR.
|
||||
This is useful for accounts on networked systems where you login to the same
|
||||
user account from different computers, the system hostname will be different
|
||||
each time you switch computers but you want to use the same config files
|
||||
whenever you login to this account. So just make up a name for the account and
|
||||
set it as the value of DOTFILEMANAGER_HOSTNAME.
|
||||
|
||||
"""
|
||||
import os,sys,platform
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user