lib/xcode/install/install.rb in xcode-install-0.9.6 vs lib/xcode/install/install.rb in xcode-install-1.0.0

- old
+ new

@@ -1,5 +1,7 @@ +require 'uri' + module XcodeInstall class Command class Install < Command self.command = 'install' self.summary = 'Install a specific version of Xcode.' @@ -7,19 +9,21 @@ self.arguments = [ CLAide::Argument.new('VERSION', :true) ] def self.options - [['--no-switch', 'Don’t switch to this version after installation'], + [['--url', 'Custom Xcode DMG file path or HTTP URL.'], + ['--no-switch', 'Don’t switch to this version after installation'], ['--no-install', 'Only download DMG, but do not install it.'], ['--no-progress', 'Don’t show download progress.'], ['--no-clean', 'Don’t delete DMG after installation.']].concat(super) end def initialize(argv) @installer = Installer.new @version = argv.shift_argument + @url = argv.option('url') @should_clean = argv.flag?('clean', true) @should_install = argv.flag?('install', true) @should_switch = argv.flag?('switch', true) @progress = argv.flag?('progress', true) super @@ -29,15 +33,18 @@ super return if @version.nil? fail Informative, "Version #{@version} already installed." if @installer.installed?(@version) fail Informative, "Version #{@version} doesn't exist." unless @installer.exist?(@version) + + if @url + fail Informative, "Invalid URL: `#{@url}`" unless @url =~ /\A#{URI::regexp}\z/ + end end def run - return if @version.nil? @installer.install_version(@version, @should_switch, @should_clean, @should_install, - @progress) + @progress, @url) end end end end