module TapDance::BrewCLI

Attributes

dry_run[RW]

One offing terminal commands makes it easy to stub.

prefix[W]

Public Class Methods

formula_info(name) click to toggle source
# File lib/tap_dance/brew_cli.rb, line 35
def formula_info(name)
  exec "info #{name}"
end
formula_versions(name) click to toggle source
# File lib/tap_dance/brew_cli.rb, line 39
def formula_versions(name)
  exec "versions #{name}"
end
install(name, flags="") click to toggle source
# File lib/tap_dance/brew_cli.rb, line 23
def install(name, flags="")
  exec "install #{name} #{flag_string flags}", true
end
list_versions(name) click to toggle source
# File lib/tap_dance/brew_cli.rb, line 31
def list_versions(name)
  exec "list --versions #{name}"
end
prefix() click to toggle source
# File lib/tap_dance/brew_cli.rb, line 15
def prefix
  @prefix ||= exec("--prefix").strip
end
tap(url) click to toggle source
# File lib/tap_dance/brew_cli.rb, line 43
def tap(url)
  exec "tap #{url}", true
end
tap_list() click to toggle source
# File lib/tap_dance/brew_cli.rb, line 51
def tap_list
  exec "tap"
end
untap(url) click to toggle source
# File lib/tap_dance/brew_cli.rb, line 47
def untap(url)
  exec "untap #{url}", true
end
update() click to toggle source
# File lib/tap_dance/brew_cli.rb, line 19
def update
  exec "update", true
end
upgrade(name, flags="") click to toggle source
# File lib/tap_dance/brew_cli.rb, line 27
def upgrade(name, flags="")
  exec "upgrade #{name} #{flag_string flags}", true
end

Private Class Methods

exec(cmd, volatile=false) click to toggle source

Private because we want all brew commands wrapped for testing.

# File lib/tap_dance/brew_cli.rb, line 60
def exec(cmd, volatile=false)
  # If a command is volatile (causes system changes),
  # we want to offer a dry-run option for testing
  # and the CLI.
  cmd.strip!

  if volatile and @dry_run
    TapDance.ui.warn "Would run: brew #{cmd}"
    return nil
  else
    ShellResult.of "brew #{cmd}"
  end
end
flag_string(flags) click to toggle source

Sanitize flags with standard unix conventions and generate a string

# File lib/tap_dance/brew_cli.rb, line 76
def flag_string(flags)
  case flags
  when String
    return flags
  else
    return flags.squash("-").map {|m|
      case m
      when /^--/
        m
      when /^-[^\-]/
        m
      else
        if m =~ /^.[ =]/
          "-#{m}"
        else
          "--#{m}"
        end
      end
    }.join(" ")
  end
end