plugins/commands/cloud/box/delete.rb in vagrant-unbundled-2.2.10.0 vs plugins/commands/cloud/box/delete.rb in vagrant-unbundled-2.2.14.0
- old
+ new
@@ -3,10 +3,12 @@
module VagrantPlugins
module CloudCommand
module BoxCommand
module Command
class Delete < Vagrant.plugin("2", :command)
+ include Util
+
def execute
options = {}
opts = OptionParser.new do |o|
o.banner = "Usage: vagrant cloud box delete [options] organization/box-name"
@@ -14,12 +16,12 @@
o.separator "Deletes box entry on Vagrant Cloud"
o.separator ""
o.separator "Options:"
o.separator ""
- o.on("-u", "--username USERNAME_OR_EMAIL", String, "Vagrant Cloud username or email address") do |u|
- options[:username] = u
+ o.on("-f", "--[no-]force", "Do not prompt for deletion confirmation") do |f|
+ options[:force] = f
end
end
# Parse the options
argv = parse_options(opts)
@@ -27,37 +29,41 @@
if argv.empty? || argv.length > 1
raise Vagrant::Errors::CLIInvalidUsage,
help: opts.help.chomp
end
- @env.ui.warn(I18n.t("cloud_command.box.delete_warn", box: argv.first))
- cont = @env.ui.ask(I18n.t("cloud_command.continue"))
- return 1 if cont.strip.downcase != "y"
+ if !options[:force]
+ @env.ui.warn(I18n.t("cloud_command.box.delete_warn", box: argv.first))
+ cont = @env.ui.ask(I18n.t("cloud_command.continue"))
+ return 1 if cont.strip.downcase != "y"
+ end
- @client = VagrantPlugins::CloudCommand::Util.client_login(@env, options[:username])
+ @client = client_login(@env)
- box = argv.first.split('/', 2)
- org = box[0]
- box_name = box[1]
- delete_box(org, box_name, options[:username], @client.token)
+ org, box_name = argv.first.split('/', 2)
+ delete_box(org, box_name, @client.token)
end
- def delete_box(org, box_name, username, access_token)
- server_url = VagrantPlugins::CloudCommand::Util.api_server_url
- account = VagrantPlugins::CloudCommand::Util.account(username, access_token, server_url)
- box = VagrantCloud::Box.new(account, box_name, nil, nil, nil, access_token)
-
- begin
- success = box.delete(org, box_name)
+ # Delete the requested box
+ #
+ # @param [String] org Organization name of box
+ # @param [String] box_name Name of box
+ # @param [String] access_token User access token
+ # @return [Integer]
+ def delete_box(org, box_name, access_token)
+ account = VagrantCloud::Account.new(
+ custom_server: api_server_url,
+ access_token: access_token
+ )
+ with_box(account: account, org: org, box: box_name) do |box|
+ box.delete
@env.ui.success(I18n.t("cloud_command.box.delete_success", org: org, box_name: box_name))
- return 0
- rescue VagrantCloud::ClientError => e
- @env.ui.error(I18n.t("cloud_command.errors.box.delete_fail", org: org, box_name: box_name))
- @env.ui.error(e)
- return 1
+ 0
end
-
- return 1
+ rescue VagrantCloud::Error => e
+ @env.ui.error(I18n.t("cloud_command.errors.box.delete_fail", org: org, box_name: box_name))
+ @env.ui.error(e.message)
+ 1
end
end
end
end
end