vagrant-dotvm 0.34.0 → 0.35.1.pre

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.
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.