vagrant-invade 0.0.1 → 0.2.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.
Files changed (89) hide show
  1. checksums.yaml +4 -4
  2. data/.gitattributes +17 -0
  3. data/.gitignore +4 -0
  4. data/Gemfile +10 -0
  5. data/Gemfile.lock +106 -0
  6. data/LICENSE +339 -0
  7. data/README.md +4 -0
  8. data/Rakefile +3 -0
  9. data/images/logo-128.png +0 -0
  10. data/images/logo-256.png +0 -0
  11. data/images/logo-512.png +0 -0
  12. data/invade.yml.dist +56 -0
  13. data/lib/vagrant-invade/action/config.rb +73 -0
  14. data/lib/vagrant-invade/action/create.rb +97 -0
  15. data/lib/vagrant-invade/action/generate.rb +95 -0
  16. data/lib/vagrant-invade/action/validate.rb +156 -0
  17. data/lib/vagrant-invade/action.rb +34 -0
  18. data/lib/vagrant-invade/builder/definition.rb +43 -0
  19. data/lib/vagrant-invade/builder/network/forwarded_port.rb +47 -0
  20. data/lib/vagrant-invade/builder/network/private_network.rb +41 -0
  21. data/lib/vagrant-invade/builder/network/public_network.rb +43 -0
  22. data/lib/vagrant-invade/builder/network.rb +13 -0
  23. data/lib/vagrant-invade/builder/provider/virtualbox.rb +47 -0
  24. data/lib/vagrant-invade/builder/provider/vmware.rb +44 -0
  25. data/lib/vagrant-invade/builder/provider.rb +12 -0
  26. data/lib/vagrant-invade/builder/provision/puppet.rb +47 -0
  27. data/lib/vagrant-invade/builder/provision/shell.rb +45 -0
  28. data/lib/vagrant-invade/builder/provision/shell_inline.rb +45 -0
  29. data/lib/vagrant-invade/builder/provision.rb +12 -0
  30. data/lib/vagrant-invade/builder/synced_folder/nfs.rb +48 -0
  31. data/lib/vagrant-invade/builder/synced_folder/virtualbox.rb +48 -0
  32. data/lib/vagrant-invade/builder/synced_folder.rb +12 -0
  33. data/lib/vagrant-invade/builder/vagrantfile.rb +35 -0
  34. data/lib/vagrant-invade/builder/vm.rb +41 -0
  35. data/lib/vagrant-invade/builder.rb +17 -0
  36. data/lib/vagrant-invade/command/base.rb +19 -0
  37. data/lib/vagrant-invade/command/build.rb +37 -0
  38. data/lib/vagrant-invade/command/root.rb +73 -0
  39. data/lib/vagrant-invade/command/validate.rb +37 -0
  40. data/lib/vagrant-invade/generator/definition.rb +25 -0
  41. data/lib/vagrant-invade/generator/section/network.rb +38 -0
  42. data/lib/vagrant-invade/generator/section/plugin.rb +0 -0
  43. data/lib/vagrant-invade/generator/section/provider.rb +36 -0
  44. data/lib/vagrant-invade/generator/section/provision.rb +38 -0
  45. data/lib/vagrant-invade/generator/section/synced_folder.rb +36 -0
  46. data/lib/vagrant-invade/generator/section/vm.rb +27 -0
  47. data/lib/vagrant-invade/generator/section.rb +15 -0
  48. data/lib/vagrant-invade/generator/vagrantfile.rb +24 -0
  49. data/lib/vagrant-invade/generator.rb +11 -0
  50. data/lib/vagrant-invade/plugin.rb +28 -0
  51. data/lib/vagrant-invade/template/definition.erb +19 -0
  52. data/lib/vagrant-invade/template/network/forwarded_port.erb +8 -0
  53. data/lib/vagrant-invade/template/network/private_network.erb +1 -0
  54. data/lib/vagrant-invade/template/network/public_network.erb +5 -0
  55. data/lib/vagrant-invade/template/provider/virtualbox.erb +11 -0
  56. data/lib/vagrant-invade/template/provider/vmware.erb +5 -0
  57. data/lib/vagrant-invade/template/provision/puppet.erb +0 -0
  58. data/lib/vagrant-invade/template/provision/shell.erb +2 -0
  59. data/lib/vagrant-invade/template/provision/shell_inline.erb +2 -0
  60. data/lib/vagrant-invade/template/synced_folder/nfs.erb +12 -0
  61. data/lib/vagrant-invade/template/synced_folder/virtualbox.erb +1 -0
  62. data/lib/vagrant-invade/template/v2.erb +9 -0
  63. data/lib/vagrant-invade/template/vm/vm.erb +7 -0
  64. data/lib/vagrant-invade/validator/invade.rb +39 -0
  65. data/lib/vagrant-invade/validator/network/forwarded_port.rb +68 -0
  66. data/lib/vagrant-invade/validator/network/private_network.rb +44 -0
  67. data/lib/vagrant-invade/validator/network/public_network.rb +56 -0
  68. data/lib/vagrant-invade/validator/network.rb +13 -0
  69. data/lib/vagrant-invade/validator/plugin/hostmanager.rb +57 -0
  70. data/lib/vagrant-invade/validator/plugin/winnfsd.rb +52 -0
  71. data/lib/vagrant-invade/validator/plugin.rb +12 -0
  72. data/lib/vagrant-invade/validator/provider/virtualbox.rb +46 -0
  73. data/lib/vagrant-invade/validator/provider/vmware.rb +27 -0
  74. data/lib/vagrant-invade/validator/provider.rb +39 -0
  75. data/lib/vagrant-invade/validator/provision/puppet.rb +70 -0
  76. data/lib/vagrant-invade/validator/provision/shell.rb +52 -0
  77. data/lib/vagrant-invade/validator/provision/shell_inline.rb +52 -0
  78. data/lib/vagrant-invade/validator/provision.rb +22 -0
  79. data/lib/vagrant-invade/validator/ssh.rb +38 -0
  80. data/lib/vagrant-invade/validator/synced_folder/nfs.rb +46 -0
  81. data/lib/vagrant-invade/validator/synced_folder/vb.rb +52 -0
  82. data/lib/vagrant-invade/validator/synced_folder.rb +36 -0
  83. data/lib/vagrant-invade/validator/vm.rb +45 -0
  84. data/lib/vagrant-invade/validator.rb +113 -0
  85. data/lib/vagrant-invade/version.rb +5 -0
  86. data/lib/vagrant-invade.rb +41 -0
  87. data/pkg/vagrant-invade-0.0.1.gem +0 -0
  88. data/vagrant-invade.gemspec +17 -0
  89. metadata +94 -7
@@ -0,0 +1,39 @@
1
+ module VagrantPlugins
2
+ module Invade
3
+ module Validator
4
+ module Provider
5
+
6
+ autoload :VirtualBox, 'vagrant-invade/validator/provider/virtualbox'
7
+ autoload :VMware, 'vagrant-invade/validator/provider/vmware'
8
+
9
+ DEFAULT = {
10
+ 'name' => nil,
11
+ 'core' => 1,
12
+ 'memory' => 1024
13
+ }
14
+
15
+ def self.validate_base(env, provider)
16
+ return nil unless provider
17
+
18
+ # NAME
19
+ provider['name'] = Validator.validate_string(
20
+ provider['name'], 'name', DEFAULT['name']
21
+ )
22
+
23
+ # CORE
24
+ provider['cores'] = Validator.validate_integer(
25
+ provider['cores'], 'cores', DEFAULT['cores']
26
+ )
27
+
28
+ # MEMORY
29
+ provider['memory'] = Validator.validate_integer(
30
+ provider['memory'], 'memory', DEFAULT['memory']
31
+ )
32
+
33
+ provider
34
+ end
35
+
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,70 @@
1
+ module VagrantPlugins
2
+ module Invade
3
+ module Validator
4
+ module Provision
5
+
6
+ class Puppet
7
+
8
+ attr_accessor :env
9
+ attr_accessor :puppet
10
+
11
+ DEFAULT = {
12
+ 'folder' => './puppet',
13
+ 'modules' => 'modules',
14
+ 'manifests' => 'manifests',
15
+ 'manifest_file' => 'init.pp',
16
+ 'hiera_config_path' => nil,
17
+ 'facter' => []
18
+ }
19
+
20
+ def initialize(env, puppet)
21
+ @env = env
22
+ @puppet = Provision.validate_base(env, puppet)
23
+ end
24
+
25
+ def validate
26
+ return nil unless @puppet
27
+
28
+ # FOLDER
29
+ @puppet['folder'] = Validator.validate_string(
30
+ @puppet['folder'], 'folder', DEFAULT['folder']
31
+ )
32
+
33
+ # MODULES PATH
34
+ @puppet['modules_path'] = Validator.validate_string(
35
+ @puppet['modules_path'], 'modules_path', DEFAULT['modules_path']
36
+ )
37
+
38
+ # MANIFESTS PATH
39
+ @puppet['manifests_path'] = Validator.validate_string(
40
+ @puppet['manifests_path'], 'manifests_path', DEFAULT['manifests_path']
41
+ )
42
+
43
+ # MANIFEST FILE
44
+ @puppet['manifest_file'] = Validator.validate_string(
45
+ @puppet['manifest_file'], 'manifest_file', DEFAULT['manifest_file']
46
+ )
47
+
48
+ # HIERA CONFIG PATH
49
+ @puppet['hiera_config_path'] = Validator.validate_string(
50
+ @puppet['hiera_config_path'], 'hiera_config_path', DEFAULT['hiera_config_path']
51
+ )
52
+
53
+ # FACTER
54
+ @puppet['facter'] = Validator.validate_array(
55
+ @puppet['facter'], 'facter', DEFAULT['facter']
56
+ )
57
+
58
+ @puppet
59
+ end
60
+
61
+ def self.default(params)
62
+ @folder = params[:folder]
63
+ @modules_path = params[:modules_path]
64
+ @manifests_path = params[:manifests_path]
65
+ end
66
+ end
67
+ end
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,52 @@
1
+ module VagrantPlugins
2
+ module Invade
3
+ module Validator
4
+ module Provision
5
+
6
+ class Shell
7
+
8
+ attr_accessor :env
9
+ attr_accessor :shell
10
+
11
+ DEFAULT = {
12
+ 'name' => 'invade_shell',
13
+ 'path' => nil,
14
+ 'binary' => nil, # Vagrant default is true
15
+ 'privileged' => nil # Vagrant default is true
16
+ }
17
+
18
+ def initialize(env, shell)
19
+ @env = env
20
+ @shell = Provision.validate_base(env, shell)
21
+ end
22
+
23
+ def validate
24
+ return nil unless @shell
25
+
26
+ # NAME
27
+ @shell['name'] = Validator.validate_string(
28
+ @shell['name'], 'name', DEFAULT['name']
29
+ )
30
+
31
+ # PATH (path to shell script or remote address to script file)
32
+ @shell['path'] = Validator.validate_string(
33
+ @shell['path'], 'path', DEFAULT['path']
34
+ )
35
+
36
+ # BINARY (replace windows newline endings with unix line endings)
37
+ @shell['binary'] = Validator.validate_boolean(
38
+ @shell['binary'], 'binary', DEFAULT['binary']
39
+ )
40
+
41
+ # PRIVILEGED (run with sudo)
42
+ @shell['privileged'] = Validator.validate_boolean(
43
+ @shell['privileged'], 'privileged', DEFAULT['privileged']
44
+ )
45
+
46
+ @shell
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,52 @@
1
+ module VagrantPlugins
2
+ module Invade
3
+ module Validator
4
+ module Provision
5
+
6
+ class ShellInline
7
+
8
+ attr_accessor :env
9
+ attr_accessor :shell_inline
10
+
11
+ DEFAULT = {
12
+ 'name' => 'invade_shell_inline',
13
+ 'inline' => nil,
14
+ 'binary' => nil, # Vagrant default is true
15
+ 'privileged' => nil # Vagrant default is true
16
+ }
17
+
18
+ def initialize(env, shell_inline)
19
+ @env = env
20
+ @shell_inline = Provision.validate_base(env, shell_inline)
21
+ end
22
+
23
+ def validate
24
+ return nil unless @shell_inline
25
+
26
+ # NAME
27
+ @shell_inline['name'] = Validator.validate_string(
28
+ @shell_inline['name'], 'name', DEFAULT['name']
29
+ )
30
+
31
+ # INLINE SCRIPT
32
+ @shell_inline['inline'] = Validator.validate_string(
33
+ @shell_inline['inline'], 'inline', DEFAULT['inline']
34
+ )
35
+
36
+ # BINARY (replace windows newline endings with unix line endings)
37
+ @shell_inline['binary'] = Validator.validate_boolean(
38
+ @shell_inline['binary'], 'binary', DEFAULT['binary']
39
+ )
40
+
41
+ # PRIVILEGED (run with sudo)
42
+ @shell_inline['privileged'] = Validator.validate_boolean(
43
+ @shell_inline['privileged'], 'privileged', DEFAULT['privileged']
44
+ )
45
+
46
+ @shell_inline
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,22 @@
1
+ module VagrantPlugins
2
+ module Invade
3
+ module Validator
4
+ module Provision
5
+
6
+ autoload :Shell, 'vagrant-invade/validator/provision/shell'
7
+ autoload :ShellInline, 'vagrant-invade/validator/provision/shell_inline'
8
+ autoload :Puppet, 'vagrant-invade/validator/provision/puppet'
9
+ #autoload :Chef, 'vagrant-invade/validator/provision/chef'
10
+ #autoload :Docker, 'vagrant-invade/validator/provision/docker'
11
+
12
+ DEFAULT = {}
13
+
14
+ def self.validate_base(env, provision)
15
+ return nil unless provision
16
+
17
+ provision
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,38 @@
1
+ module VagrantPlugins
2
+ module Invade
3
+ module Validator
4
+
5
+ class SSH
6
+
7
+ attr_accessor :env, :ssh
8
+
9
+ DEFAULT = {
10
+ 'enabled' => nil,
11
+ 'path' => '~/.ssh/'
12
+ }
13
+
14
+ def initialize(env, ssh)
15
+ @env = env
16
+ @ssh = ssh
17
+ end
18
+
19
+ def validate
20
+ return DEFAULT unless @ssh
21
+
22
+ # ENABLED
23
+ @ssh['enabled'] = Validator.validate_boolean(
24
+ @ssh['enabled'], 'enabled', DEFAULT['enabled']
25
+ )
26
+
27
+ # PATH TO HOST SSH FOLDER
28
+ @ssh['path'] = Validator.validate_string(
29
+ @ssh['path'], 'path', DEFAULT['path']
30
+ )
31
+
32
+ @ssh
33
+ end
34
+
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,46 @@
1
+ module VagrantPlugins
2
+ module Invade
3
+ module Validator
4
+ module SyncedFolder
5
+
6
+ class NFS
7
+
8
+ attr_accessor :env
9
+ attr_accessor :nfs
10
+
11
+ DEFAULT = {
12
+ 'uid' => nil,
13
+ 'gid' => nil,
14
+ 'mount_options' => ['nolock']
15
+ }
16
+
17
+ def initialize(env, nfs)
18
+ @env = env
19
+ @nfs = SyncedFolder.validate_base(env, nfs)
20
+ end
21
+
22
+ def validate
23
+ return nil unless @nfs
24
+
25
+ # USER ID
26
+ @nfs['uid'] = Validator.validate_integer(
27
+ @nfs['uid'], 'uid', DEFAULT['uid']
28
+ )
29
+
30
+ # GROUP ID
31
+ @nfs['gid'] = Validator.validate_integer(
32
+ @nfs['gid'], 'gid', DEFAULT['gid']
33
+ )
34
+
35
+ # NFS OPTIONS
36
+ @nfs['mount_options'] = Validator.validate_array(
37
+ @nfs['mount_options'], 'mount_options', DEFAULT['mount_options']
38
+ )
39
+
40
+ @nfs
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,52 @@
1
+ module VagrantPlugins
2
+ module Invade
3
+ module Validator
4
+ module SyncedFolder
5
+
6
+ class Vb
7
+
8
+ attr_accessor :env
9
+ attr_accessor :vb
10
+
11
+ DEFAULT = {
12
+ 'owner' => 'vagrant',
13
+ 'group' => 'root',
14
+ 'dmode' => 755,
15
+ 'fmode' => 664
16
+ }
17
+
18
+ def initialize(env, vb)
19
+ @env = env
20
+ @vb = SyncedFolder.validate_base(env, vb)
21
+ end
22
+
23
+ def validate
24
+ return false unless @vb
25
+
26
+ # OWNER
27
+ @vb['owner'] = Validator.validate(
28
+ @vb['owner'], 'owner', 'string', DEFAULT['owner']
29
+ )
30
+
31
+ # GROUP
32
+ @vb['group'] = Validator.validate(
33
+ @vb['group'], 'group', 'string', DEFAULT['group']
34
+ )
35
+
36
+ # DMODE (Directory Permission Mode)
37
+ @vb['dmode'] = Validator.validat(
38
+ @vb['dmode'], 'dmode', 'integer', DEFAULT['dmode']
39
+ )
40
+
41
+ # FMODE (File Permission Mode)
42
+ @vb['fmode'] = Validator.validate(
43
+ @vb['fmode'], 'fmode', 'integer', DEFAULT['fmode']
44
+ )
45
+
46
+ @vb
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,36 @@
1
+ module VagrantPlugins
2
+ module Invade
3
+ module Validator
4
+ module SyncedFolder
5
+
6
+ autoload :VB, 'vagrant-invade/validator/synced_folder/vb'
7
+ autoload :NFS, 'vagrant-invade/validator/synced_folder/nfs'
8
+
9
+ DEFAULT = {
10
+ 'enabled' => nil,
11
+ 'source' => '.',
12
+ 'path' => '/www'
13
+ }
14
+
15
+ def self.validate_base(env, shared_folder)
16
+ return nil unless shared_folder
17
+
18
+ shared_folder['enabled'] = Validator.validate_boolean(
19
+ shared_folder['enabled'], 'enabled', DEFAULT['enabled']
20
+ )
21
+
22
+ shared_folder['source'] = Validator.validate_string(
23
+ shared_folder['source'], 'source', DEFAULT['source']
24
+ )
25
+
26
+ shared_folder['path'] = Validator.validate_string(
27
+ shared_folder['path'], 'path', DEFAULT['path']
28
+ )
29
+
30
+ shared_folder
31
+ end
32
+
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,45 @@
1
+ module VagrantPlugins
2
+ module Invade
3
+ module Validator
4
+
5
+ class VM
6
+
7
+ attr_accessor :env
8
+ attr_accessor :vm
9
+
10
+ DEFAULT = {
11
+ 'box' => 'invade/default',
12
+ 'url' => nil,
13
+ 'hostname' => 'invade.vm'
14
+ }
15
+
16
+ def initialize(env, vm)
17
+ @env = env
18
+ @vm = vm
19
+ end
20
+
21
+ def validate
22
+ return DEFAULT unless @vm
23
+
24
+ # BOX NAME (usually repository name of vm on Atlas (http://atlas.hashicorp.com))
25
+ @vm['box'] = Validator.validate_string(
26
+ @vm['box'], 'box', DEFAULT['box']
27
+ )
28
+
29
+ # BOX URL
30
+ @vm['url'] = Validator.validate_string(
31
+ @vm['url'], 'url', DEFAULT['url']
32
+ )
33
+
34
+ # BOX URL
35
+ @vm['hostname'] = Validator.validate_string(
36
+ @vm['hostname'], 'hostname', DEFAULT['hostname']
37
+ )
38
+
39
+ @vm
40
+ end
41
+
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,113 @@
1
+ module VagrantPlugins
2
+ module Invade
3
+ module Validator
4
+
5
+ autoload :Invade, 'vagrant-invade/validator/invade'
6
+ autoload :VM, 'vagrant-invade/validator/vm'
7
+ autoload :Network, 'vagrant-invade/validator/network'
8
+ autoload :Provider, 'vagrant-invade/validator/provider'
9
+ autoload :Provision, 'vagrant-invade/validator/provision'
10
+ autoload :SyncedFolder, 'vagrant-invade/validator/synced_folder'
11
+ autoload :SSH, 'vagrant-invade/validator/ssh'
12
+ autoload :Plugin, 'vagrant-invade/validator/plugin'
13
+
14
+ VALIDATION_ERRORS = 0
15
+
16
+ attr_accessor :env
17
+ attr_accessor :invade
18
+
19
+ @env = nil
20
+ @invade = nil
21
+
22
+ def self.set_env(env)
23
+ @env = env
24
+ end
25
+
26
+ def self.set_invade(env)
27
+ @invade = env[:invade]['invade']
28
+ end
29
+
30
+ # Validates to BOOLEAN and returns the value at success or a default if not
31
+ def self.validate_boolean(value, name, default)
32
+
33
+ invade = @env[:invade]['invade']
34
+
35
+ if [true, false].include? value
36
+ @env[:ui].success("\t#{name} => #{value}") unless @env[:invade_command_quiet]
37
+ elsif value === nil
38
+ @env[:ui].warn("\t#{name} not set. Use Vagrant default.") unless @env[:invade_command_quiet]
39
+ return default
40
+ else
41
+ @env[:ui].warn("\tWarning: #{name} => #{value} is not a boolean. Set '#{name}' to default value #{default.to_s.upcase}.")
42
+ self.VALIDATION_ERRORS = self.VALIDATION_ERRORS + 1
43
+ return default
44
+ end
45
+
46
+ value
47
+ end
48
+
49
+ # Validates to STRING and returns the value at success or a default if not
50
+ def self.validate_string(value, name, default)
51
+
52
+ invade = @env[:invade]['invade']
53
+
54
+ if value.is_a? String
55
+ @env[:ui].success("\t#{name} => '#{value}'") unless @env[:invade_command_quiet]
56
+ elsif value === nil
57
+ @env[:ui].warn("\t#{name} not set. Use Vagrant default.") unless @env[:invade_command_quiet]
58
+ return default
59
+ elsif value === ''
60
+ @env[:ui].warn("\tEmpty string is not valid. Set '#{name}' => '#{default}'.") unless @env[:invade_command_quiet]
61
+ return default
62
+ else
63
+ @env[:ui].warn("\tWarning: '#{value}' is not a string. Set to '#{name}' to default value '#{default}'.")
64
+ self.VALIDATION_ERRORS = self.VALIDATION_ERRORS + 1
65
+ return default
66
+ end
67
+
68
+ value
69
+ end
70
+
71
+ # Validates to INT and returns the value at success or a default if not
72
+ def self.validate_integer(value, name, default)
73
+
74
+ invade = @env[:invade]['invade']
75
+
76
+ if value.is_a? Integer or is_number(value)
77
+ @env[:ui].success("\t#{name} => #{value}") unless @env[:invade_command_quiet]
78
+ elsif value === nil
79
+ @env[:ui].warn("\t#{name} not set. Use Vagrant default.") unless @env[:invade_command_quiet]
80
+ return default
81
+ else
82
+ @env[:ui].warn("\tWarning: '#{value}' is not an integer. Set '#{name}' to default value #{default}.")
83
+ self.VALIDATION_ERRORS = self.VALIDATION_ERRORS + 1
84
+ return default
85
+ end
86
+
87
+ value
88
+ end
89
+
90
+ # Validates to ARRAY and returns the value at success or a default if not
91
+ def self.validate_array(value, name, default)
92
+
93
+ if value.is_a? Array
94
+ @env[:ui].success("\t#{name} => #{value}") unless @env[:invade_command_quiet]
95
+ elsif value === nil
96
+ @env[:ui].warn("\t#{name} not set. Use Vagrant default.") unless @env[:invade_command_quiet]
97
+ return default
98
+ else
99
+ @env[:ui].warn("\tWarning: '#{value}' is not an array. Set '#{name}' to default value #{default}.")
100
+ self.VALIDATION_ERRORS = self.VALIDATION_ERRORS + 1
101
+ return default
102
+ end
103
+
104
+ value
105
+ end
106
+
107
+ def self.is_number(value)
108
+ value.to_f.to_s == value.to_s || value.to_i.to_s == value.to_s
109
+ end
110
+
111
+ end
112
+ end
113
+ end
@@ -0,0 +1,5 @@
1
+ module VagrantPlugins
2
+ module Invade
3
+ VERSION = '0.2.0'
4
+ end
5
+ end
@@ -0,0 +1,41 @@
1
+ require 'bundler'
2
+
3
+ begin
4
+ require 'vagrant'
5
+ rescue LoadError
6
+ Bundler.require(:default, :development)
7
+ end
8
+
9
+ require 'vagrant-invade/plugin'
10
+
11
+ module VagrantPlugins
12
+ module Invade
13
+
14
+ autoload :Validator, 'vagrant-invade/validator'
15
+ autoload :Builder, 'vagrant-invade/builder'
16
+ autoload :Generator, 'vagrant-invade/generator'
17
+
18
+ def self.get_invade_config
19
+ #Loading Invade configuration settings from file
20
+ @source_root = VagrantPlugins::Invade.source_root
21
+ invade_config_file = "#{@source_root}/invade.yml"
22
+
23
+ if File.exist?(invade_config_file)
24
+ begin
25
+ return YAML.load_file(invade_config_file)
26
+ rescue SyntaxError => e
27
+ @logger.error e
28
+ fail e
29
+ end
30
+ else
31
+ @config_values = nil
32
+ end
33
+
34
+ @config_values
35
+ end
36
+
37
+ def self.source_root
38
+ @source_root ||= Pathname.new(File.expand_path('../../', __FILE__))
39
+ end
40
+ end
41
+ end
Binary file
@@ -0,0 +1,17 @@
1
+ # coding: utf-8
2
+ require File.expand_path('../lib/vagrant-invade/version', __FILE__)
3
+
4
+ Gem::Specification.new do |s|
5
+ s.name = 'vagrant-invade'
6
+ s.version = VagrantPlugins::Invade::VERSION
7
+ s.date = '2015-08-10'
8
+ s.summary = "Create a Vagrantfile with a single YAML configuration file"
9
+ s.description = "InVaDE is a plugin that uses a YAML configuration file to build a Vagrantfile from it."
10
+ s.authors = ["Lennart Stein"]
11
+ s.email = 'frgmt@posteo.de'
12
+ s.files = `git ls-files`.split($\)
13
+ s.executables = s.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
14
+ s.require_paths = ['lib']
15
+ s.homepage = 'https://github.com/frgmt/vagrant-invade'
16
+ s.license = 'GNU'
17
+ end