* `zap` was previously supported as a noop for forward-compatibility
* Also adds restrictions against relative paths in `uninstall :files`
* Also documents safety conventions for `uninstall :files`
Forgotten in #4688, but should be considered part of Cask DSL 1.0.
A `depends_on` stanza is much less useful without the corresponding
`conflicts_with`.
References: #4896
References: #4688.
For forward-compatibility; intentionally left undocumented.
The `license` stanza is not free-form. There is a limited
set of valid symbols, of which the argument must be a member.
(The set will later be documented, and probably needs amendments.)
Version numbers and variants of licenses are intentionally
ommitted. The use-case for `license` is filtering and listing
of Casks. We want to avoid becoming a detailed repository of
application descriptions: that information can be found at the
`homepage` URL.
This is no real gain on Travis, which runs the full test suite
against two Rubies. It does catch a few classes of error when
running the test suite locally.
For forward-compatibility, intentionally undocumented. Currently
works only as a synonym: `depends_on :formula` substitutes for
`depends_on_formula`, which is intended to be removed.
However, this PR also provides additional `depends_on` keys for
future expansion of functionality:
- `:cask`
- `:macos`
- `:arch`
- `:x11`
- `:java`
The symbol names were chosen to match those used in Homebrew Formulae.
References: #4688, #2001
solves the following error:
```bash
$ bundle exec rake test
...
NoMethodError: undefined method `shutup'
...
```
This is not a permanent solution. The test suite should be changed
around to find the new `shutup` method, which is still in Homebrew,
but no longer global.
- separated from class `Cask::Artifact::Pkg` (the `:uninstall` DSL key)
- `:uninstall` can now be invoked for all Casks
- `uninstall_test.rb` also had to be separated from `pkg_test.rb`
Including the case where a Cask is already installed.
Always continue installing when multiple Casks are specified,
only raising an exception at the end of the command (if some
portion of the attempted install actions failed). Never
exit with an error code if "already installed" was the only
problem seen during the run.
Also tweak error messages.
Fixes#1347, #2677, #4785
Required disabling two tests regarding suggestions on Cask
spelling errors.
to send arbitrary Unix signals. Per discussion in #4328, some
processes are resistant to the `:quit` directive, and can be
made to shut down via a signal.
`sha256 :no_check` has been supported syntax for a couple of months,
and now is being transitioned to the preferred syntax, replacing
the `no_checksum` stanza (which will still be supported, but
deprecated)
To aid in Tap transition. Require Homebrew 0.9.5, rescue
`rename_tags_dir_if_necessary` (`respond_to?` won't work there
because `rename_tags_dir_if_necessary` is a private method.
References: #4192, @Jackiebo in #4096
global replace of:
'phinze/homebrew-cask' -> 'caskroom/homebrew-cask'
'phinze/cask' -> 'caskroom/cask'
'phinze/homebrew-testcasks' -> 'caskroom/homebrew-testcasks'
and various other specific places that needed updates
<3 the homebrew-cask community!
- lib/cask/url.rb: initialize(): add new `:data` attribute to hold post parameters
- lib/cask/download.rb: perform(): dispatch to new class based on `:using => :post`
- lib/cask/download_strategy.rb: Cask::CurlPostDownloadStrategy:
extend curl_args with x-www-form-urlencoded data
- doc/CASK_LANGUAGE_REFERENCE.md: HTTP URLs: document new strategy
- test/cask/test_download_strategy.rb: Cask::CurlPostDownloadStrategy: test new strategy
- Remove quotes from `defaults write` args. With quotes the value is
written as a string instead of a dictionary, which breaks the search
scope in alfred.
- Make the default scope consistent with alfred default
Fixes#2997. Interface is optional DSL stanza `container_type`.
This should only be used in rare instances. It is needed for the
case of a naked executable which should not be unpacked.
to `wiztoolsorg-restclient.rb`, per naming rules in `CONTRIBUTING.md`.
This requires making changes to the test suite, as the tests used this
cask. Imported special test Casks for the relevant test no longer has
a dependency on real Casks.
closes#2996. Moves the logic for creating target directores
from init-time in cask.rb to install-time within the artifact
classes. Removes the need for special-case mkpath for each
new artifact type.
fixes#2847. This PR adds OS X-specific extended attributes
(metadata) whenever :target is used on an artifact. The
extended attributes are available for search software such
as Spotlight or Alfred to discover the artifact under the
:target name.
Limitations: Spotlight specifically chooses to ignore this
attribute for App bundles. Alfred will also ignore this
attribute until the upcoming 2.2 release.
Adobe Air applications take the form of a .air file that the Adobe Air
runtime then installs and creates a .app -- typically in
/Applications. This patch provides a new container for those .air
files which the Adobe Air runtime installs to the Caskroom as well as
tests for Adobe Air app installations.
Presently, if homebrew-cask doesn't detect the Adobe Air runtime, it
will provide an informative error message and instructions to obtain
it via `brew cask install adobe-air`. This is obviously not ideal and
the installation process for the runtime should be automated in the
future.
Following up on #2719. MD5 checksums are
* nowhere mentioned in our docs
* not used in any existing Cask
* deprecated in Homebrew
Therefore it seems sensible to delete this code.
Fixes#2817. This is now more consistent with Homebrew's
`list`, though not completely, because Homebrew's `list`
refuses to give any output when there is an invalid Formula
argument. Our `list` stumbles forward instead, giving such
output as is possible based on valid args, but still exiting
with error when invalid args are seen.
Previously, SystemCommand commands and arguments were processed as
strings which caused problems during shell interpretation if the
arguments were not escaped properly. Now all commands are expressed
as arrays and no longer require their arguments to be escaped.
Additionally, stderr and stdout could have been interleaved in the
past and now they are always separated.
- add new file "cask/utils.rb" analogous to "utils.rb" in Homebrew
- define odebug and odumpcask, analogs of ohai and friends, but
which only give output when --debug is in effect
- move the debug setting from an instance variable in Cask::CLI
to a method Cask.debug, defined in "lib/cask/options.rb", which
was added in #2276. (Perhaps options.rb should be merged back
into Cask::CLI).
- sprinkle odebug statements liberally throughout the codebase
- update tests
Fixes#2601
- do a soft test to see if the service is loaded before attempting remove
- test/unload as both superuser and user as the service can be installed
differently according to the original packags
- add tests for uninstall :launchctl; there were none previously
For safety.
- This is a step toward reworking system_command.rb so that
invocations are done in list form on the back end, avoiding
surprises from quoting and shell metacharacters.
- There is one transitional hack here: the _quote method in
Cask::SystemCommand is modified to avoid double-quoting. The
_quote method itself will go away in a future revision when
only list-forms are used.
- Casks using system are not touched. It seems natural to
address that when creating the DSL for after_install/before_install.
This is the promised followup to #2496
- docs
- test
- bugfix: search string was being tested against fully-qualified
Cask name including Tap, so "brew cask search phinze" would
(confusingly) return all Casks.
Make caveats a first-class member of the Cask DSL. It no longer has to
be specified with "def caveats", but can be given as "caveats do ... end"
as with after_install blocks.
In addition, create a mini-DSL which can be used within caveats blocks,
providing standard messages when manual installers must be used,
reboot-required, etc.
Add alternate form: caveats can also accept a compile-time string for
simple cases.
This is 99% compatible with old Casks, as it still works by defining
a caveats method. However, all Casks containing caveats are cleaned
up and adapted according to the new DSL.
Full docs in CONTRIBUTING.md.
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.