Refactor CLI::Install.

This commit is contained in:
Markus Reiter 2017-05-20 02:27:13 +02:00
parent e17641bdd9
commit 33580c283a
2 changed files with 29 additions and 20 deletions

View File

@ -2,27 +2,34 @@ module Hbc
class CLI class CLI
class Install < Base class Install < Base
def self.run(*args) def self.run(*args)
cask_tokens = cask_tokens_from(args) new(*args).run
raise CaskUnspecifiedError if cask_tokens.empty? end
force = args.include? "--force"
skip_cask_deps = args.include? "--skip-cask-deps" def initialize(*args)
require_sha = args.include? "--require-sha" @cask_tokens = self.class.cask_tokens_from(args)
retval = install_casks cask_tokens, force, skip_cask_deps, require_sha raise CaskUnspecifiedError if @cask_tokens.empty?
@force = args.include? "--force"
@skip_cask_deps = args.include? "--skip-cask-deps"
@require_sha = args.include? "--require-sha"
end
def run
retval = install_casks
# retval is ternary: true/false/nil # retval is ternary: true/false/nil
raise CaskError, "nothing to install" if retval.nil? raise CaskError, "nothing to install" if retval.nil?
raise CaskError, "install incomplete" unless retval raise CaskError, "install incomplete" unless retval
end end
def self.install_casks(cask_tokens, force, skip_cask_deps, require_sha) def install_casks
count = 0 count = 0
cask_tokens.each do |cask_token| @cask_tokens.each do |cask_token|
begin begin
cask = CaskLoader.load(cask_token) cask = CaskLoader.load(cask_token)
Installer.new(cask, binaries: CLI.binaries?, Installer.new(cask, binaries: CLI.binaries?,
force: force, force: @force,
skip_cask_deps: skip_cask_deps, skip_cask_deps: @skip_cask_deps,
require_sha: require_sha).install require_sha: @require_sha).install
count += 1 count += 1
rescue CaskAlreadyInstalledError => e rescue CaskAlreadyInstalledError => e
opoo e.message opoo e.message
@ -31,7 +38,7 @@ module Hbc
opoo e.message opoo e.message
count += 1 count += 1
rescue CaskUnavailableError => e rescue CaskUnavailableError => e
warn_unavailable_with_suggestion cask_token, e self.class.warn_unavailable_with_suggestion cask_token, e
rescue CaskNoShasumError => e rescue CaskNoShasumError => e
opoo e.message opoo e.message
count += 1 count += 1
@ -39,7 +46,8 @@ module Hbc
onoe e.message onoe e.message
end end
end end
count.zero? ? nil : count == cask_tokens.length
count.zero? ? nil : count == @cask_tokens.length
end end
def self.warn_unavailable_with_suggestion(cask_token, e) def self.warn_unavailable_with_suggestion(cask_token, e)

View File

@ -1,27 +1,28 @@
module Hbc module Hbc
class CLI class CLI
class Reinstall < Install class Reinstall < Install
def self.install_casks(cask_tokens, force, skip_cask_deps, require_sha) def install_casks
count = 0 count = 0
cask_tokens.each do |cask_token| @cask_tokens.each do |cask_token|
begin begin
cask = CaskLoader.load(cask_token) cask = CaskLoader.load(cask_token)
Installer.new(cask, Installer.new(cask,
binaries: CLI.binaries?, binaries: CLI.binaries?,
force: force, force: @force,
skip_cask_deps: skip_cask_deps, skip_cask_deps: @skip_cask_deps,
require_sha: require_sha).reinstall require_sha: @require_sha).reinstall
count += 1 count += 1
rescue CaskUnavailableError => e rescue CaskUnavailableError => e
warn_unavailable_with_suggestion cask_token, e self.class.warn_unavailable_with_suggestion cask_token, e
rescue CaskNoShasumError => e rescue CaskNoShasumError => e
opoo e.message opoo e.message
count += 1 count += 1
end end
end end
count.zero? ? nil : count == cask_tokens.length
count.zero? ? nil : count == @cask_tokens.length
end end
def self.help def self.help