Commit graph

14 commits

Author SHA1 Message Date
Roland Walker
bf99c6b0a3 Store metadata with installed Casks.
Step 2: Snapshot the Cask file used at install-time, using
the previously-merged metadata directory support.

Using a simple filesystem-is-a-database approach, we 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.
2014-12-10 18:24:43 -05:00
Roland Walker
cb5a40f787 remove constraint that tokens can't start w/ digit
Class names are now completely hidden from the user.  This
commit works by adding a prefix to all Cask class names, which
is considered to be an ugly transitional hack on the way to
representing individual Casks as instances.
2014-12-05 11:54:56 -05:00
Claudia
03a8efe128 Make CLI::Alfred and Source::PathBase work with Ruby 1.8 2014-12-02 17:01:01 +01:00
Roland Walker
a335d3b06d unify and recast "Cask name" & "title" as "token"
* "Canonical App Name" becomes "Simplified App Name"
* devscript `cask_namer` renamed to `generate_cask_token`
* doc file `CASK_NAMING_REFERENCE.md` renamed to `cask_token_reference.md`
* DSL uses `"#{token}"` for interpolation instead of `"#{title}"`
* documentation text
* backend code (variables, method, class names)
* error message text
* tests
* code comments
* Cask comments
* emphasize `tags :name`
* doc: use "vendor" consistently instead of "developer"
* doc: many man page argument descriptions were incorrect
* incidental clarifications

Many backend variables similar to `cask_name` or `cask` have
been standardized to `cask_token`, `token`, etc, resolving a long-
standing ambiguity in which variables named `cask` might contain
a Cask instance or a string token.

In many places the docs could be shortened from "Cask name" to
simply "token", which is desirable because we use the term "Cask"
in too many contexts.
2014-12-01 11:00:23 -05:00
Roland Walker
e2a0214de6 enforce a valid minimum DSL version in headers 2014-11-22 20:08:25 -05:00
Roland Walker
4d3d254a30 comment wording 2014-11-21 09:25:46 -05:00
Roland Walker
6c53607967 require new-style header lines
and enforce that the cask name (per the header) must match
the filename
2014-11-19 10:57:39 -05:00
Roland Walker
2692b5cd8d remove old-style header line from test Casks
This takes the form of a horrible hack: DSL version numbers may
end with "test", *eg* ":v1test". Such Casks are mapped to class
`TestCask` instead of class `Cask`.

The intention is that all of this logic will be removed when
Casks are migrated away from separate classes.

Tests driven by RSpec are still todo.
2014-11-18 09:09:01 -05:00
Roland Walker
113a667fcc flag backward-compatibility todo 2014-11-13 11:45:47 -05:00
Federico Bond
950bc054bd Fix cask loading behavior. Refs #5769 2014-08-15 13:57:43 -03:00
Roland Walker
3e2eafb636 forward-compatibility to remove naming limitations
Currently, Casks names are constrained by the need to form
valid Ruby class names.  This change enables a new syntax,
in which the first line of a Cask will read like
```ruby
cask :v1 => 'my-app' do
```
where :v1 refers to the version of the DSL spec.
2014-07-28 13:36:44 -04:00
Roland Walker
c082b5521a Improve error checking and messages on Cask load
Other Cask sources ultimately invoke the `load` method in the
abstract class Cask::Source::PathBase, so these changes apply
to all other sources.
2014-06-04 07:34:52 -04:00
Roland Walker
f24b4ba05a show resolved Cask source file or URI w/ --debug
references #4641
2014-06-03 10:38:49 -04:00
Roland Walker
f8c9567a66 Don't prefer Cask files in the cwd
Fixes #4641.  Cask files in the cwd are still permitted, but
at the very lowest priority, below Tapped Cask names.
2014-06-03 10:33:19 -04:00