summaryrefslogtreecommitdiff
path: root/bin/mkrc
Commit message (Collapse)AuthorAge
* Discover a POSIX shell for SolarisGravatar Mike Burns2014-03-28
| | | | | | | | | | | | Under Solaris, use ksh instead of `/bin/sh`. This uses `$SHELL` as a POSIX shell, coupled with a `configure` check that sets it correctly. Note that the POSIX shell might end up being bash, so this actually introduces more fragmentation than it reduces. Taken from https://github.com/freedreno/mesa/blob/master/configure.ac
* Add support for -v option on OpenBSDGravatar The Linux Kitten2014-03-19
| | | | | | | | | | 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.
* Add quoting, remove backticks, use $PWDGravatar patrick brisbin2014-03-04
| | | | | | | | | * http://pubs.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html#tag_02_06_03 * http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap08.html#tag_08 Fixes #46. This does not handle quotes around `$@`. That is taken separately in #53.
* Force some directories to be symlinksGravatar Pablo Olmos de Aguilera Corradini and Mike Burns2014-02-18
| | | | | | | | | | | | | | | | | | | | | | | 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.
* Prefer RCRC environment variable over ~/.rcrcGravatar patrick brisbin2013-12-11
| | | | | | | | | * 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).
* Show a difference between moving and link in mkrcGravatar Pablo Olmos de Aguilera Corradini2013-10-08
| | | | | | | | | | | | | | | | | 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.
* Add -h for lsrc, mkrc, rcdn, rcupGravatar Mike Burns2013-08-16
| | | | Quick usage summaries for the four commands.
* 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
* 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.
* 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.
* 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.
* 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.
* 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.