class TapDance::Brew

Attributes

name[RW]
tap[RW]
version[RW]

Public Class Methods

new(name, version=nil, opts={}) click to toggle source
# File lib/tap_dance/brew.rb, line 10
def initialize(name, version=nil, opts={})
  @opts    = opts.dup
  @name    = name.to_s
  @version = version
  @tap     = @opts[:tap]
  @flags   = @opts[:flags] || []

  # Get actual tap object
  unless @tap.nil?
    case @tap
    when String, Symbol
      @tap = @opts[:definition].tap_named @tap.to_s
    when TapDance::Tap
      # Good to go!
    end
    @opts[:tap] = @tap
  end

end

Public Instance Methods

brewable?() click to toggle source

Does the formula exist?

# File lib/tap_dance/brew.rb, line 57
def brewable?
  BrewCLI.formula_info(canonical).okay?
end
canonical() click to toggle source
# File lib/tap_dance/brew.rb, line 48
def canonical
  unless @tap.nil?
    "#{@tap.url}/#{@name}"
  else
    @name
  end
end
formula_version() click to toggle source
# File lib/tap_dance/brew.rb, line 61
def formula_version
  res = BrewCLI.formula_info(canonical)
  return nil unless res.okay?

  res.out.split($/).first.match(/#{name}: stable ([^\s,]+)/)[1]
end
formula_versions() click to toggle source
# File lib/tap_dance/brew.rb, line 68
def formula_versions
  # Takes a long time to get; cache return
  if @formula_versions.nil?
    @formula_versions = BrewCLI.formula_versions(canonical).
      out.chomp.split($/).map do |v|
      s = v.split(/\s+/)
      version = s[0]
      commit  = s[3]
      path    = s[4]
      [ version, commit, path ]
    end
  else
    return @formula_versions
  end
end
install() click to toggle source
# File lib/tap_dance/brew.rb, line 30
def install
  if brewable?
    # Do magic here
    BrewCLI.install canonical, @flags
  else
    TapDance.ui.error "No available formula for \"#{canonical}\""
  end
end
installed?() click to toggle source

Is a version installed?

# File lib/tap_dance/brew.rb, line 95
def installed?
  !installed_versions.empty?
end
installed_versions() click to toggle source
# File lib/tap_dance/brew.rb, line 84
def installed_versions
  # Would love to use StringScanner...but we don't need to!
  versions = BrewCLI.list_versions(canonical).out.strip.split(/\s+/)
  unless versions.empty?
    return versions[1..-1]
  else
    return []
  end
end
latest_version() click to toggle source
# File lib/tap_dance/brew.rb, line 99
def latest_version
  # Works unless the versions have
  # strings in them, like alpha/beta
  installed_versions.sort.last if installed?
end
to_s() click to toggle source
# File lib/tap_dance/brew.rb, line 105
def to_s
  return canonical
end
upgrade() click to toggle source
# File lib/tap_dance/brew.rb, line 39
def upgrade
  if installed?
    # Do magic here
    BrewCLI.upgrade canonical, @flags
  else
    TapDance.ui.error "You haven't installed \"#{canonical}\""
  end
end