Sha256: 835c14d2e549f899529d6e4be5e5ab63b3487a9ffde57d7c44665314c0471c11

Contents?: true

Size: 1.39 KB

Versions: 1

Compression:

Stored size: 1.39 KB

Contents

require 'bcupgrade/version'
require 'bcupgrade/brew_cask'

module Bcupgrade
  def self.check_list
    Bcupgrade.brew_cask_list.delete(' (!)').split("\n")
  end

  def self.check_version(cask)
    cask_info = Bcupgrade.brew_cask_info(cask)
    lines = cask_info.split(/\n/)
    latest_version = lines[0].gsub(/.+: (.+)/, '\1')
    installed_path = "#{Bcupgrade::CASKROOM_PATH}/#{cask}/#{latest_version}"

    cask_info.include?(installed_path) ? nil : latest_version
  end

  def self.upgrade(casks)
    casks.each do |cask|
      input = Readline.readline("\nUpgrade #{cask}? [y/n] ")
      next unless input == 'y'
      puts "remove #{cask}"
      Bcupgrade.brew_cask_remove(cask)
      puts "install #{cask}"
      Bcupgrade.brew_cask_install(cask)
    end
  end

  def self.run(option = false)
    # Check cask list
    puts "\nCheck brew cask list...\n"
    installed_casks = Bcupgrade.check_list
    puts "#{installed_casks}\n"

    # Check cask version
    puts "\nCheck the latest available version...\n"
    update_casks = []
    installed_casks.each do |cask|
      latest_version = Bcupgrade.check_version(cask)
      if latest_version
        puts "#{cask} / #{latest_version}"
        update_casks.push(cask)
      end
    end

    if option
      # Upgrade cask
      if update_casks.any?
        Bcupgrade.upgrade(update_casks)
      else
        puts "\nAlready up-to-date."
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
bcupgrade-0.1.1 lib/bcupgrade.rb