The indentation in CONTRIBUTING.md implies that :script accepts a hash.
But that is not the case. Instead :script accesses the entire hash defined
by uninstall. Unrelated install keys such as :quit leak through to
@command.run! when attempting to exec :script. Result: contrary to docs,
:script cannot be combined with other uninstall keys.
This PR makes uninstall :script accept a hash. When :args or :input are not
needed, :script can still accept a plain string, so many Casks require no
alteration.
In addition
- adds key :executable, required when using hash argument to :script
- keys to :script are validated and sanitized before being passed to
@command.run!
- adds :quit to with-installable.rb test to protect against regression
on leaky keys
- abstracts out common logic, much code removed
- fixes one bug/inconsistency: some artifacts failed to
"return false" when the target exists in "preflight_checks".
- one trivial functional change: artifact type and quotation marks
added in all user feedback (quotes needed b/c of pathnames
containing spaces)
- move the interface from top-level methods to hash arguments of URL to
keep the cask DSL as skinny as possible
- promote the Cask::Headers object up to a Cask::URL object that
encapsulates all infornation about the URL
- pull all knowledge about curl arguments into the DownloadStrategy,
leaving URL to act as a value object to be queried for details
- test at the DownloadStrategy level; setting up expected curl args
and example casks
the test cleanup was using an old strategy that loaded every cask to
search for ones that are installed. with the number of casks approaching
1000, this was adding ~0.5s __per test__.
switching to the newer strategy that bases off of files in a dir speeds
this up, which improves the build time drastically.
this allows us to experiment with behavior that we may not want to
promote to an official feature just yet.
i'm thinking about stuff like #544, and other things i can't foresee
we'll have to be careful to not let this get out of hand, but i think
it could be helpful for cask authors to be able to try and problem solve
locally.
- brew cask list now displays casks without backing ruby files
- casks without a source are displayed as "caskname (!)"
- these casks can be uninstalled, with the caveat that it only removes
their files from the caskroom (doesn't run pkg uninstall or anything,
since there's no ruby file to define what to do)
- document sf link policy
- change audit to accept old and new style links
- need to keep old style links for projects where the 'latest' link
does not point to something usable
- link to official policy in audit warning message
refs #1436