vagrant-dotvm 0.7.0 → 0.8.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 58d6bfd4a6cefbe7de781b6ec3a0fe8886b11cc2
4
- data.tar.gz: 12cc9974690ab4b28ce14008c148a881131b567d
3
+ metadata.gz: debbbcde749af67762470debc868aa2f2d29dd38
4
+ data.tar.gz: cd4270123ac9fed8511cb028f38a94cddbe99f26
5
5
  SHA512:
6
- metadata.gz: bc90c2ccab04fe97f7ad9f20463b89a65270364215faaffe4a66c095a97bb6648ab84693f156532c9ccf54b98f01513c849a14521907fd9d210970e587c086da
7
- data.tar.gz: fcba7dade55d13f32eaf49cac6bef88b24b729c9e241fe7779c8bba6e6d076e53375a1dd3409a05bfd31c111ce1576cd28f66e19f2f42cfb1f3a5370c1bb7735
6
+ metadata.gz: 71fcdc8d518ae0d5f5dda2258a9f39b5934ebc1fb0b8a25d338c357469fa66496e88c411f8f446703d694512177cb45e635fd0068e31a1d28033cfc449225156
7
+ data.tar.gz: 09b04ba244a8309b68c6ad8eadef820b47cb5bf98c2e90112ddfe94f8828f6b0912ab505308b04adaadf70af86feb015eaeea221e32a38fffec79dd2cde431cc
data/README.md CHANGED
@@ -11,6 +11,8 @@ Then create Vagrantfile like that:
11
11
  require 'vagrant-dotvm'
12
12
 
13
13
  Vagrant.configure(2) do |config|
14
+ # config directory will be expected in the same
15
+ # directory as Vagrantfile.
14
16
  config_path = File.dirname(File.expand_path(__FILE__)) + "/config"
15
17
  dotvm = VagrantPlugins::Dotvm::Dotvm.new config_path
16
18
  dotvm.inject(config)
@@ -26,8 +28,7 @@ $ mkdir -p config/projects
26
28
  You need to create folder named after your project in `config/projects`.
27
29
  In this folder you can create as many YAML files as you want.
28
30
  In each one you are able to define multiple machines.
29
- Where it makes sense you can use %project.path% variable which will be replaced with
30
- path to directory where you project lives.
31
+
31
32
 
32
33
  Example YAML configuration:
33
34
  ```yaml
@@ -41,8 +42,18 @@ machines:
41
42
  mask: 255.255.255.0
42
43
  provision:
43
44
  - type: shell
44
- path: "%project.path%/bootstrap.sh"
45
+ path: "%project.host%/bootstrap.sh"
46
+ args:
47
+ - "%project.guest%"
45
48
  shared_folders:
46
49
  - host: /Volumes/Repos
47
50
  guest: /srv/www
48
51
  ```
52
+
53
+ ## Available variables
54
+ You can use variables inside of config values.
55
+ Environment variables are accessible by using env prefix, e.g. `%env.LOGNAME%`.
56
+
57
+ Predefined variables:
58
+ * `%project.host%` - points to project directory on host
59
+ * `%project.guest%` - points to project directory on guest
@@ -3,6 +3,9 @@ module VagrantPlugins
3
3
  class ConfigInjecter
4
4
 
5
5
  def self.inject(config, vc)
6
+ # General settings
7
+ vc.ssh.forward_x11 = true
8
+
6
9
  config[:machines].each do |machine_cfg|
7
10
  vc.vm.define machine_cfg[:nick], primary: machine_cfg[:primary] do |machine|
8
11
  machine.vm.box = machine_cfg[:box]
@@ -12,6 +15,8 @@ module VagrantPlugins
12
15
  vb.customize ['modifyvm', :id, '--memory', machine_cfg['memory'] ||= 1024]
13
16
  vb.customize ['modifyvm', :id, '--cpus', machine_cfg['cpus'] ||= 1]
14
17
  vb.customize ['modifyvm', :id, '--cpuexecutioncap', machine_cfg['cpucap'] ||= 100]
18
+ vb.customize ['modifyvm', :id, '--natdnshostresolver1', 'on']
19
+ vb.customize ['modifyvm', :id, '--natnet1', machine_cfg['natnet'] ||= '192.168.88.0/24']
15
20
  end
16
21
 
17
22
  machine_cfg[:networks].each do |net|
@@ -24,6 +29,7 @@ module VagrantPlugins
24
29
  machine.vm.provision provision[:type] do |p|
25
30
  if provision[:type] == 'shell'
26
31
  p.path = provision[:path]
32
+ p.args = provision[:args]
27
33
  p.privileged = provision[:privileged] ||= true
28
34
  elsif provision[:type] == 'file'
29
35
  p.source = provision[:source]
@@ -37,7 +43,7 @@ module VagrantPlugins
37
43
  end
38
44
 
39
45
  machine_cfg[:folders].each do |folder|
40
- machine.vm.synced_folder folder[:host], folder[:guest]
46
+ machine.vm.synced_folder folder[:host], folder[:guest], disabled: folder[:disabled]
41
47
  end
42
48
 
43
49
  if Vagrant.has_plugin?('vagrant-group')
@@ -9,18 +9,31 @@ module VagrantPlugins
9
9
  @vars = vars
10
10
  end
11
11
 
12
-
12
+
13
13
  def replace_vars(value)
14
- if value
15
- value = value.dup()
16
-
17
- @vars.each do |key, val|
18
- pattern = '%' + key + '%'
19
- value.gsub! pattern, val
14
+ if value.kind_of?(Hash)
15
+ result = {}
16
+ value.each do |key, val|
17
+ result[key] = self.replace_vars(val)
18
+ end
19
+ elsif value.kind_of?(Array)
20
+ result = value.map do |val|
21
+ self.replace_vars(val)
22
+ end
23
+ elsif value.kind_of?(String)
24
+ result = value.dup
25
+
26
+ @vars.each do |k, v|
27
+ pattern = '%' + k + '%'
28
+ result.gsub! pattern, v
20
29
  end
30
+ elsif !value.respond_to?(:duplicable) or !value.duplicable?
31
+ result = value
32
+ else
33
+ result = value.dup
21
34
  end
22
-
23
- return value
35
+
36
+ return result
24
37
  end
25
38
 
26
39
 
@@ -32,10 +45,22 @@ module VagrantPlugins
32
45
  :memory => machine['memory'],
33
46
  :cpus => machine['cpus'],
34
47
  :cpucap => machine['cpucap'],
35
- :primary => machine['primary'] ||= false,
48
+ :primary => self.coalesce(machine['primary'], false),
49
+ :natnet => machine['natnet'],
36
50
  :networks => [],
37
51
  :provision => [],
38
- :folders => [],
52
+ :folders => [
53
+ {
54
+ :host => '.',
55
+ :guest => '/vagrant',
56
+ :disabled => true,
57
+ },
58
+ {
59
+ :host => '%project.host%',
60
+ :guest => '%project.guest%',
61
+ :disabled => false,
62
+ }
63
+ ],
39
64
  :groups => [],
40
65
  }
41
66
  end
@@ -43,10 +68,10 @@ module VagrantPlugins
43
68
 
44
69
  def parse_net(net)
45
70
  return {
46
- :net => net['net'] || DEFAULT_NET,
71
+ :net => self.coalesce(net['net'], DEFAULT_NET),
47
72
  :type => net['type'],
48
73
  :ip => net['ip'],
49
- :mask => net['mask'] || net['netmask'] || DEFAULT_NETMASK,
74
+ :mask => self.coalesce(net['mask'], net['netmask'], DEFAULT_NETMASK),
50
75
  }
51
76
  end
52
77
 
@@ -54,11 +79,12 @@ module VagrantPlugins
54
79
  def parse_provision(prv)
55
80
  return {
56
81
  :type => prv['type'],
57
- :source => self.replace_vars(prv['source']),
82
+ :source => prv['source'],
58
83
  :destination => prv['destination'],
59
- :path => self.replace_vars(prv['path']),
60
- :module_path => self.replace_vars(prv['module_path']),
61
- :manifests_path => self.replace_vars(prv['manifests_path']),
84
+ :path => prv['path'],
85
+ :args => prv['args'],
86
+ :module_path => prv['module_path'],
87
+ :manifests_path => prv['manifests_path'],
62
88
  :manifest_file => prv['manifest_file'],
63
89
  }
64
90
  end
@@ -66,8 +92,9 @@ module VagrantPlugins
66
92
 
67
93
  def parse_folder(folder)
68
94
  return {
69
- :host => self.replace_vars(folder['host']),
95
+ :host => folder['host'],
70
96
  :guest => folder['guest'],
97
+ :disabled => self.coalesce(folder['disabled'], false),
71
98
  }
72
99
  end
73
100
 
@@ -99,7 +126,15 @@ module VagrantPlugins
99
126
  config[:machines] << item
100
127
  end
101
128
 
102
- return config
129
+ return self.replace_vars(config)
130
+ end
131
+
132
+
133
+ def coalesce(*args)
134
+ args.each do |val|
135
+ next if val.nil?
136
+ return val
137
+ end
103
138
  end
104
139
 
105
140
  end
@@ -18,7 +18,8 @@ module VagrantPlugins
18
18
  yaml = YAML::load(File.read(fname))
19
19
 
20
20
  vars = {
21
- 'project.path' => File.dirname(fname),
21
+ 'project.host' => File.dirname(fname),
22
+ 'project.guest' => '/dotvm/project',
22
23
  }
23
24
 
24
25
  ENV.each_pair do |name, value|
@@ -1,5 +1,5 @@
1
1
  module VagrantPlugins
2
2
  module Dotvm
3
- VERSION = "0.7.0"
3
+ VERSION = "0.8.0"
4
4
  end
5
5
  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.7.0
4
+ version: 0.8.0
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-07-07 00:00:00.000000000 Z
11
+ date: 2015-07-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler