vagrant-dotvm 0.34.0 → 0.35.1.pre

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: af05a860691da0d88715617d01a46581b0f4c5f7
4
- data.tar.gz: ac1f7084700a621c080c90f52195246f667292aa
3
+ metadata.gz: 3dab3eb77f8227efb87c30af0591e3e7013bbaa1
4
+ data.tar.gz: 9cd913f4d0d329db63f9c903972e472676d23e01
5
5
  SHA512:
6
- metadata.gz: 00c8661dc1b6b789bc25c64e900c28e73fd5f3efadb4bcdd8080ed475e1195f01d6d99bff97b3584552718da845b76539bd754e6205fc59185aa0987f0d706a4
7
- data.tar.gz: 708a029dc4ddea5d30777b2a951fb0eb16d444726a18fd86ee2d6cda00b8418cbbdc100feb583d4b03361948f9575bd50bef7b4e7f7efa9e3baf1d6a72d13c84
6
+ metadata.gz: 7bc0a27d27b0d5e01e875546b4151d0046e0419849271b143edc30953b36560f6ad0045dcdbadbe12857af84a762434631ba36b804d33e425c74ff05b906e1e6
7
+ data.tar.gz: a13b24e90c97ae5025752107696636a4e8f8a2a2b52f3030f9b6d348bb4f73780e087fec28c765a3eedbaab18b1fb0f9bbee9c045bcb4ae1f17d7aff12859b5c
data/CHANGELOG.md CHANGED
@@ -1,3 +1,6 @@
1
+ # 0.35.0
2
+ * Technical improvements
3
+
1
4
  # 0.34.0
2
5
  * New configuration directory layout
3
6
  * Removed local variables
data/CONTRIBUTING.md ADDED
@@ -0,0 +1,9 @@
1
+ # Contribution rules
2
+
3
+ * Follow [Community-driven Ruby Style Guide](https://github.com/bbatsov/ruby-style-guide)
4
+ * Check style using [Rubocop](https://github.com/bbatsov/rubocop) before sending pull request
5
+ * Don't send multiple unrelated functionalities in one pull request
6
+ * Don't use micro optimisations which are hard to read
7
+ * Your code will be published under [MIT license](LICENSE.txt)
8
+
9
+ By sending pull request you confirm that you agree with above rules.
data/Gemfile CHANGED
@@ -1,10 +1,12 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
3
  group :development do
4
- gem 'vagrant', :git => 'git://github.com/mitchellh/vagrant.git'
4
+ gem 'vagrant',
5
+ git: 'git://github.com/mitchellh/vagrant.git'
5
6
  end
6
7
 
7
8
  group :plugins do
8
9
  gemspec
9
- gem 'vagrant-group', :git => 'git://github.com/krzysztof-magosa/vagrant-group.git'
10
+ gem 'vagrant-group',
11
+ git: 'git://github.com/krzysztof-magosa/vagrant-group.git'
10
12
  end
data/README.md CHANGED
@@ -1,7 +1,6 @@
1
1
  # DotVm
2
2
 
3
3
  [![Code Climate](https://codeclimate.com/github/vagrant-dotvm/vagrant-dotvm/badges/gpa.svg)](https://codeclimate.com/github/vagrant-dotvm/vagrant-dotvm)
4
- [![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/krzysztof-magosa/vagrant-dotvm/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/krzysztof-magosa/vagrant-dotvm/?branch=master)
5
4
  [![Gem Version](https://badge.fury.io/rb/vagrant-dotvm.svg)](http://badge.fury.io/rb/vagrant-dotvm)
6
5
 
7
6
  ## What is that?
@@ -25,33 +24,15 @@ Then create Vagrantfile like that:
25
24
  require 'vagrant-dotvm'
26
25
 
27
26
  Vagrant.configure(2) do |config|
28
- # config directory will be expected in the same
29
- # directory as Vagrantfile.
30
- config_path = File.dirname(File.expand_path(__FILE__)) + "/config"
31
- dotvm = VagrantPlugins::Dotvm::Dotvm.new config_path
27
+ dotvm = VagrantPlugins::Dotvm::Dotvm.new __dir__
32
28
  dotvm.inject(config)
33
29
  end
34
30
  ```
35
31
 
36
32
  Prepare directory for storing your projects:
37
33
  ```
38
- $ mkdir -p config/projects
34
+ $ mkdir projects
39
35
  ```
40
36
 
41
- ## How to configure machine
42
- You need to create folder named after your project in `config/projects`.
43
- In this folder you can create as many YAML files as you want.
44
- In each one you are able to define multiple machines.
45
-
46
- Please refer to [example](/examples) to see possible options.
47
-
48
- ## Available variables
49
- You can use variables inside of config values.
50
- Environment variables are accessible by using env prefix, e.g. `%env.LOGNAME%`.
51
-
52
- Predefined variables:
53
- * `%project.host%` - points to project directory on host
54
- * `%project.guest%` - points to project directory on guest
55
-
56
37
  ## More information
57
- For more information please follow to [wiki](https://github.com/krzysztof-magosa/vagrant-dotvm/wiki/Getting-started).
38
+ For more information please follow to [wiki](https://github.com/vagrant-dotvm/vagrant-dotvm/wiki/Getting-started).
data/Rakefile CHANGED
@@ -1,2 +1 @@
1
- require "bundler/gem_tasks"
2
-
1
+ require 'bundler/gem_tasks'
@@ -7,13 +7,20 @@ module VagrantPlugins
7
7
  # @param data [Hash] Hash with data
8
8
  def populate(data)
9
9
  data.each do |key, value|
10
- raise InvalidConfigError.new "Invalid configuration option: #{key}." until respond_to? "#{key}="
10
+ unless respond_to? "#{key}="
11
+ fail(
12
+ InvalidConfigError.new,
13
+ "Invalid configuration option: #{key}."
14
+ )
15
+ end
16
+
11
17
  send("#{key}=", value)
12
18
  end
13
19
  end
14
20
 
15
21
  def ensure_type(value, type, name = '')
16
- raise InvalidConfigError.new "'#{name}' must be #{type.name}." unless value.kind_of?(type) || value.kind_of?(NilClass)
22
+ return true if value.is_a?(type) || value.is_a?(NilClass)
23
+ fail InvalidConfigError.new, "'#{name}' must be #{type.name}."
17
24
  end
18
25
 
19
26
  # Converts array of hashes into array of specialized objects.
@@ -1,6 +1,7 @@
1
1
  module VagrantPlugins
2
2
  module Dotvm
3
3
  module Config
4
+ # Stores host configuration
4
5
  class Host < AbstractConfig
5
6
  attr_accessor :ip
6
7
  attr_accessor :host
@@ -8,7 +8,7 @@ module VagrantPlugins
8
8
  OPTIONS_CATEGORIES = [
9
9
  :ssh,
10
10
  :winrm,
11
- :vagrant,
11
+ :vagrant
12
12
  ]
13
13
 
14
14
  attr_reader :projects
@@ -1,6 +1,7 @@
1
1
  module VagrantPlugins
2
2
  module Dotvm
3
3
  module Config
4
+ # Exception signaling error in configuration
4
5
  class InvalidConfigError < ArgumentError
5
6
  end
6
7
  end
@@ -1,11 +1,12 @@
1
1
  module VagrantPlugins
2
2
  module Dotvm
3
3
  module Config
4
+ # Stores machine configuration
4
5
  class Machine < AbstractConfig
5
6
  include OptionsSetter
6
7
 
7
8
  OPTIONS_CATEGORIES = [
8
- :virtualbox,
9
+ :virtualbox
9
10
  ]
10
11
 
11
12
  attr_reader :parent
@@ -53,7 +54,7 @@ module VagrantPlugins
53
54
 
54
55
  def usable_port_range=(value)
55
56
  m = value.scan(/^(\d+)\.\.(\d+)$/)
56
- raise InvalidConfigError.new 'Invalid usable_port_range, it must be in A..B format.' if m.length == 0
57
+ fail InvalidConfigError.new, 'Invalid usable_port_range, it must be in A..B format.' if m.length == 0
57
58
  @usable_port_range = Range.new(m[0][0].to_i, m[0][1].to_i)
58
59
  end
59
60
 
@@ -95,18 +96,18 @@ module VagrantPlugins
95
96
  ensure_type shared_folders, Array, 'shared_folders'
96
97
  @shared_folders = convert_array(shared_folders, SharedFolder.name)
97
98
 
99
+ # Mount DotVM project directory
98
100
  settings = {
99
101
  'host' => @parent.variables['host.project_dir'],
100
102
  'guest' => @parent.variables['guest.project_dir'],
101
103
  'disabled' => false,
102
104
  'create' => false,
103
- 'type' => nil,
105
+ 'type' => nil
104
106
  }
105
107
  item = SharedFolder.new
106
108
  item.populate settings
107
109
  @shared_folders << item
108
110
  end
109
-
110
111
  end
111
112
  end
112
113
  end
@@ -1,6 +1,7 @@
1
1
  module VagrantPlugins
2
2
  module Dotvm
3
3
  module Config
4
+ # Stores network configuration
4
5
  class Network < AbstractConfig
5
6
  attr_reader :net
6
7
  attr_accessor :type
@@ -17,7 +18,7 @@ module VagrantPlugins
17
18
  attr_accessor :auto_config
18
19
 
19
20
  def initialize
20
- @net = :private_network
21
+ @net = :private_network
21
22
  end
22
23
 
23
24
  def net=(value)
@@ -27,7 +28,7 @@ module VagrantPlugins
27
28
  'public_network' => :public_network,
28
29
  'public' => :public_network,
29
30
  'forwarded_port' => :forwarded_port,
30
- 'port' => :forwarded_port,
31
+ 'port' => :forwarded_port
31
32
  }
32
33
 
33
34
  @net = nets[value]
@@ -1,6 +1,7 @@
1
1
  module VagrantPlugins
2
2
  module Dotvm
3
3
  module Config
4
+ # Stores one option
4
5
  class Option < AbstractConfig
5
6
  attr_accessor :name
6
7
  attr_accessor :value
@@ -5,14 +5,14 @@ module VagrantPlugins
5
5
  def options=(options)
6
6
  ensure_type options, Hash, 'options'
7
7
 
8
- @options = {}
8
+ @options = {}
9
9
  self.class::OPTIONS_CATEGORIES.each do |cat|
10
10
  @options[cat] = []
11
11
  end
12
12
 
13
13
  options.to_h.each do |key, confs|
14
14
  key = key.to_sym
15
- raise InvalidConfigError.new "Invalid options category: #{key}." unless @options.has_key?(key)
15
+ fail InvalidConfigError.new, "Invalid options category: #{key}." unless @options.key?(key)
16
16
  ensure_type confs, Array, "options.#{key}"
17
17
 
18
18
  confs.to_a.each do |conf|
@@ -10,7 +10,7 @@ module VagrantPlugins
10
10
  def initialize(parent)
11
11
  @parent = parent
12
12
  @variables = Variables.new
13
- @machines = Array.new
13
+ @machines = []
14
14
  end
15
15
 
16
16
  def new_machine
@@ -1,6 +1,7 @@
1
1
  module VagrantPlugins
2
2
  module Dotvm
3
3
  module Config
4
+ # Stores route configuration
4
5
  class Route < AbstractConfig
5
6
  attr_accessor :destination
6
7
  attr_accessor :gateway
@@ -1,20 +1,27 @@
1
1
  module VagrantPlugins
2
2
  module Dotvm
3
3
  class Dotvm
4
-
5
4
  def initialize(path = nil)
6
- raise 'path must be set.' until path
5
+ fail 'path must be set.' until path
7
6
  @path = path
8
7
  end
9
8
 
9
+ def inject(vc)
10
+ init_instance
11
+ load_options
12
+ load_projects
13
+ Injector::Instance.inject @instance, vc
14
+ end
15
+
10
16
  private
17
+
11
18
  def parse_variables(path)
12
19
  result = {}
13
20
 
14
21
  Dir[path].each do |fname|
15
- yaml = YAML::load(File.read(fname)) || {}
22
+ yaml = YAML.load(File.read(fname)) || {}
16
23
  yaml.each do |name, value|
17
- raise "Variable #{name} already exists." if result.has_key? name
24
+ fail "Variable #{name} already exists." if result.key? name
18
25
  result[name] = value
19
26
  end
20
27
  end
@@ -22,24 +29,21 @@ module VagrantPlugins
22
29
  result
23
30
  end
24
31
 
25
- private
26
32
  def init_instance
27
33
  @instance = Config::Instance.new
28
34
  @instance.variables.append_group 'env', ENV
29
35
  @instance.variables.append_group 'global', (parse_variables "#{@path}/variables/*.yaml")
30
36
  end
31
37
 
32
- private
33
38
  def load_options
34
39
  Dir["#{@path}/options/*.yaml"].each do |file|
35
40
  @instance.options = Replacer.new
36
- .on(YAML::load(File.read(file)) || {})
37
- .using(@instance.variables)
38
- .result
41
+ .on(YAML.load(File.read(file)) || {})
42
+ .using(@instance.variables)
43
+ .result
39
44
  end
40
45
  end
41
46
 
42
- private
43
47
  def load_projects
44
48
  Dir["#{@path}/projects/*"].each do |dir|
45
49
  project = @instance.new_project
@@ -48,21 +52,21 @@ module VagrantPlugins
48
52
  'host',
49
53
  {
50
54
  'project_dir' => dir,
51
- 'files_dir' => "#{dir}/files",
55
+ 'files_dir' => "#{dir}/files"
52
56
  }
53
57
  )
54
58
  project.variables.append_group(
55
59
  'guest',
56
60
  {
57
61
  'project_dir' => DOTVM_PROJECT_PATH,
58
- 'files_dir' => "#{DOTVM_PROJECT_PATH}/files"
62
+ 'files_dir' => DOTVM_FILES_PATH
59
63
  }
60
64
  )
61
65
 
62
66
  Dir["#{dir}/machines/*.yaml"].each do |file|
63
67
  begin
64
68
  yaml = Replacer.new
65
- .on(YAML::load(File.read(file)) || [])
69
+ .on(YAML.load(File.read(file)) || [])
66
70
  .using(@instance.variables.merge(project.variables))
67
71
  .result
68
72
 
@@ -77,14 +81,6 @@ module VagrantPlugins
77
81
  end
78
82
  end
79
83
 
80
- public
81
- def inject(vc)
82
- init_instance
83
- load_options
84
- load_projects
85
- Injector::Instance.inject @instance, vc
86
- end
87
-
88
84
  end # DotVm
89
85
  end # Dotvm
90
86
  end # VagrantPlugins
@@ -1,13 +1,16 @@
1
1
  module VagrantPlugins
2
2
  module Dotvm
3
3
  module Injector
4
- class AbstractInjector
4
+ # Helper functions used by injectors
5
+ module AbstractInjector
6
+ module_function
7
+
5
8
  # Extracts specified `options` from `source` and return them as hash.
6
9
  #
7
10
  # @param source [Object] Object to extract data from
8
11
  # @param options [Array] List of options to be extraced
9
12
  # @return [Hash] Extracted data
10
- def self.generate_hash(source, options)
13
+ def generate_hash(source, options)
11
14
  hash = {}
12
15
 
13
16
  options.each do |opt|
@@ -15,7 +18,7 @@ module VagrantPlugins
15
18
  hash[opt] = val unless val.nil?
16
19
  end
17
20
 
18
- return hash
21
+ hash
19
22
  end
20
23
 
21
24
  # Rewrite `options` from `source` to `target`.
@@ -23,7 +26,7 @@ module VagrantPlugins
23
26
  # @param source [Object] Object to rewrite data from
24
27
  # @param target [Object] Object to rewrite data to
25
28
  # @param options [Array] List of options to be rewritten
26
- def self.rewrite_options(source, target, options)
29
+ def rewrite_options(source, target, options)
27
30
  options.each do |opt|
28
31
  val = source.send(opt)
29
32
  target.send("#{opt}=", val) unless val.nil?
@@ -1,8 +1,13 @@
1
1
  module VagrantPlugins
2
2
  module Dotvm
3
3
  module Injector
4
- class AuthorizedKey < AbstractInjector
5
- def self.inject(key: nil, machine: nil)
4
+ # Injects DotVm authorized key configuration into Vagrant
5
+ module AuthorizedKey
6
+ extend AbstractInjector
7
+
8
+ module_function
9
+
10
+ def inject(key: nil, machine: nil)
6
11
  if key.type == 'file'
7
12
  pubkey = File.readlines(File.expand_path(key.path)).first.strip
8
13
  elsif key.type == 'static'
@@ -1,8 +1,13 @@
1
1
  module VagrantPlugins
2
2
  module Dotvm
3
3
  module Injector
4
- class Host < AbstractInjector
5
- def self.inject(host: nil, machine: nil)
4
+ # Injects DotVm host configuration into Vagrant
5
+ module Host
6
+ extend AbstractInjector
7
+
8
+ module_function
9
+
10
+ def inject(host: nil, machine: nil)
6
11
  machine.vm.provision 'shell', run: 'always' do |s|
7
12
  s.path = "#{UTILS_PATH}/add_host.sh"
8
13
  s.args = [host.ip, host.host]
@@ -1,8 +1,13 @@
1
1
  module VagrantPlugins
2
2
  module Dotvm
3
3
  module Injector
4
- class Instance < AbstractInjector
5
- def self.inject(instance, vc)
4
+ # Injects DotVm instance configuration into Vagrant
5
+ module Instance
6
+ extend AbstractInjector
7
+
8
+ module_function
9
+
10
+ def inject(instance, vc)
6
11
  instance.options.to_h.each do |category, options|
7
12
  options.to_a.each do |option|
8
13
  vc.send(category).send("#{option.name}=", option.value)
@@ -1,7 +1,10 @@
1
1
  module VagrantPlugins
2
2
  module Dotvm
3
3
  module Injector
4
- class Machine < AbstractInjector
4
+ # Injects DotVm machine configuration into Vagrant
5
+ module Machine
6
+ extend AbstractInjector
7
+
5
8
  BOX_OPTIONS = [
6
9
  :box,
7
10
  :hostname,
@@ -20,35 +23,73 @@ module VagrantPlugins
20
23
  :box_url,
21
24
  :communicator,
22
25
  :guest,
23
- :usable_port_range,
26
+ :usable_port_range
24
27
  ]
25
28
 
26
- def self.inject(machine_cfg: nil, vc: nil)
27
- define_opts = {}
28
- define_opts[:primary] = machine_cfg.primary unless machine_cfg.primary.nil?
29
- define_opts[:autostart] = machine_cfg.autostart unless machine_cfg.autostart.nil?
29
+ module_function
30
30
 
31
- vc.vm.define machine_cfg.nick, **define_opts do |machine|
32
- BOX_OPTIONS.each do |opt|
33
- val = machine_cfg.send(opt)
34
- machine.vm.send("#{opt}=", val) unless val.nil?
35
- end
31
+ def inject_options(machine_cfg, machine)
32
+ BOX_OPTIONS.each do |opt|
33
+ val = machine_cfg.send(opt)
34
+ machine.vm.send("#{opt}=", val) unless val.nil?
35
+ end
36
+ end
36
37
 
37
- machine.vm.provider 'virtualbox' do |vb|
38
- vb.customize ['modifyvm', :id, '--memory', machine_cfg.memory] unless machine_cfg.memory.nil?
39
- vb.customize ['modifyvm', :id, '--cpus', machine_cfg.cpus] unless machine_cfg.cpus.nil?
40
- vb.customize ['modifyvm', :id, '--cpuexecutioncap', machine_cfg.cpucap] unless machine_cfg.cpucap.nil?
41
- vb.customize ['modifyvm', :id, '--natnet1', machine_cfg.natnet] unless machine_cfg.natnet.nil?
38
+ def inject_vbox(machine_cfg, machine)
39
+ mapping = [
40
+ ['--memory', :memory],
41
+ ['--cpus', :cpus],
42
+ ['--cpuexecutioncap', :cpucap],
43
+ ['--natnet1', :natnet]
44
+ ]
42
45
 
43
- machine_cfg.options.to_h[:virtualbox].to_a.each do |option|
44
- vb.customize ['modifyvm', :id, option.name, option.value]
45
- end
46
+ machine.vm.provider 'virtualbox' do |vb|
47
+ mapping.each do |item|
48
+ value = machine_cfg.send(item[1])
49
+ vb.customize ['modifyvm', :id, item[0], value] unless value.nil?
46
50
  end
47
51
 
48
- machine.vm.provider 'vmware_fusion' do |vf|
49
- vf.vmx['memsize'] = machine_cfg.memory unless machine_cfg.memory.nil?
50
- vf.vmx['numvcpus'] = machine_cfg.cpus unless machine_cfg.cpus.nil?
52
+ machine_cfg.options.to_h[:virtualbox].to_a.each do |option|
53
+ vb.customize ['modifyvm', :id, option.name, option.value]
51
54
  end
55
+ end
56
+ end
57
+
58
+ def inject_vmware(machine_cfg, machine)
59
+ mapping = [
60
+ ['memsize', :memory],
61
+ ['numvcpus', :cpus]
62
+ ]
63
+
64
+ machine.vm.provider 'vmware_fusion' do |vf|
65
+ mapping.each do |item|
66
+ value = machine_cfg.send(item[1])
67
+ vf.vmx[item[1]] = value unless value.nil?
68
+ end
69
+ end
70
+ end
71
+
72
+ def inject_groups(machine_cfg, vc)
73
+ return false unless Vagrant.has_plugin?('vagrant-group')
74
+
75
+ vc.group.groups = {} unless vc.group.groups.is_a?(Hash)
76
+
77
+ machine_cfg.groups.to_a.each do |group|
78
+ vc.group.groups[group] = [] unless vc.group.groups.key?(group)
79
+ vc.group.groups[group] << machine_cfg.nick
80
+ end
81
+ end
82
+
83
+ def inject(machine_cfg: nil, vc: nil)
84
+ define_opts = {}
85
+ define_opts[:primary] = machine_cfg.primary unless machine_cfg.primary.nil?
86
+ define_opts[:autostart] = machine_cfg.autostart unless machine_cfg.autostart.nil?
87
+
88
+ vc.vm.define machine_cfg.nick, **define_opts do |machine|
89
+ inject_options machine_cfg, machine
90
+ inject_vbox machine_cfg, machine
91
+ inject_vmware machine_cfg, vc
92
+ inject_groups machine_cfg, vc
52
93
 
53
94
  machine_cfg.networks.to_a.each do |net|
54
95
  Network.inject net: net,
@@ -62,7 +103,7 @@ module VagrantPlugins
62
103
 
63
104
  machine_cfg.hosts.to_a.each do |host|
64
105
  Host.inject host: host,
65
- machine: machine
106
+ machine: machine
66
107
  end
67
108
 
68
109
  machine_cfg.provision.to_a.each do |provision|
@@ -79,15 +120,6 @@ module VagrantPlugins
79
120
  AuthorizedKey.inject key: key,
80
121
  machine: machine
81
122
  end
82
-
83
- if Vagrant.has_plugin?('vagrant-group')
84
- vc.group.groups = {} unless vc.group.groups.kind_of?(Hash)
85
-
86
- machine_cfg.groups.to_a.each do |group|
87
- vc.group.groups[group] = [] unless vc.group.groups.has_key?(group)
88
- vc.group.groups[group] << machine_cfg.nick
89
- end
90
- end
91
123
  end
92
124
  end
93
125
  end
@@ -1,7 +1,10 @@
1
1
  module VagrantPlugins
2
2
  module Dotvm
3
3
  module Injector
4
- class Network < AbstractInjector
4
+ # Injects DotVm network configuration into Vagrant
5
+ module Network
6
+ extend AbstractInjector
7
+
5
8
  OPTIONS = [
6
9
  :type,
7
10
  :ip,
@@ -17,7 +20,9 @@ module VagrantPlugins
17
20
  :auto_config,
18
21
  ]
19
22
 
20
- def self.inject(net: nil, machine: nil)
23
+ module_function
24
+
25
+ def inject(net: nil, machine: nil)
21
26
  machine.vm.network net.net, **generate_hash(net, OPTIONS)
22
27
  end
23
28
  end
@@ -1,8 +1,13 @@
1
1
  module VagrantPlugins
2
2
  module Dotvm
3
3
  module Injector
4
- class Project < AbstractInjector
5
- def self.inject(project, vc)
4
+ # Injects DotVm project configuration into Vagrant
5
+ module Project
6
+ extend AbstractInjector
7
+
8
+ module_function
9
+
10
+ def inject(project, vc)
6
11
  project.machines.to_a.each do |machine_cfg|
7
12
  Machine.inject machine_cfg: machine_cfg, vc: vc
8
13
  end
@@ -1,7 +1,10 @@
1
1
  module VagrantPlugins
2
2
  module Dotvm
3
3
  module Injector
4
- class Provision < AbstractInjector
4
+ # Injects DotVm provision configuration into Vagrant
5
+ module Provision
6
+ extend AbstractInjector
7
+
5
8
  OPTIONS = [
6
9
  :path,
7
10
  :inline,
@@ -119,7 +122,7 @@ module VagrantPlugins
119
122
  :delete_node,
120
123
  :delete_client,
121
124
  :recipe,
122
- :images,
125
+ :images
123
126
  ]
124
127
 
125
128
  RUNS_OPTIONS = [
@@ -128,11 +131,12 @@ module VagrantPlugins
128
131
  :args,
129
132
  :auto_assign_name,
130
133
  :daemonize,
131
- :restart,
134
+ :restart
132
135
  ]
133
136
 
134
- public
135
- def self.inject(provision_cfg: nil, machine: nil)
137
+ module_function
138
+
139
+ def inject(provision_cfg: nil, machine: nil)
136
140
  machine.vm.provision provision_cfg.type, run: provision_cfg.run do |p|
137
141
  rewrite_options(provision_cfg, p, OPTIONS)
138
142
 
@@ -1,8 +1,13 @@
1
1
  module VagrantPlugins
2
2
  module Dotvm
3
3
  module Injector
4
- class Route < AbstractInjector
5
- def self.inject(route: nil, machine: nil)
4
+ # Injects DotVm route configuration into Vagrant
5
+ module Route
6
+ extend AbstractInjector
7
+
8
+ module_function
9
+
10
+ def inject(route: nil, machine: nil)
6
11
  machine.vm.provision 'shell', run: 'always' do |s|
7
12
  s.path = "#{UTILS_PATH}/setup_route.sh"
8
13
  s.args = [route.destination, route.gateway]
@@ -1,7 +1,10 @@
1
1
  module VagrantPlugins
2
2
  module Dotvm
3
3
  module Injector
4
- class SharedFolder < AbstractInjector
4
+ # Injects DotVm shared folder configuration into Vagrant
5
+ module SharedFolder
6
+ extend AbstractInjector
7
+
5
8
  OPTIONS = [
6
9
  :disabled,
7
10
  :create,
@@ -20,11 +23,17 @@ module VagrantPlugins
20
23
  :rsync__verbose,
21
24
  :smb_host,
22
25
  :smb_password,
23
- :smb_username,
26
+ :smb_username
24
27
  ]
25
28
 
26
- def self.inject(folder: nil, machine: nil)
27
- machine.vm.synced_folder folder.host, folder.guest, **generate_hash(folder, OPTIONS)
29
+ module_function
30
+
31
+ def inject(folder: nil, machine: nil)
32
+ machine.vm.synced_folder(
33
+ folder.host,
34
+ folder.guest,
35
+ **generate_hash(folder, OPTIONS)
36
+ )
28
37
  end
29
38
  end
30
39
  end
@@ -2,5 +2,6 @@ module VagrantPlugins
2
2
  module Dotvm
3
3
  UTILS_PATH = File.dirname(__FILE__) + '/../../utils'
4
4
  DOTVM_PROJECT_PATH = '/dotvm/project'
5
+ DOTVM_FILES_PATH = "#{DOTVM_PROJECT_PATH}/files"
5
6
  end
6
7
  end
@@ -1,10 +1,8 @@
1
1
  module VagrantPlugins
2
2
  module Dotvm
3
-
4
3
  class Plugin < Vagrant.plugin(2)
5
4
  name 'Dotvm'
6
5
  description 'Easy YAML based multi machine config.'
7
6
  end # Plugin
8
-
9
7
  end # Dotvm
10
8
  end # VagrantPlugins
@@ -27,34 +27,36 @@ module VagrantPlugins
27
27
  return target if @replaced == 0
28
28
  end
29
29
 
30
- raise 'Too deep variables relations, possible recurrence.'
30
+ fail 'Too deep variables relations, possible recurrence.'
31
31
  end
32
32
 
33
33
  private
34
+
34
35
  def process_string(target)
35
36
  @vars.each do |k, v|
36
37
  pattern = "%#{k}%"
38
+ next unless target.include? pattern
37
39
 
38
- if target.include? pattern
39
- @replaced += 1
40
+ @replaced += 1
40
41
 
41
- if target == pattern
42
- target = v
43
- break unless v.is_a? String # value is no longer string, so replace cannot be performed
44
- else
45
- unless v.respond_to? :to_s
46
- raise 'Non-string values cannot be joined together.'
47
- end
42
+ if target == pattern
43
+ target = v
48
44
 
49
- target = target.gsub pattern, v.to_s
45
+ # value is no longer string, so
46
+ # replace cannot be performed
47
+ break unless v.is_a? String
48
+ else
49
+ unless v.respond_to? :to_s
50
+ fail 'Non-string values cannot be joined together.'
50
51
  end
52
+
53
+ target = target.gsub pattern, v.to_s
51
54
  end
52
55
  end
53
56
 
54
57
  target
55
58
  end
56
59
 
57
- private
58
60
  def _replace_vars(target)
59
61
  case target
60
62
  when Hash
@@ -1,5 +1,5 @@
1
1
  module VagrantPlugins
2
2
  module Dotvm
3
- VERSION = '0.34.0'
3
+ VERSION = '0.35.1.pre'
4
4
  end
5
5
  end
@@ -4,19 +4,19 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
  require 'vagrant-dotvm/version'
5
5
 
6
6
  Gem::Specification.new do |spec|
7
- spec.name = "vagrant-dotvm"
7
+ spec.name = 'vagrant-dotvm'
8
8
  spec.version = VagrantPlugins::Dotvm::VERSION
9
- spec.authors = ["Krzysztof Magosa"]
10
- spec.email = ["krzysztof@magosa.pl"]
11
- spec.summary = "Easy YAML based multi machine config approach for Vagrant."
12
- spec.homepage = "http://github.com/vagrant-dotvm/vagrant-dotvm"
13
- spec.license = "MIT"
9
+ spec.authors = ['Krzysztof Magosa']
10
+ spec.email = ['krzysztof@magosa.pl']
11
+ spec.summary = 'Easy YAML based multi machine config approach for Vagrant.'
12
+ spec.homepage = 'http://github.com/vagrant-dotvm/vagrant-dotvm'
13
+ spec.license = 'MIT'
14
14
 
15
15
  spec.files = `git ls-files -z`.split("\x0")
16
16
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
17
17
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
18
- spec.require_paths = ["lib"]
18
+ spec.require_paths = ['lib']
19
19
 
20
- spec.add_development_dependency "bundler", "~> 1.7"
21
- spec.add_development_dependency "rake", "~> 10.0"
20
+ spec.add_development_dependency 'bundler', '~> 1.7'
21
+ spec.add_development_dependency 'rake', '~> 10.0'
22
22
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vagrant-dotvm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.34.0
4
+ version: 0.35.1.pre
5
5
  platform: ruby
6
6
  authors:
7
7
  - Krzysztof Magosa
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-08-24 00:00:00.000000000 Z
11
+ date: 2015-09-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -47,6 +47,7 @@ extra_rdoc_files: []
47
47
  files:
48
48
  - .gitignore
49
49
  - CHANGELOG.md
50
+ - CONTRIBUTING.md
50
51
  - Gemfile
51
52
  - LICENSE.txt
52
53
  - README.md
@@ -102,12 +103,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
102
103
  version: '0'
103
104
  required_rubygems_version: !ruby/object:Gem::Requirement
104
105
  requirements:
105
- - - '>='
106
+ - - '>'
106
107
  - !ruby/object:Gem::Version
107
- version: '0'
108
+ version: 1.3.1
108
109
  requirements: []
109
110
  rubyforge_project:
110
- rubygems_version: 2.0.14
111
+ rubygems_version: 2.0.14.1
111
112
  signing_key:
112
113
  specification_version: 4
113
114
  summary: Easy YAML based multi machine config approach for Vagrant.