plugins/commands/cloud/version/create.rb in vagrant-unbundled-2.2.10.0 vs plugins/commands/cloud/version/create.rb in vagrant-unbundled-2.2.14.0
- old
+ new
@@ -3,10 +3,12 @@
module VagrantPlugins
module CloudCommand
module VersionCommand
module Command
class Create < Vagrant.plugin("2", :command)
+ include Util
+
def execute
options = {}
opts = OptionParser.new do |o|
o.banner = "Usage: vagrant cloud version create [options] organization/box-name version"
@@ -17,51 +19,54 @@
o.separator ""
o.on("-d", "--description DESCRIPTION", String, "A description for this version") do |d|
options[:description] = d
end
- o.on("-u", "--username USERNAME_OR_EMAIL", String, "Vagrant Cloud username or email address") do |u|
- options[:username] = u
- end
end
# Parse the options
argv = parse_options(opts)
return if !argv
- if argv.empty? || argv.length > 2
+ if argv.empty? || argv.length != 2
raise Vagrant::Errors::CLIInvalidUsage,
help: opts.help.chomp
end
- @client = VagrantPlugins::CloudCommand::Util.client_login(@env, options[:username])
- box = argv.first.split('/', 2)
- org = box[0]
- box_name = box[1]
+ @client = client_login(@env)
+ org, box_name = argv.first.split('/', 2)
version = argv[1]
- create_version(org, box_name, version, @client.token, options)
+ create_version(org, box_name, version, @client.token, options.slice(:description))
end
- def create_version(org, box_name, box_version, access_token, options)
- org = options[:username] if options[:username]
-
- server_url = VagrantPlugins::CloudCommand::Util.api_server_url
- account = VagrantPlugins::CloudCommand::Util.account(org, access_token, server_url)
- box = VagrantCloud::Box.new(account, box_name, nil, nil, nil, access_token)
- version = VagrantCloud::Version.new(box, box_version, nil, options[:description], access_token)
-
- begin
- success = version.create_version
- @env.ui.success(I18n.t("cloud_command.version.create_success", version: box_version, org: org, box_name: box_name))
- success = success.delete_if{|_, v|v.nil?}
- VagrantPlugins::CloudCommand::Util.format_box_results(success, @env)
- return 0
- rescue VagrantCloud::ClientError => e
- @env.ui.error(I18n.t("cloud_command.errors.version.create_fail", version: box_version, org: org, box_name: box_name))
- @env.ui.error(e)
- return 1
+ # Create a new version of the box
+ #
+ # @param [String] org Organization box is within
+ # @param [String] box_name Name of box
+ # @param [String] box_version Version of box to create
+ # @param [String] access_token User Vagrant Cloud access token
+ # @param [Hash] options
+ # @option options [String] :description Description of box version
+ # @return [Integer]
+ def create_version(org, box_name, box_version, access_token, options={})
+ account = VagrantCloud::Account.new(
+ custom_server: api_server_url,
+ access_token: access_token
+ )
+ with_box(account: account, org: org, box: box_name) do |box|
+ version = box.add_version(box_version)
+ version.description = options[:description] if options.key?(:description)
+ version.save
+ @env.ui.success(I18n.t("cloud_command.version.create_success",
+ version: box_version, org: org, box_name: box_name))
+ format_box_results(version, @env)
+ 0
end
- return 1
+ rescue VagrantCloud::Error => e
+ @env.ui.error(I18n.t("cloud_command.errors.version.create_fail",
+ version: box_version, org: org, box_name: box_name))
+ @env.ui.error(e.message)
+ 1
end
end
end
end
end