rcup - Man Page
update and install dotfiles managed by rcm
Synopsis
Description
This is a program to update and install personal dotfiles. These dotfiles are managed in a separate directory. Use rcup to install files from your dotfiles directories or from host- or tag-specific directories within.
See Directory Layout for details on the directory layout.
It supports these options:
- -B HOSTNAME
treat
host-HOSTNAME
as the host-specific directory instead of computing it.- -C
copy the files instead of symlinking them.
- -d DIR
install dotfiles from the DIR. This can be specified multiple times.
- -f
if the rc file already exists in your home directory but does not match the file in your dotfiles directory, remove the rc file then create the symlink.
- -g
print to
stdout
a standalone shell script that will run the rcup command as specified. Nothing on your filesystem will be modified by rcup when this flag is passed.- -h
show usage instructions.
- -I EXCL_PAT
install rc files that match EXCL_PAT despite being excluded by the -x flag or a setting in rcrc(5). This can be repeated with additional patterns. See lsrc(1), EXCLUDE PATTERN, for more details.
- -i
if the rc file already exists in your home directory but does not match the file in your dotfiles directory, prompt for how to handle it. This is the default.
- -K
skip pre- and post-hooks.
- -k
run pre- and post-hooks (see Directory Layout for more details on hooks). This is the default.
- -S EXCL_PAT
any rc file that matches EXCL_PAT is installed using a symlink even if it is a directory. This option can be repeated.
- -s EXCL_PAT
any file that matches EXCL_PAT is installed as normal, in accordance with the Algorithm section below. This is the opposite of -S. This option can be repeated.
- -t TAG
install dotfiles according to TAG.
- -U EXCL_PAT
any rc file that matches EXCL_PAT is installed without a leading dot. This option can be repeated. See the documentation of the -U option in lsrc(1) for more information.
- -u EXCL_PAT
any rc file that matches EXCL_PAT is installed with a leading dot. This is the opposite of -U. This option can be repeated. This is the default. See the documentation of the -u option in lsrc(1) for more information.
- -q
decrease verbosity.
- -V
show the version number.
- -v
increase verbosity. This can be repeated for extra verbosity. Verbose messages are printed to
stderr
.- -x EXCL_PAT
do not install rc files that match EXCL_PAT. This can be repeated with additional patterns. See lsrc(1), EXCLUDE PATTERN, for more details.
- files
only install the specified file(s)
Directory Layout
Any non-dot non-meta file or directory under your dotfiles directory will be installed as a dotfile. For example, .dotfiles/zshrc
will be installed into ~/.zshrc
.
Files are installed as symlinks. Directories are installed by making directories. The -C flag causes files to be installed as copies instead of symlinks. The COPY_ALWAYS option in rcrc(5) can be used to list files that must only be copied. Copied files are not updated in your dotfiles directory.
Three meta files are supported: host-specific files, tagged files, hooks.
Host-specific files go in a directory named for the host, prefixed with host-
. For example, .dotfiles/host-scarlett
contains files specific to the computer with hostname scarlett
, and these files will only be installed on the computer with hostname scarlett
.
Tagged files go in a directory named for the tag, prefixed with tag-
. Therefore, files under .dotfiles/tag-git
are only installed when installing using the git
tag.
Hooks go in a directory named hooks
. Two hooks are supported by rcup: pre-up and post-up. These go in files or directories with predictable filenames: .dotfiles/hooks/pre-up
and .dotfiles/hooks/post-up
, or .dotfiles/hooks/pre-up/*
and .dotfiles/hooks/post-up/*
. These files must be executable. They are run every time rcup is run, and therefore must be idempotent.
Hooks will be executed one at a time, sorted alphabetically. For instance, hooks/pre-up/animals
will run before hooks/pre-up/aquariums
, and hooks/pre-up/4-eyes
will run before hooks/post-up/2-u-nothing-compares
.
Algorithm
It is instructive to understand the process rcup uses when synchronizing your rc files:
The pre-up hook is run.
All non-host, non-tag files without a dot prefix are symlinked to the dotted filename in your home directory. So,
.dotfiles/tigrc
is symlinked to~/.tigrc
.All non-host, non-tag directories have their structure copied to your home directory, then a non-dotted symlink is created within. So for example,
.dotfiles/vim/autoload/haskell.vim
causes the~/.vim/autoload
directory to be created, thenhaskell.vim
is symlinked within.Steps (2) and (3) are applied to host-specific files. These are files under a directory named
host-
$HOSTNAME.Steps (2) and (3) are applied to tag-specific files. These are files under directories named
tag-
$TAG_NAME, where $TAG_NAME is the name of each specified tag in turn, taken from the command line or from rcrc(5).The post-up hook is run.
Environment
- RCRC
User configuration file. Defaults to
~/.rcrc
.
Files
~/.dotfiles
~/.rcrc
See Also
Authors
rcup is maintained by Mike Burns <mburns@thoughtbot.com> and thoughtbot
Referenced By
lsrc(1), mkrc(1), rcdn(1), rcm(7), rcrc(5).