class BrewCaskTools::Cask

Cask control class. Implements operations on a single cask.

Attributes

dir[R]
info[R]
name[R]

Public Class Methods

new(name) click to toggle source
Calls superclass method
# File lib/bct/cask.rb, line 16
def initialize(name)
  super()

  @name = name

  if deprecated?
    info = []
    @name = name.delete(' (!)')
  else
    info = `brew cask info #{name}`.split("\n")
  end

  @info = Casks::Info.new(info)
  @dir = File.join(CASKROOM, @name)
  @versions = Casks::Versions.new(@dir, @info.short_name.sub("#{@name}: ", ''))
end

Public Instance Methods

can_cleanup?() click to toggle source
# File lib/bct/cask.rb, line 61
def can_cleanup?
  versions.length > 1 || metadata.length > 1
end
candidate() click to toggle source
# File lib/bct/cask.rb, line 37
def candidate
  @versions.candidate
end
cleanup() { |self, versions| ... } click to toggle source
# File lib/bct/cask.rb, line 94
def cleanup
  return unless can_cleanup?

  if deprecated?
    yield self, versions
    # Delete the whole cask
    ::FileUtils.rm_rf(@dir, secure: true, verbose: true)
    return
  end

  yield self, old

  @versions.rm_old
end
current() click to toggle source
# File lib/bct/cask.rb, line 33
def current
  @versions.current
end
deprecated?() click to toggle source
# File lib/bct/cask.rb, line 57
def deprecated?
  @deprecated ||= @name.include?('(!)')
end
exec() click to toggle source
# File lib/bct/cask.rb, line 70
def exec
  Open3.popen2e("brew cask install #{@name} --force") do |_stdin, stdout_err, _wait_thr|
    line = ''
    while line
      line = stdout_err.gets
      puts line
    end
  end
end
latest?() click to toggle source
# File lib/bct/cask.rb, line 53
def latest?
  @versions.latest?
end
metadata() click to toggle source
# File lib/bct/cask.rb, line 49
def metadata
  @versions.metadata
end
old() click to toggle source
# File lib/bct/cask.rb, line 45
def old
  @versions.old_installed
end
outdated?() click to toggle source
# File lib/bct/cask.rb, line 65
def outdated?
  return false if latest?
  candidate > current
end
upgrade() click to toggle source
# File lib/bct/cask.rb, line 80
def upgrade
  return say "#{@name} uses the `latest` convention. " \
  'Homebrew cask does not upgrade casks marked as ' \
  '`latest`. Use another method of determining if ' \
  'this application has an upgrade', :green if latest?

  return say "You have the most recent version of #{@name}. " \
  'It cannot be upgraded', :green unless outdated?

  say "Installing #{@name} (#{candidate})", :cyan
  exec
  say "Upgraded #{@name} to version #{candidate}", :green
end
versions() click to toggle source
# File lib/bct/cask.rb, line 41
def versions
  @versions.installed
end