Browse Source

Merge pull request #117 from passcod/options-support

Add options to the cli
Paul Hinze 12 years ago
parent
commit
fca6c49beb
  1. 16
      README.md
  2. 4
      lib/cask.rb
  3. 18
      lib/cask/cli.rb
  4. 26
      test/cli/options_test.rb
  5. 2
      test/support/fake_appdir.rb

16
README.md

@ -109,6 +109,22 @@ packages, so the community part is important! Every little bit counts.
You can add Casks to your existing (or new) taps: just create a directory named
`Casks` inside your tap, put your Casks there, and everything will just work.
# Options
You can set options on the command-line and/or using the `HOMEBREW_CASK_OPTS`
environment variable, e.g.:
```bash
# This probably should happen in your ~/.{ba|z}shrc
$ export HOMEBREW_CASK_OPTS="/Applications"
# Installs to /Applications
$ brew cask install a-cask
# Trumps the ENV and installs to ~/Applications
$ brew cask install --appdir="~/Applications" a-cask
```
# Alfred Integration
I've been using Casks along with Alfred to great effect. Just add

4
lib/cask.rb

@ -26,8 +26,8 @@ class Cask
@appdir ||= Pathname.new(File.expand_path("~/Applications"))
end
def self.set_appdir(canned_appdir)
@appdir = canned_appdir
def self.appdir=(_appdir)
@appdir = _appdir
end
def self.init

18
lib/cask/cli.rb

@ -1,3 +1,6 @@
require 'optparse'
require 'shellwords'
class Cask::CLI
def self.commands
Cask::CLI.constants - ["NullCommand"]
@ -14,6 +17,7 @@ class Cask::CLI
def self.process(arguments)
Cask.init
command, *rest = *arguments
rest = process_options(rest)
lookup_command(command).run(*rest)
end
@ -34,6 +38,16 @@ class Cask::CLI
}
list.sort
end
def self.process_options(args)
allrgs = Shellwords.shellsplit(ENV['HOMEBREW_CASK_OPTS'] || "") + args
OptionParser.new do |opts|
opts.on("--appdir=MANDATORY") do |v|
Cask.appdir = Pathname.new File.expand_path(v)
end
end.parse!(allrgs)
return allrgs
end
class NullCommand
@ -43,7 +57,7 @@ class Cask::CLI
def run(*args)
purpose
if @attempted_name
if @attempted_name and @attempted_name != "help"
puts "!! "
puts "!! no command with name: #{@attempted_name}"
puts "!! "
@ -52,7 +66,7 @@ class Cask::CLI
end
def purpose
puts <<-PURPOSE.gsub(/^ {6}/, '')
puts <<-PURPOSE.undent
{{ brew-cask }}
brew-cask provides a friendly homebrew-style CLI workflow for the
administration Mac applications distributed as binaries

26
test/cli/options_test.rb

@ -0,0 +1,26 @@
require 'test_helper'
describe Cask::CLI do
it "supports setting the appdir" do
shutup do
Cask::CLI.process %w{help --appdir=/some/path}
end
Cask.appdir.must_equal Pathname.new File.expand_path "/some/path"
end
it "supports setting the appdir from ENV" do
ENV['HOMEBREW_CASK_OPTS'] = "--appdir=/some/path"
shutup do
Cask::CLI.process %w{help}
end
Cask.appdir.must_equal Pathname.new File.expand_path "/some/path"
end
after do
ENV['HOMEBREW_CASK_OPTS'] = nil
Cask.appdir = CANNED_APPDIR
end
end

2
test/support/fake_appdir.rb

@ -1,6 +1,6 @@
# wire in a fake appdir for linkapps
CANNED_APPDIR = (HOMEBREW_REPOSITORY/"Applications")
Cask.set_appdir(CANNED_APPDIR)
Cask.appdir = CANNED_APPDIR
module FakeAppdirHooks
def before_setup

Loading…
Cancel
Save