Files with the same prefix in different dirs

The bug:

    ~% ls -1 test-dotfiles/**/*(.)
    test-dotfiles/tag-openbsdbox/zshrc_alias
    test-dotfiles/tag-openbsdbox/zshrc_bsd
    test-dotfiles/tag-zsh/zshrc
    ~% lsrc -t openbsdbox -t zsh -d test-dotfiles
    /home/mike/.zshrc_alias:/home/mike/test-dotfiles/tag-openbsdbox/zshrc_alias
    /home/mike/.zshrc_bsd:/home/mike/test-dotfiles/tag-openbsdbox/zshrc_bsd
    ~%

We expect to also see:

    /home/mike/.zshrc:/home/mike/test-dotfiles/tag-zsh/zshrc

This arises because we were checking for files the start with another
name, rather than a full equality.
An integration test suite

This test suite uses cram to run integration tests through `/bin/sh`.
The tests are all high-level acceptance tests; they should work
regardless of the implemention code.

To run them, you must first install cram:

    sudo pip install cram

Then the `check` target will run them:

    make check

Failure output should be printed clearly to stdout, but in general: full
test output is in `test/test-suite.log` and output specific to a test
named `foo.t` is in `foo.t.log`.

Tests are now encouraged in `CONTRIBUTING.md` as part of the normal pull
request process.

This is a TAP-enabled test suite.
Hello world, in Haskell, compiled by autotools
Some option parsing progress, and make failure

- Move files into an `Rcm` directory instead of `src`.
- Re-write the unix `getopt(3)` function because that doesn't seem to
  exist already.
- Implement the very basics of a command-line tool: parse some
  arguments.
- Can no longer build the program using `make lsrc`. Seems like it
  cannot find `System.FilePath` when I try.
Get lsrc built again

- If the file with `main` in it isn't a module named `Main`, you have to
  specify `-main-is` to GHC.
- Something in `System.FilePath` doesn't work under the way I'm
  compiling this. Should figure it out later.
- Add a `Makefile.am` for `Rcm/` so that one can `make clean`.
Learn about -package

If you use a package that ghc doesn't guess about, be sure to list it in
`GHC_PACKAGES`. The issue with `System.FilePath` was around the missing
`filepath` package.

See `ghc-pkg list` for a list of packages, and
http://www.haskell.org/ghc/docs/7.0.4/html/libraries/index.html for the
list of packages that come with ghc.
Some tests

- Test-after development.
- Uses hspec.
- No cabal file or documentation yet.
- Split Lsrc off into a private module.
QuickCheck for handleOpt

Property: passing a option argument to `handleOpt`, it augments the
existing list for the respective `Config` field.
A quickcheck for at

The `at' function produces `Just` when the index is within the list, and
`Nothing` otherwise.
Check for afterElem

Selecting the element after the first element gives either `Nothing` or
`Just`, based on whether there is such an element.
Tests for getOpt
WIP: Get the files

- Introduces a `Rcm.Private.Data` module.
- Introduces a POSIX dependency.
getDotfiles produces all the rc files for a config

- Errors are simply printed for now.
- Adds an `isDotted` convenience function.
An lsrc that can list all files

This does not yet exclude host-specific, tagged, or excluded files.
A richer dotfileTarget

Introduce a `DotfileTarget` type, which stores all the components of a
dotfile separately: the base, the path relative to the base (if any),
the file name, the tag (if any), and the host (if any).
Generate the dotfile source

This is the home directory plus a dot plus the path to the file. Data
structures make this easy.

TODO: `Rcm.Private.Dotfiles` chains `config` throughout - would be great
to get that into a `ReaderT`.