Merge pull request #2066 from halo/master

Configurable Caskroom location, see #475
This commit is contained in:
Paul Hinze 2013-12-14 06:00:31 -08:00
commit 4bfc09ec02
3 changed files with 52 additions and 6 deletions

View file

@ -68,16 +68,36 @@ This will both uninstall and unlink the Cask.
## Options
You can set options on the command-line and/or using the `HOMEBREW_CASK_OPTS` environment variable, e.g. (again, using google-chrome):
You can provide a number of options to the `brew cask` command to modify the default
installation locations.
* `--caskroom=/my/path` determines where the actual applications will be located.
Default is `/opt/homebrew-cask/Caskroom`
* `--appdir=/my/path` changes the path where the symlinks to the applications (above)
will be generated. This is commonly used to create the links in the _root_ Applications directory
instead of the _home_ Applications directory by specifying `--appdir=/Applications`. Default is `~/Applications`.
* `--prefpanedir=/my/path` changes the path for PreferencePane symlinks.
Default is `~/Library/PreferencePanes`
* `--qlplugindir=/my/path` changes the path for Quicklook Plugin symlinks.
Default is `~/Library/QuickLook`
* `--widgetdir=/my/path` changes the path for Dashboard Widget symlinks.
Default is `~/Library/Widgets`
* `--fontdir=/my/path` changes the path for Fonts symlinks.
Default is `~/Library/Fonts`
To make these changes permanent, you might want to add the following line to your `.bash_profile` or `.zshenv`:
```bash
# This probably should happen in your ~/.{ba|z}shrc
$ export HOMEBREW_CASK_OPTS="--appdir=/Applications"
# Specify your defaults in this environment variable
export HOMEBREW_CASK_OPTS="--appdir=/Applications --caskroom=/etc/Caskroom"
```
# Installs app links to /Applications
$ brew cask install google-chrome
Note that you still can override the environment variable `HOMEBREW_CASK_OPTS` by _explicitly_ providing
the options in the command line:
# Trumps the ENV and installs app links to ~/Applications
```bash
# Will force the Chrome app to be linked to ~/Applications
# even though HOMEBREW_CASK_OPTS specified /Applications
$ brew cask install --appdir="~/Applications" google-chrome
```

View file

@ -58,7 +58,11 @@ class Cask::CLI
end
def self.parser
# If you modify these arguments, please update USAGE.md
@parser ||= OptionParser.new do |opts|
opts.on("--caskroom=MANDATORY") do |v|
Cask.caskroom = Pathname(v).expand_path
end
opts.on("--appdir=MANDATORY") do |v|
Cask.appdir = Pathname(v).expand_path
end

View file

@ -74,6 +74,28 @@ describe Cask::CLI do
custom_qlplugin_dir.directory?.must_equal true
end
it "respects the ENV variable when choosing a non-default Caskroom location" do
default_caskroom_dir = Cask.caskroom
default_caskroom_dir.rmdir
custom_caskroom_dir = Pathname(Dir.mktmpdir('custom_caskroom_dir'))
custom_caskroom_dir.rmdir
default_caskroom_dir.directory?.must_equal false
custom_caskroom_dir.directory?.must_equal false
begin
ENV['HOMEBREW_CASK_OPTS'] = "--caskroom=#{custom_caskroom_dir}"
shutup {
Cask::CLI.process('list')
}
ensure
ENV.delete 'HOMEBREW_CASK_OPTS'
end
default_caskroom_dir.directory?.must_equal false
custom_caskroom_dir.directory?.must_equal true
end
it "exits with a status of 1 when something goes wrong" do
Cask::CLI.expects(:exit).with(1)
Cask::CLI.expects(:lookup_command).raises(CaskError)