| Commit message (Collapse) | Author | Age |
|
|
| |
Replace OS X with macOS
|
|
|
| |
Replace OS X with macOS
|
|
|
|
|
|
|
| |
The `COPY_ALWAYS`, `EXCLUDES`, `SYMLINK_DIRS`, and `UNDOTTED` variables
in rcrc(5) can contain globs. We want to expand `~` and e.g. `~dmr` but
not `*`; therefore, we cannot perform tilde expansion within those
variables.
|
|
|
|
|
|
|
| |
Pass the dotfiles subdir along with the file to `is_excluded` so that we
can match against it.
Preserve single-file compatibility by looping twice.
|
|
|
|
|
|
|
| |
Run the hooks in alphabetical order so that people can more predictably
manage their hooks.
While here, clean up the NEWS.md.in.
|
| |
|
|
|
|
|
| |
Instead of a complex graph, process everything from one Makefile.
Simplify, simplify.
|
|
|
|
|
| |
There is no `-e` flag available, and `-x` is the flag that is used for
specifying an exclusion pattern.
|
| |
|
|
|
|
|
|
|
| |
Some formatting and more explanatory text. Frost was missing from the
rcm(7) credits. While here, bump the version number.
Honestly I just had these edits sitting around, unsure for how long.
|
|
|
|
|
| |
The explanation in the man page was vague as to what "canonical source"
meant.
|
|
|
|
|
|
|
|
|
| |
The Makefiles were mostly filled with a complex shell script written in
m4sh. Moving that out into a separate script helps debugging and
compatibility, and in general makes life better.
This also improved the DEVELOPERS.md documentation to be more clear
about the steps of a release, including third-party packages.
|
|
|
|
|
|
|
| |
It wasn't obvious that you could also use rcup with undotted files to add them
as new rc files.
There was also a typo.
|
|
|
|
|
|
|
|
|
|
|
| |
This adds the `-U` option to lsrc(1), rcup(1), and rcdn(1) commands; its
argument is an exclusion pattern. Any file matching this pattern is
symlinked without the leading dot.
There is also a `-u` option to undo a `-U`. The `UNDOTTED` setting in
rcrc(5) can be used to set it permanently.
The mkrc(1) command has `-U` and `-u` flags. They take no argument.
|
|
|
|
| |
The word "directory" was duplicated.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This commit adds a `-g` flag to rcup(1) to generate a standalone shell
script. This shell script can then be run again, even on different
computers, to recreate the symlinks.
This allows people to recreate the "download my dotfiles and run
./install.sh" instructions, but with generated code that they do not
need to maintain.
This provides us more freedom with lsrc(1): since rcm can be used to
generate a universal shell script, lsrc(1) now can be harder to install
-- it can depend on a compiler, for example -- because you only need to
install it on one machine.
The generated script is rather limited; this can be improved in future
commits, as desired.
|
|
|
|
|
|
|
|
|
| |
The rcdn(1) program is all set up to handle the `-K` and `-k` flags,
except those flags were never actually allowed through `getopts`.
Thanks to Mikkel Fahnøe Jørgensen for discovering this.
Closes #93.
|
|
|
|
|
|
|
|
| |
This adds a `-s` that can be used to override the `SYMLINK_DIRS` config,
or the `-S` flag, to lsrc(1), mkrc(1), rcup(1), and rcdn(1).
The `-s` flag is the opposite of -S: any argument, if it is a directory,
is not symlinked but instead recurred down.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
New flags have accumulated without proper care for the usage
instructions or man pages.
I manually went through each program and verified its usage instruction
against its `getopts`, then I alphabeticalized the usage message.
Based on the usage message, I then verified the synposis in the manpage.
Then, based on the synposis, I alphabeticalized the detailed listing of
the arguments and filled in the missing pieces. The `-h` and `-V`
arguments were missing from all manpages.
In the future we will need to be more careful about this. It would be
good to automate a checker that refuses to build unless the docs have
all the flags mentioned.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
As described in #82, the hostname on OS X can vary:
- The result of hostname(1) can change depending on DHCP settings; by
default, as you move between networks, your hostname will change.
- The value for `ComputerName` as set in scutil(8) contains values that
are inappropriate for a directory name (spaces, quotes, and so on),
and is blank by default.
- The value for `LocalHostName` changes based on DNS and DHCP settings.
Therefore, OS X users are highly encouraged to set a hostname using the
`HOSTNAME` variable in rcrc(5).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Based on issue #82, we now provide `-B` to override the hostname. In
particular:
- `mkrc -B foo` will enable `-o` but with the hostname set up `foo`.
- `lsrc -B foo` will work like normal `lsrc` except it treats `host-foo`
as the host-specific directory.
- `rcup -B foo` will run a normal `rcup` except `host-foo` is the
host-specific directory.
- `rcdn -B foo` is just like normal `rcdn`, but with `host-foo` as the
host-specific directory.
The `HOSTNAME` can also be set in the rcrc(5), and this is overridden by
the aforementioned `-B`.
While making this change: The `test/Makefile.am` used a mix of tabs and
spaces. Since it's a Makefile, replace it all with tabs.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Instead of requiring contributors to update rcm(7), pull the list of
contributors from the git log instead.
The `rcm.7` file has been moved to `rcm.7.mustache`. The `autogen.sh`
command will write `rcm.7` using autocontrib, a quick script included in
this commit.
This commit adds a `.mailmap` file, used by git-shortlog(1) to produce
correct and useful names and email addresses. An initial `.mailmap` has
been added to correct some existing email addresses and duplications.
`.mailmap` is documented in [Documentation/mailmap.txt][mailmap] for
git.
This adds a maintainer dependency on Ruby and the mustache gem. The
autocontrib program is spiked out in Ruby due to my familarity with the
language, but the choice of templating language (mustache) allows
flexibility for switching languages later. This is a dependency
requirement only for people who run `autogen.sh` -- maintainers.
This adds a maintainer dependency on git. Again, this is only for
maintainers, and many (all?) of them need git to get rcm's source
anyway.
Thanks to Patrick Brisbin and George Brocklehurst for the review.
[mailmap]: https://github.com/git/git/blob/6a907786af835ac15962be53f1492f23e044f479/Documentation/mailmap.txt
|
| |
|
|
|
|
|
|
|
|
|
|
| |
The `-v` (verbose) flag for `cp`, `ln`, and `rm` is not standard. It is
simple to implement using shell functions, so introduce `cp_v`, `ln_v`,
and `rm_v`. These shell functions use the existing `$VERBOSE` variable
for printing, which simplifies the code and reduces the number of
variables.
Fixes #61.
|
|
|
|
|
| |
The shell likes to expand globs as conveniently as possible. Therefore,
quote them when passing them to lsrc(1) and others (e.g. `-x '*vim*'`).
|
|
|
|
| |
This caused the push to fail because it couldn't find the repo URL.
|
|
|
|
|
| |
* Debian package has a -2 in its filename. Of course.
* Build HTML docs in the top-level gh-pages directory.
|
|
|
|
|
|
|
|
| |
* Make sure `rcm` is mentioned in every `.Nd`, so that it will appear in
whatis(1).
* Every `.Bl -tag` must have a `-width`.
* Put the sections in a consistent order, as defined my mandoc.
* A `.Sh` should not be followed by a `.Pp`.
|
|
|
|
|
|
|
|
|
|
| |
Until we can get a handle on globbing, we cannot close #11. That bug is
the last remaining ticket blocking the 1.2.1 release. However, it may
involve a larger modification than a patch release should. Documenting
allows us to make the release while working on the bug for the next
release.
http://1389blog.com/pix/thats-a-feature-not-a-bug.jpg
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This list is an alphabetical listing of everyone who has authored at
least one commit, plus their email address. When the author is a
coworker I have changed this to use their thoughtbot email address.
This also updates the `AUTHORS` section to mention thoughtbot.
The `NEWS.md.in` file has been changed to reflect that 1.2.0 is
released.
A `CONTRIBUTING.md` file has been added to explain what is required to
send a good contribution.
|
|
|
|
|
|
|
|
|
|
|
| |
It introduces the `Makefile.am` from gitsh, and abstracts it a bit. This
`Makefile.am`, or most of it, could be dropped into gitsh again. How to
use it is documented in `DEVELOPERS.md`.
The whole release process is more consistent and simple: `make release`
to build a tarball, Homebrew, Arch, Debian, HTML (from manpages), and
tag it, pushed to the various repos, and with cleanup. The `release`
target is composed of smaller targets that stack well.
|
|
|
|
|
|
|
| |
The `$` sigil in `-F` indicates that the directory is symlinked instead
of recurred upon.
Fixes #37.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Typically a directory structure is copied instead of symlinked, while
files are symlinked. However, some cases require symlinked dirs: git
submodules, vim plugins, and so on.
This introduces a `SYMLINK_DIRS` option for rcrc(5) that takes a
space-separated list of "exclude patterns". Any directory matching these
patterns is symlinked.
This also introduces a `-S` argument for lsrc(1), rcup(1), and rcdn(1).
This argument takes a pattern, for one-off directory symlinking. It can
be repeated.
This also introduces `-S` and `-s` for mkrc(1). `-S` will re-install the
files as symlinks, and `-s` will not.
This does work with `-C`, though perhaps unintuitively - we don't know
what the user means in this case. However, it will not crash.
Bug: `-s` does not work right if `SYMLINK_DIRS` is set. Bug #36
addresses this.
|
|
|
|
|
| |
If the `pre-up` or `post-up` files are actually directories, run the
executable contents of them in an arbitrary order.
|
|
|
| |
Someone had dots on the brain
|
|
|
|
|
|
|
| |
* The NEWS format was off: bullets must be preceded by two spaces.
* The word 'committing' was misspelled; hats off to debbuild's linter
for catching this.
|
| |
|
|
|
|
|
|
|
|
|
| |
* 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).
|
| |
|
|
|
|
| |
The word "multiple" was misspelled.
|
|
|
|
|
| |
This is what FreeBSD has in its ports tree and is the latest as of 21
June 2013.
|
|
|
|
| |
Running autogen.sh changes these files. Clearly they must be important.
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|