`vagrant init` uses new OptParse based CLI
This commit is contained in:
parent
1770ad1ee5
commit
98df762f8c
|
@ -97,6 +97,7 @@ I18n.load_path << File.expand_path("templates/locales/en.yml", Vagrant.source_ro
|
||||||
Vagrant.commands.register(:box) { Vagrant::Command::Box }
|
Vagrant.commands.register(:box) { Vagrant::Command::Box }
|
||||||
Vagrant.commands.register(:destroy) { Vagrant::Command::Destroy }
|
Vagrant.commands.register(:destroy) { Vagrant::Command::Destroy }
|
||||||
Vagrant.commands.register(:halt) { Vagrant::Command::Halt }
|
Vagrant.commands.register(:halt) { Vagrant::Command::Halt }
|
||||||
|
Vagrant.commands.register(:init) { Vagrant::Command::Init }
|
||||||
Vagrant.commands.register(:package) { Vagrant::Command::Package }
|
Vagrant.commands.register(:package) { Vagrant::Command::Package }
|
||||||
Vagrant.commands.register(:provision) { Vagrant::Command::Provision }
|
Vagrant.commands.register(:provision) { Vagrant::Command::Provision }
|
||||||
Vagrant.commands.register(:reload) { Vagrant::Command::Reload }
|
Vagrant.commands.register(:reload) { Vagrant::Command::Reload }
|
||||||
|
|
|
@ -9,6 +9,7 @@ module Vagrant
|
||||||
autoload :BoxList, 'vagrant/command/box_list'
|
autoload :BoxList, 'vagrant/command/box_list'
|
||||||
autoload :Destroy, 'vagrant/command/destroy'
|
autoload :Destroy, 'vagrant/command/destroy'
|
||||||
autoload :Halt, 'vagrant/command/halt'
|
autoload :Halt, 'vagrant/command/halt'
|
||||||
|
autoload :Init, 'vagrant/command/init'
|
||||||
autoload :Package, 'vagrant/command/package'
|
autoload :Package, 'vagrant/command/package'
|
||||||
autoload :Provision, 'vagrant/command/provision'
|
autoload :Provision, 'vagrant/command/provision'
|
||||||
autoload :Reload, 'vagrant/command/reload'
|
autoload :Reload, 'vagrant/command/reload'
|
||||||
|
|
|
@ -1,13 +1,36 @@
|
||||||
|
require 'optparse'
|
||||||
|
|
||||||
|
require 'vagrant/util/template_renderer'
|
||||||
|
|
||||||
module Vagrant
|
module Vagrant
|
||||||
module Command
|
module Command
|
||||||
class InitCommand < Base
|
class Init < Base
|
||||||
argument :box_name, :type => :string, :optional => true, :default => "base"
|
|
||||||
argument :box_url, :type => :string, :optional => true
|
|
||||||
source_root File.expand_path("templates/commands/init", Vagrant.source_root)
|
|
||||||
register "init [box_name] [box_url]", "Initializes the current folder for Vagrant usage"
|
|
||||||
|
|
||||||
def execute
|
def execute
|
||||||
template "Vagrantfile.erb", env.cwd.join("Vagrantfile")
|
options = {}
|
||||||
|
|
||||||
|
opts = OptionParser.new do |opts|
|
||||||
|
opts.banner = "Usage: vagrant init [box-name] [box-url]"
|
||||||
|
end
|
||||||
|
|
||||||
|
# Parse the options
|
||||||
|
argv = parse_options(opts)
|
||||||
|
return if !argv
|
||||||
|
|
||||||
|
save_path = @env.cwd.join("Vagrantfile")
|
||||||
|
raise Errors::VagrantfileExistsError if save_path.exist?
|
||||||
|
|
||||||
|
template_path = ::Vagrant.source_root.join("templates/commands/init/Vagrantfile")
|
||||||
|
contents = Vagrant::Util::TemplateRenderer.render(template_path,
|
||||||
|
:box_name => argv[0] || "base",
|
||||||
|
:box_url => argv[1])
|
||||||
|
|
||||||
|
# Write out the contents
|
||||||
|
save_path.open("w+") do |f|
|
||||||
|
f.write(contents)
|
||||||
|
end
|
||||||
|
|
||||||
|
@env.ui.info(I18n.t("vagrant.commands.init.success"),
|
||||||
|
:prefix => false)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -290,6 +290,11 @@ module Vagrant
|
||||||
error_key(:interrupted)
|
error_key(:interrupted)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
class VagrantfileExistsError < VagrantError
|
||||||
|
status_code(58)
|
||||||
|
error_key(:vagrantfile_exists)
|
||||||
|
end
|
||||||
|
|
||||||
class VagrantfileSyntaxError < VagrantError
|
class VagrantfileSyntaxError < VagrantError
|
||||||
status_code(41)
|
status_code(41)
|
||||||
error_key(:vagrantfile_syntax_error)
|
error_key(:vagrantfile_syntax_error)
|
||||||
|
|
|
@ -115,6 +115,9 @@ en:
|
||||||
|
|
||||||
http://vagrantup.com/docs/getting-started/setup/windows.html
|
http://vagrantup.com/docs/getting-started/setup/windows.html
|
||||||
|
|
||||||
|
vagrantfile_exists: |-
|
||||||
|
`Vagrantfile` already exists in this directory. Remove it before
|
||||||
|
running `vagrant init`.
|
||||||
vagrantfile_syntax_error: |-
|
vagrantfile_syntax_error: |-
|
||||||
There is a syntax error in the following Vagrantfile. The syntax error
|
There is a syntax error in the following Vagrantfile. The syntax error
|
||||||
message is reproduced below for convenience:
|
message is reproduced below for convenience:
|
||||||
|
@ -197,6 +200,12 @@ en:
|
||||||
vm_not_running: "VM is not currently running. Please bring it up to run this command."
|
vm_not_running: "VM is not currently running. Please bring it up to run this command."
|
||||||
box:
|
box:
|
||||||
no_installed_boxes: "There are no installed boxes! Use `vagrant box add` to add some."
|
no_installed_boxes: "There are no installed boxes! Use `vagrant box add` to add some."
|
||||||
|
init:
|
||||||
|
success: |-
|
||||||
|
A `Vagrantfile` has been placed in this directory. You are now
|
||||||
|
ready to `vagrant up` your first virtual environment! Please read
|
||||||
|
the comments in the Vagrantfile as well as documentation on
|
||||||
|
`vagrantup.com` for more information on using Vagrant.
|
||||||
status:
|
status:
|
||||||
aborted: |-
|
aborted: |-
|
||||||
The VM is in an aborted state. This means that it was abruptly
|
The VM is in an aborted state. This means that it was abruptly
|
||||||
|
|
Loading…
Reference in New Issue