summaryrefslogtreecommitdiff
path: root/bin
Commit message (Collapse)AuthorAge
...
* Change `-e` to `-x`Gravatar Mike Burns2013-08-11
| | | | | | 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.
* rcdn only removes symlinksGravatar Mike Burns2013-08-11
| | | | | | | | | | | | | | | | | | | 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.
* Upgrade to automake 1.13.3 and autoconf 2.69Gravatar Mike Burns2013-08-11
| | | | This is what is in Debian testing.
* Fix inconsistent hostname handlingGravatar George Brocklehurst2013-08-06
| | | | | | `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.
* Add -C for copying filesGravatar Mike Burns2013-08-05
| | | | | | | | | | | | | | 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`.
* Inclusionary patterns: -IGravatar Mike Burns2013-08-05
| | | | | | | | | | | 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
* Introduce exclusion patternsGravatar Mike Burns2013-08-05
| | | | | | | | | | | | | | | | | | | 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
* Some 1.0.0 cruftGravatar Mike Burns2013-08-03
| | | | I'll figure out `make release` someday.
* rcup -f and -iGravatar Mike Burns2013-08-03
| | | | | | | | | | | | 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
* Add rcdnGravatar Mike Burns2013-08-03
| | | | | | | | | | | | | | | 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
* Bugfix: support -t and -d againGravatar Mike Burns2013-08-03
| | | | | | | | | 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.
* Add `mkrc -o` to install host-specific filesGravatar Mike Burns2013-08-02
| | | | | | | | 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.
* Extra argument parsing into rcm.shGravatar Mike Burns2013-08-02
| | | | | | Pull the `-V`, `-v`, `-q`, `-t`, and `-d` out into the `handle_common_flags` and `handle_metadata_flags` functions, shared between the different programs.
* Add a release targetGravatar Mike Burns2013-08-01
| | | | | | | | | | | | | 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.
* Rebuild Makefile.in with automake 1.14v0.0.2Gravatar Mike Burns2013-08-01
| | | | | | 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.
* Alter the dotfiles dir with mkrcGravatar Mike Burns2013-07-27
| | | | | | | | | 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.
* Handle relative dotfiles directoriesGravatar Mike Burns2013-07-27
| | | | | | | | | | | | | | | 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
* Able to generate deb packagesGravatar Mike Burns2013-07-27
| | | | | | | | | 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`.
* Re-write using GNU autoconf and automakeGravatar Mike Burns2013-07-27
| | | | Replace the `Makefile` with a `configure.ac` and a set of `Makefile.am`.
* Rename libexec to shareGravatar Mike Burns2013-07-23
| | | | | | 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.
* Hide duplicatesGravatar Mike Burns2013-07-12
| | | | | | | | | | | | | | | | | | | | | | | | 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.
* Stop ignoring Rakefile and installGravatar Mike Burns2013-07-12
| | | | | | | | | | Originally my installation script was a Ruby rake task, so I had to ignore the `Rakefile` when installing. Then I moved onto `install`, written on a trans-Atlantic flight, so I had to ignore that too. Now, ignore neither of these.
* Add lsrcGravatar Mike Burns2013-07-12
| | | | | | | | | The `lsrc` command works just like the `rcup` command but instead of making symlinks and directories, it just lists all the files that would be symlinks. It prints the destination (e.g. `~/.foo`) and the source (`~/.dotfiles/foo`), separated by a colon. Re-write `rcup` in terms of `lsrc`.
* Fix legacy naming: dotfiles-add -> mkrcGravatar Mike Burns2013-07-11
| | | | | | | The very original name of the `mkrc` script was `dotfiles-add`, and that name was still in the help text. Fixed. Pointed out by George Brocklehurst.
* Support multiple source directoriesGravatar Mike Burns2013-07-09
| | | | | | | | | | | | | | | | | | | | | | | The `rcup` and `mkrc` commands now support multiple source directories. This is useful for sharing dotfiles between friends, spliting dotfiles into private and public ones, or other such situations. In `mkrc` this support means that you can specify the destination directory for your dotfile, either from the command-line or from you `~/.rcrc` configuration. In `rcup` this means that it will recur through all source directories, in order, creating the symlinks as needed. This means that duplicated files will not be overridden. The order can be specified by the `-d` option, which can be repeated, or by the `DOTFILES_DIRS` option in your `~/.rcrc` configuration. The `-d` option overrides the configuration. For example, this configuration file will update from the two directories in order: DOTFILES_DIRS="/home/mike/.dotfiles/public /home/mike/.dotfiles/private" Any source directories that don't exist are skipped.
* Add version flag, -VGravatar Mike Burns2013-06-13
| | | | | | | Add a flag to print the package version: `-V`. This change also brings with it the libexec directory, so we can pull common code out.
* Rename DIRSTACK to DIR_STACKGravatar Mike Burns2013-06-11
| | | | | | | Some sysadmins mistakenly link `/bin/sh` to bash. Bash sets `DIRSTACK` and won't let you mutate it. This magical variable just so happens to be what I had named my directory stack variable in `popdir` and `pushdir`. Renaming it seems to fix it.
* Stop debugging on every mkrcGravatar Mike Burns2013-06-08
| | | | I had `set -x` on in mkrc. Now it's off. Whew.
* Make the full directory path during mkrcGravatar Mike Burns2013-06-08
| | | | | Previously mkrc would make sure the dotfiles and tag directories existed but ignore dot directories. Now it does all of that.
* Create destination directory during a mkrcGravatar Mike Burns2013-06-07
| | | | | Allow for creating new tags when making a new rc file using `mkrc`. If you pass `-t foo` and `tag-foo` doesn't exist, it first makes it exist.
* Bugfix: mkrc now uses rcupGravatar Mike Burns2013-06-07
| | | | mkrc previously hardcoded `./install`. Now it hardcodes `rcup`.
* Initial commitGravatar Mike Burns2013-06-07
This adds mkrc and rcup, along with a Makefile to handle installation. `rcup` is for installing files from the `~/.dotfiles` repo. It allows for tagged files and host-specific files, and can install/update one-off files. `mkrc` is for moving a normal file into the dotfiles repo.