vagrant-yaml 0.0.6 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/Readme.md CHANGED
@@ -88,5 +88,5 @@ requests.
88
88
  CREDITS
89
89
  -------
90
90
 
91
- Developed and maintained by Christopher Gervais <http://ergonlogic.com/>
92
-
91
+ Developed and maintained by Praxis Labs Coop <http://praxis.coop/>
92
+ Sponsored by Poetic Systems <http://poeticsystems.com/>
@@ -1,10 +1,6 @@
1
1
  require 'vagrant'
2
2
  require 'vagrant-yaml/errors'
3
- require 'vagrant-yaml/commands/yaml'
4
- require 'vagrant-yaml/commands/yaml_init'
5
- require 'vagrant-yaml/commands/yaml_update'
6
-
7
- Vagrant.commands.register(:yaml) { VagrantYaml::Command::Yaml }
3
+ require 'vagrant-yaml/plugin'
8
4
 
9
5
  module VagrantYaml
10
6
  # The source root is the path to the root directory of the this gem.
@@ -0,0 +1,69 @@
1
+ require 'optparse'
2
+
3
+ module VagrantPlugins
4
+ module VagrantYaml
5
+ module Command
6
+ class Yaml < Vagrant.plugin("2", :command)
7
+ def self.synopsis
8
+ "Manage YAML-based projects."
9
+ end
10
+
11
+ def initialize(argv, env)
12
+ super
13
+
14
+ @main_args, @sub_command, @sub_args = split_main_and_subcommand(argv)
15
+
16
+ @subcommands = Vagrant::Registry.new
17
+ @subcommands.register(:init) do
18
+ require File.expand_path("../yaml_init", __FILE__)
19
+ YamlInit
20
+ end
21
+
22
+ @subcommands.register(:update) do
23
+ require File.expand_path("../yaml_update", __FILE__)
24
+ YamlUpdate
25
+ end
26
+ end
27
+
28
+ def execute
29
+ if @main_args.include?("-h") || @main_args.include?("--help")
30
+ # Print the help for all the box commands.
31
+ return help
32
+ end
33
+
34
+ # If we reached this far then we must have a subcommand. If not,
35
+ # then we also just print the help and exit.
36
+ command_class = @subcommands.get(@sub_command.to_sym) if @sub_command
37
+ return help if !command_class || !@sub_command
38
+ @logger.debug("Invoking command class: #{command_class} #{@sub_args.inspect}")
39
+
40
+ # Initialize and execute the command class
41
+ command_class.new(@sub_args, @env).execute
42
+ end
43
+
44
+ # Prints the help out for this command
45
+ def help
46
+ opts = OptionParser.new do |opts|
47
+ opts.banner = "Usage: vagrant yaml <command> [<args>]"
48
+ opts.separator ""
49
+ opts.separator "Available subcommands:"
50
+
51
+ # Add the available subcommands as separators in order to print them
52
+ # out as well.
53
+ keys = []
54
+ @subcommands.each { |key, value| keys << key.to_s }
55
+
56
+ keys.sort.each do |key|
57
+ opts.separator " #{key}"
58
+ end
59
+
60
+ opts.separator ""
61
+ opts.separator "For help on any individual command run `vagrant yaml COMMAND -h`"
62
+ end
63
+
64
+ @env.ui.info(opts.help, :prefix => false)
65
+ end
66
+ end
67
+ end
68
+ end
69
+ end
@@ -0,0 +1,82 @@
1
+ require 'optparse'
2
+ require 'vagrant/util/template_renderer'
3
+
4
+ module VagrantPlugins
5
+ module VagrantYaml
6
+ module Command
7
+ class YamlInit < Vagrant.plugin("2", :command)
8
+
9
+ def self.synopsis
10
+ "Initializes a new YAML-based Vagrant environment by creating a Vagrantfile, and config directories."
11
+ end
12
+ def execute
13
+ options = {}
14
+
15
+ opts = OptionParser.new do |opts|
16
+ opts.banner = "Usage: vagrant yaml init [box-name] [box-url]"
17
+ end
18
+
19
+ # Parse the options
20
+ argv = parse_options(opts)
21
+ return if !argv
22
+
23
+ create_vagrantfile
24
+ create_directories
25
+ create_default_yaml(argv[0], argv[1])
26
+ create_local_default_yaml
27
+ create_symlinks
28
+
29
+ @env.ui.info(I18n.t("vagrant.plugins.yaml.commands.init.success"),
30
+ :prefix => false)
31
+ # Success, exit status 0
32
+ 0
33
+ end
34
+
35
+ def create_vagrantfile
36
+ save_path = @env.cwd.join("Vagrantfile")
37
+ raise Errors::VagrantfileExistsError if save_path.exist?
38
+
39
+ template_path = ::VagrantYaml.source_root.join("templates/Vagrantfile")
40
+ contents = Vagrant::Util::TemplateRenderer.render(template_path)
41
+ save_path.open("w+") do |f|
42
+ f.write(contents)
43
+ end
44
+ end
45
+
46
+ def create_directories
47
+ Dir.mkdir('vms-available')
48
+ Dir.mkdir('vms-enabled')
49
+ Dir.mkdir('local.d')
50
+ end
51
+
52
+ def create_default_yaml(box_name=nil, box_url=nil)
53
+ save_path = @env.cwd.join("vms-available/default.yaml")
54
+ raise Errors::VagrantfileExistsError if save_path.exist?
55
+
56
+ template_path = ::VagrantYaml.source_root.join("templates/default.yaml")
57
+ contents = Vagrant::Util::TemplateRenderer.render(template_path,
58
+ :box_name => box_name,
59
+ :box_url => box_url)
60
+ save_path.open("w+") do |f|
61
+ f.write(contents)
62
+ end
63
+ end
64
+
65
+ def create_local_default_yaml
66
+ save_path = @env.cwd.join("local.d/default.yaml")
67
+ raise Errors::VagrantfileExistsError if save_path.exist?
68
+ template_path = ::VagrantYaml.source_root.join("templates/local.default.yaml")
69
+ contents = Vagrant::Util::TemplateRenderer.render(template_path)
70
+ save_path.open("w+") do |f|
71
+ f.write(contents)
72
+ end
73
+ end
74
+
75
+ def create_symlinks
76
+ File.symlink("../vms-available/default.yaml", "vms-enabled/default.yaml")
77
+ end
78
+
79
+ end
80
+ end
81
+ end
82
+ end
@@ -0,0 +1,77 @@
1
+ require 'optparse'
2
+ require 'vagrant/util/template_renderer'
3
+
4
+ module VagrantPlugins
5
+ module VagrantYaml
6
+ module Command
7
+ class YamlUpdate < Vagrant.plugin("2", :command)
8
+ def self.synopsis
9
+ "Updates a YAML-based Vagrant environment."
10
+ end
11
+
12
+ def execute
13
+ options = {}
14
+
15
+ # Boolean whether we should actually go through with the update
16
+ # or not. This is true only if the "--force" flag is set or if the
17
+ # user confirms it.
18
+ do_update = false
19
+
20
+ opts = OptionParser.new do |opts|
21
+ opts.banner = "Usage: vagrant yaml update"
22
+
23
+ opts.on("-f", "--force", "Update without confirmation.") do |f|
24
+ options[:force] = f
25
+ end
26
+ end
27
+
28
+ # Parse the options
29
+ argv = parse_options(opts)
30
+ return if !argv
31
+
32
+ if options[:force]
33
+ do_update = true
34
+ else
35
+ choice = nil
36
+ begin
37
+ choice = @env.ui.ask(I18n.t("vagrant.plugins.yaml.commands.update.confirmation"))
38
+
39
+ rescue Errors::UIExpectsTTY
40
+ # We raise a more specific error but one which basically
41
+ # means the same thing.
42
+ raise Errors::UpdateRequiresForce
43
+ end
44
+ do_update = choice.upcase == "Y"
45
+ end
46
+
47
+ if do_update
48
+ @logger.info("Updating project with latest Vagrantfile from vagrant-yaml.")
49
+ update
50
+ else
51
+ @logger.info("Not updating project since confirmation was declined.")
52
+ @env.ui.success(I18n.t("vagrant.plugins.yaml.commands.update.will_not_update"),
53
+ :prefix => false)
54
+ end
55
+ end
56
+
57
+ def update
58
+ save_path = @env.cwd.join("Vagrantfile")
59
+
60
+ template_path = ::VagrantYaml.source_root.join("templates/Vagrantfile")
61
+ contents = Vagrant::Util::TemplateRenderer.render(template_path)
62
+
63
+ # Write out the contents
64
+ save_path.open("w+") do |f|
65
+ f.write(contents)
66
+ end
67
+
68
+ @env.ui.info(I18n.t("vagrant.plugins.yaml.commands.update.success"),
69
+ :prefix => false)
70
+
71
+ # Success, exit status 0
72
+ 0
73
+ end
74
+ end
75
+ end
76
+ end
77
+ end
@@ -0,0 +1,26 @@
1
+ module VagrantPlugins
2
+ module VagrantYaml
3
+ class Plugin < Vagrant.plugin("2")
4
+ name "Yagrant YAML"
5
+ description <<-DESC
6
+ This plugin enables Vagrant to use YAML files to configure VMs.
7
+ DESC
8
+
9
+ command("yaml") do
10
+ require_relative "command/yaml"
11
+ Command::Yaml
12
+ end
13
+
14
+ command("yaml-init", primary: false) do
15
+ require_relative "command/yaml_init"
16
+ Command::YamlInit
17
+ end
18
+
19
+ command("yaml-update", primary: false) do
20
+ require_relative "command/yaml_update"
21
+ Command::YamlUpdate
22
+ end
23
+ end
24
+ end
25
+ end
26
+
@@ -1,3 +1,3 @@
1
1
  module VagrantYaml
2
- VERSION = "0.0.6"
2
+ VERSION = "0.1.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vagrant-yaml
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-02-22 00:00:00.000000000 Z
12
+ date: 2014-03-27 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: i18n
@@ -41,12 +41,12 @@ files:
41
41
  - LICENSE
42
42
  - Readme.md
43
43
  - lib/vagrant-yaml.rb
44
- - lib/vagrant-yaml/commands/yaml.rb
45
- - lib/vagrant-yaml/commands/yaml_init.rb
46
- - lib/vagrant-yaml/commands/yaml_update.rb
44
+ - lib/vagrant-yaml/command/yaml.rb
45
+ - lib/vagrant-yaml/command/yaml_init.rb
46
+ - lib/vagrant-yaml/command/yaml_update.rb
47
47
  - lib/vagrant-yaml/errors.rb
48
+ - lib/vagrant-yaml/plugin.rb
48
49
  - lib/vagrant-yaml/version.rb
49
- - lib/vagrant_init.rb
50
50
  - locales/en.yml
51
51
  - templates/Vagrantfile.erb
52
52
  - templates/default.yaml.erb
@@ -1,60 +0,0 @@
1
- require 'optparse'
2
- require 'vagrant/util/template_renderer'
3
- require 'vagrant/command/base'
4
-
5
- module VagrantYaml
6
- module Command
7
-
8
- class Yaml < Vagrant::Command::Base
9
- def initialize(argv, env)
10
- super
11
-
12
- @main_args, @sub_command, @sub_args = split_main_and_subcommand(argv)
13
-
14
- @subcommands = Vagrant::Registry.new
15
- @subcommands.register(:init) { VagrantYaml::Command::YamlInit }
16
- @subcommands.register(:update) { VagrantYaml::Command::YamlUpdate }
17
- end
18
-
19
- def execute
20
- if @main_args.include?("-h") || @main_args.include?("--help")
21
- # Print the help for all the box commands.
22
- return help
23
- end
24
-
25
- # If we reached this far then we must have a subcommand. If not,
26
- # then we also just print the help and exit.
27
- command_class = @subcommands.get(@sub_command.to_sym) if @sub_command
28
- return help if !command_class || !@sub_command
29
- @logger.debug("Invoking command class: #{command_class} #{@sub_args.inspect}")
30
-
31
- # Initialize and execute the command class
32
- command_class.new(@sub_args, @env).execute
33
- end
34
-
35
- # Prints the help out for this command
36
- def help
37
- opts = OptionParser.new do |opts|
38
- opts.banner = "Usage: vagrant yaml <command> [<args>]"
39
- opts.separator ""
40
- opts.separator "Available subcommands:"
41
-
42
- # Add the available subcommands as separators in order to print them
43
- # out as well.
44
- keys = []
45
- @subcommands.each { |key, value| keys << key.to_s }
46
-
47
- keys.sort.each do |key|
48
- opts.separator " #{key}"
49
- end
50
-
51
- opts.separator ""
52
- opts.separator "For help on any individual command run `vagrant yaml COMMAND -h`"
53
- end
54
-
55
- @env.ui.info(opts.help, :prefix => false)
56
- end
57
- end
58
- end
59
- end
60
-
@@ -1,79 +0,0 @@
1
- require 'optparse'
2
- require 'vagrant/util/template_renderer'
3
- require 'vagrant/command/base'
4
-
5
- module VagrantYaml
6
- module Command
7
-
8
- class YamlInit < Vagrant::Command::Base
9
- def execute
10
- options = {}
11
-
12
- opts = OptionParser.new do |opts|
13
- opts.banner = "Usage: vagrant yaml init [box-name] [box-url]"
14
- end
15
-
16
- # Parse the options
17
- argv = parse_options(opts)
18
- return if !argv
19
-
20
- create_vagrantfile
21
- create_directories
22
- create_default_yaml(argv[0], argv[1])
23
- create_local_default_yaml
24
- create_symlinks
25
-
26
- @env.ui.info(I18n.t("vagrant.plugins.yaml.commands.init.success"),
27
- :prefix => false)
28
- # Success, exit status 0
29
- 0
30
- end
31
-
32
- def create_vagrantfile
33
- save_path = @env.cwd.join("Vagrantfile")
34
- raise Errors::VagrantfileExistsError if save_path.exist?
35
-
36
- template_path = ::VagrantYaml.source_root.join("templates/Vagrantfile")
37
- contents = Vagrant::Util::TemplateRenderer.render(template_path)
38
- save_path.open("w+") do |f|
39
- f.write(contents)
40
- end
41
- end
42
-
43
- def create_directories
44
- Dir.mkdir('vms-available')
45
- Dir.mkdir('vms-enabled')
46
- Dir.mkdir('local.d')
47
- end
48
-
49
- def create_default_yaml(box_name=nil, box_url=nil)
50
- save_path = @env.cwd.join("vms-available/default.yaml")
51
- raise Errors::VagrantfileExistsError if save_path.exist?
52
-
53
- template_path = ::VagrantYaml.source_root.join("templates/default.yaml")
54
- contents = Vagrant::Util::TemplateRenderer.render(template_path,
55
- :box_name => box_name,
56
- :box_url => box_url)
57
- save_path.open("w+") do |f|
58
- f.write(contents)
59
- end
60
- end
61
-
62
- def create_local_default_yaml
63
- save_path = @env.cwd.join("local.d/default.yaml")
64
- raise Errors::VagrantfileExistsError if save_path.exist?
65
- template_path = ::VagrantYaml.source_root.join("templates/local.default.yaml")
66
- contents = Vagrant::Util::TemplateRenderer.render(template_path)
67
- save_path.open("w+") do |f|
68
- f.write(contents)
69
- end
70
- end
71
-
72
- def create_symlinks
73
- File.symlink("../vms-available/default.yaml", "vms-enabled/default.yaml")
74
- end
75
-
76
- end
77
- end
78
- end
79
-
@@ -1,74 +0,0 @@
1
- require 'optparse'
2
- require 'vagrant/util/template_renderer'
3
- require 'vagrant/command/base'
4
-
5
- module VagrantYaml
6
- module Command
7
-
8
- class YamlUpdate < Vagrant::Command::Base
9
- def execute
10
- options = {}
11
-
12
- # Boolean whether we should actually go through with the update
13
- # or not. This is true only if the "--force" flag is set or if the
14
- # user confirms it.
15
- do_update = false
16
-
17
- opts = OptionParser.new do |opts|
18
- opts.banner = "Usage: vagrant yaml update"
19
-
20
- opts.on("-f", "--force", "Update without confirmation.") do |f|
21
- options[:force] = f
22
- end
23
- end
24
-
25
- # Parse the options
26
- argv = parse_options(opts)
27
- return if !argv
28
-
29
- if options[:force]
30
- do_update = true
31
- else
32
- choice = nil
33
- begin
34
- choice = @env.ui.ask(I18n.t("vagrant.plugins.yaml.commands.update.confirmation"))
35
-
36
- rescue Errors::UIExpectsTTY
37
- # We raise a more specific error but one which basically
38
- # means the same thing.
39
- raise Errors::UpdateRequiresForce
40
- end
41
- do_update = choice.upcase == "Y"
42
- end
43
-
44
- if do_update
45
- @logger.info("Updating project with latest Vagrantfile from vagrant-yaml.")
46
- update
47
- else
48
- @logger.info("Not updating project since confirmation was declined.")
49
- @env.ui.success(I18n.t("vagrant.plugins.yaml.commands.update.will_not_update"),
50
- :prefix => false)
51
- end
52
- end
53
-
54
- def update
55
- save_path = @env.cwd.join("Vagrantfile")
56
-
57
- template_path = ::VagrantYaml.source_root.join("templates/Vagrantfile")
58
- contents = Vagrant::Util::TemplateRenderer.render(template_path)
59
-
60
- # Write out the contents
61
- save_path.open("w+") do |f|
62
- f.write(contents)
63
- end
64
-
65
- @env.ui.info(I18n.t("vagrant.plugins.yaml.commands.update.success"),
66
- :prefix => false)
67
-
68
- # Success, exit status 0
69
- 0
70
- end
71
- end
72
- end
73
- end
74
-
@@ -1,3 +0,0 @@
1
- # This file is automatically loaded by Vagrant to load any
2
- # plugins. This file kicks off this plugin.
3
- require 'vagrant-yaml'