phinze/homebrew-cask — pull request #3066 by rolandwalker (2014-02-20 22:09:59+00:00)
Title: Store metadata with installed Casks.

Step 1: Snapshot the Cask file used at install-time.

Using a simple filesystem-is-a-database approach, set up a
`.metadata` directory for each installed Cask in which we can
record any information, starting with a copy of the Cask
definition which was used at install-time.

This should be useful for various cases such as:
- a fallback when the Cask was renamed/removed. We currently cannot recover any uninstall info in that scenario
- installation of multiple versions of the same software

There might be a smarter way to discover the source filename
for the Cask through introspection or some deep Ruby voodoo.
All I could come up with was to pass the filename in on the
constructor, which seems perfectly reasonable if voodoo is
not available. The existing code was taking the title as an
argument to the constructor, which is dispensable.

This PR contains no code to actually make use of the metadata,
but only takes care of the relevant book-keeping: creation,
destruction, as well as organization of metadata according to
software version number and timestamp.