| Commit message (Collapse) | Author | Age |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
As reported in #23, you can trick `rcup` into installing into `.` with
this `CDPATH`:
export CDPATH=/tmp:.
As described [online][1], it is a mistake to export the `CDPATH`
environment variable to begin with. Since it is a one-liner to work
around it, though, it's worth fixing.
The workaround is to unset `CDPATH` at the beginning of the script. This
does not affect the outside environment, it only affects the script and
its functions.
[1]: http://bosker.wordpress.com/2012/02/12/bash-scripters-beware-of-the-cdpath/
|
|
|
|
|
|
|
|
|
| |
* Centralize configuration loading in rcm.sh(.in)
* Check for readability, not just existence
Add RCRC notes to all manpages. Putting the environment variables in a
table lines them up more neatly and definitively, across all output
formats, and also follows the examples used by e.g. BSD ls(1).
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Now that Mike (that's me) transfered this project to thoughtbot, move
all the URLs to thoughtbot-specific ones, too.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
I found that after you add a file with `mkrc` command from any dir, the output
looks like:
$ mkrc ~/.my-awesome-dot-file
‘$HOME/.my-awesome-dot-file -> ‘$HOME/.dotfiles/my-awesome-dot-file'
‘$HOME/.my-awesome-dot-file -> ‘$HOME/.dotfiles/my-awesome-dot-file'
$
It looks like the output it's appearing twice, which could led you believe
something went wrong or the output is a bit buggy. Obivously, it's not, and the
command ran without problems.
Use `$PRINT` to show which step it is on before the verbose messages are
displayed.
|
|
|
|
| |
The word "multiple" was misspelled.
|
|
|
|
|
| |
This is what FreeBSD has in its ports tree and is the latest as of 21
June 2013.
|
|
|
|
|
|
| |
The Makefile did not explcitly list rcdn(1), so the HTML was never
generated for it. Temporary fix: also list rcdn(1) in the Makefile.
Desired long-term fix: use the man/Makefile to generate the HTML docs.
|
|
|
|
| |
Running autogen.sh changes these files. Clearly they must be important.
|
| |
|
|
|
|
| |
Quick usage summaries for the four commands.
|
|
|
|
|
| |
The hooks can be skipped using `-K`, if needed and they can be forced
with the `-k` flag.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
These are programs that, if they exist, will run before or after the
syncronization/removal is run. Three use cases caused this:
1. The thoughtbot dotfiles will run a vundle installation set of
commands after intitial synchronization.
2. I changed the location of `.bash_history` to `.bash/history` and
wanted to move `.bash_history` to `.bash/history` after up to preserve
existing history.
3. Moving from an existing old-style custom install script to `rcup`
might require some cleanup; this happened in practice, and required a
simple script.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The suite now honors the `COPY_ALWAYS` option in rcrc(5). This can be
set to a space-separated list of file globs. Any file matching a glob is
copied instead of symlinked. This is handy both for secure programs
(`netrc`, `ssh/id_*`) and for programs that oddly re-write files
(`weechat/*`).
To always copy everything, use the `*` glob.
This is reflected throughout the suite as follows:
* lsrc now has a `-F` option which shows a symbol to indicate whether it
is a symlink (`@`) or a copy (`X`).
* rcdn only removes symlinks unless the file under question matches a
`COPY_ALWAYS` glob, in which case it is removed regardless of whether
it is a symlink.
* rcup will copy instead of symlinking any file that matches any
`COPY_ALWAYS` glob.
|
|
|
|
|
|
| |
Since the `-e` flag was for exclude patterns, and since it's rare for a
word with an `x` to come along, change the `-e` flag to `-x`. Better to
do it now before a new release.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Picture this case:
% ls -l ~/.a
~/.a -> ~/.dotfiles/a
% tree ~/.dotfiles/a
a
`-- b
`-- c
`-- d
`-- foo
Ideally we would want `~/.a/b/c/d/foo` to be the symlink, and the rest
to be actual directories. However, some people did it differently.
Running `rcdn` on the above would previously have removed `foo` from
`~/.dotfiles`. Now, it removes `~/.a` and nothing more.
|
|
|
|
| |
This is what is in Debian testing.
|
|
|
|
|
|
| |
`lsrc` was stripping hostname domain suffixes, but `mkrc` was not meaning
that `mkrc -o` didn't work correctly with a suffix. This was particularly
noticeable on OS X where the hostname has a `.local` suffix by default.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Some files prefer to be copies instead of symlinks---for example,
OpenSSH ignores symlinks. Add the `-C` option to mkrc(1) and rcup(1) to
handle this.
mkrc -C .ssh
rcup -C ssh
This does raise a synchronization problem that I do not yet know how to
solve; namely, what to do when the rc file changes. Perhaps a `rcsync`
command is in order; perhaps `rcup` should handle this; perhaps `rcsync`
is a better name for `rcup`.
|
|
|
|
|
|
|
|
|
|
|
| |
The `-I` flag serves as an "undo" for the `-e` pattern. It overrides any
matching exclusions, allowing for temporary
listing/installation/removal.
For example, if you want to try a `.pythonrc` but leave it in your
`EXCLUDES` in rcrc(5), you can do:
rcup -Ipythonrc pythonrc
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The lsrc(1), rcup(1), and rcdn(1) commands now take any number of `-e`
flags, used to specify an exclusion pattern. This can also be controlled
via rcrc(5), the `EXCLUDES` variable.
An exclusion pattern specifies a file glob to skip. In the case of
lsrc(1), any file matching the glob is not listed; in rcup(1) it is not
symlinked; and in rcdn(1) it is not removed.
The file glob can be preceded by the name of a dotfiles directory
(separated from the file glob by a colon) to increase the specificity.
Useful for:
rcdn -e rcrc
rcup -d work-dotfiles -e bashrc
rcup -d ~/.dotfiles -d wife-dotfiles -d sys-dotfiles -e wife-dotfiles:tigrc
|
|
|
|
| |
I'll figure out `make release` someday.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add the `-f` and `-i` options to rcup(1). `-f` will overwrite any file
it doesn't recognize; `-i` will prompt each time, and is the default.
For example:
rm ~/.zshrc
touch ~/.zshrc
rcup -f # overwrite that .zshrc with the symlink
rcup -i # prompt whether to overwrite that .zshrc
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This program will remove all your rc files that are symlinked. This can
be further controlled by `-d` and `-t`.
For example, you can feel comfortable trying new rc files because you
can quickly remove them again with `-d`.
rcup -d thoughtbot-dotfiles
rcdn -d thoughtbot-dotfiles
Likewise, when you're done with Python just drop it:
rcdn -t python
|
|
|
|
|
|
|
|
|
| |
Due to the awesome refactoring in
fe3244ca9c8c9a38ea700851e36667b1015d11e6, the `-t` and `-d` options were
broken. Fix it by removing the `handle_metadata_flags` function and
inlining the code again, and build the `LS_ARGS` argument differently.
Clearly I need a test suite.
|
|
|
|
|
|
|
|
| |
To make it easier to manage host-specific rc files, `mkrc` now supports
a `-o` option. This causes the specified file to be added to the host
section named for the current machine.
This option is in conflict with the `-t` option.
|
|
|
|
|
|
| |
Pull the `-V`, `-v`, `-q`, `-t`, and `-d` out into the
`handle_common_flags` and `handle_metadata_flags` functions, shared
between the different programs.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The `make release` command will build the Debian package, push the
version to a git tag on GitHub, and upload the docs to GitHub pages.
This also adds a `deb` target, along with `build-docs`, `upload-docs`,
`build-tag`, and `push-tag`.
In addition, introduce a `NEWS.md` file.
Both `rcm.sh.in` and `NEWS.md.in` will act as input files. This is to
abstract over the version number.
|
|
|
|
|
| |
Currently the deb file is hosted on my personal server. Download it then
use `dpkg` to install it.
|
|
|
|
|
| |
SInce Arch users choose from different installation options for
themselves, just link to the AUR page and let them decide.
|
|
|
|
| |
https://aur.archlinux.org/packages/rcm-git/
|
|
|
|
|
|
|
| |
This can be installed using Homebrew for OS X.
brew tap mike-burns/rcm
brew install rcm
|
|
|
|
|
|
| |
The Makefile.in generated from automake 1.14 is backward compatible, but
not forward compatible. This allows it to build on more systems, such as
Arch and OS X.
|
|
|
|
|
| |
Again thanks to Rebecca Meritz (@rmeritz). The word I was looking for
was, indeed, "empty".
|
|
|
|
|
|
|
| |
Some good suggestions from Rebecca Meritz (@rmeritz) again, including
having the tag, host, and multiple dirs sections use enumerated lists
like the quick start sections, and using the phrase "common problems"
instead of "caveats".
|
|
|
|
|
|
|
|
|
|
|
|
| |
Thanks to Rebecca Meritz (@rmeritz) for feedback on rcm(7), I have
restructured it and re-written the quick start section. Much of the
details about the sync algorithm have moved into rcup(1).
The new rcm(7) covers a quick start for those with existing directories,
including caveats for `install` scripts, dotted filenames, and
non-~/.dotfiles directory names; a quick start for those without
anything; and motivating sections for "advanced" features like tags,
host-specific files, and multiple directories.
|
|
|
|
|
| |
The mdocml tools, specifically mandoc(1), are used to generate the
gh-pages HTML docs. This documentation is now documented.
|
|
|
|
|
|
| |
Convert all the manpages to mdoc. This gives us access to the mdoc suite
of tools, which includes HTML conversion, plus mdoc is a more
expressable and natural format in general.
|
|
|
|
|
|
| |
Add a manpage with a tutorial, named `rcm`. This covers how to get
started from nothing, how to convert an existing dotfiles directory, and
why to use suite at all.
|
|
|
|
|
|
|
|
|
| |
Bugfix: passing `-d` to `mkrc` previously did not make the symlink. This
is now fixed.
We have previously installed the file by calling `rcup`, but we never
passed the `-d` flag to `rcup`. Instead, we `cd`ed. This changes it: no
`cd`, pass the `-d` flag.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The `lsrc` command (and thus the other commands, too) now supports
passing a relative directory name to `-d`. Previously, this caused only
the non-host and non-tag directories to run; now all dotfiles
directories are run for all metafiles, too.
As an example, this now works correctly:
lsrc -d dotfiles
This still works, too:
lsrc -d /home/mike/dotfiles
|
|
|
|
|
|
|
|
|
| |
The following command can generate a Debian package:
debuild -us uc
The directory structure and tarball must be perfectly set up first. This
is documented in `DEVELOPERS.md`.
|
|
|
|
| |
Replace the `Makefile` with a `configure.ac` and a set of `Makefile.am`.
|
|
|
|
|
| |
The `man` and `share` directories in this project had an unnecessarily
deeply nested structure. Flatten it.
|
|
|
|
|
|
| |
The `/usr/local/libexec` standard looks awkward on Debian, so after
careful and sad evaluation we've concluded that we do not, in fact,
execute the `rcm.sh` library. Move it to `/usr/local/share` instead.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
With multiple source directories it is possible to have duplicates.
Consider these source directories, `a` and `b`:
|-- a
| |-- bar
| `-- foo
`-- b
|-- baz
`-- foo
The goal is to have this:
.bar -> a/bar
.baz -> b/baz
.foo -> a/foo
Note the duplcate `foo` file.
We now handle this, in `lsrc` and therefore in `rcup`. We do this by
storing a `:`-separated string of destination files (e.g. `.foo`) and
`grep`ing that string before we operate on any destination.
|