vbuilder 0.1.2 → 0.1.3
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 +4 -4
- data/Gemfile +2 -0
- data/lib/helper.rb +67 -0
- data/lib/vbuilder/generator.rb +14 -18
- data/lib/vbuilder/generator/attributes/aws.yaml +8 -7
- data/lib/vbuilder/generator/attributes/virtualbox.yaml +14 -0
- data/lib/vbuilder/generator/options.rb +23 -3
- data/lib/vbuilder/generator/provider.rb +12 -0
- data/lib/vbuilder/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e7cb201309103e4e38714ff8e06ab7dea0c80af4
|
4
|
+
data.tar.gz: a42ee5e45c572d8e94ce1532f8053590574a6d14
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9b4040f6c70c0f480f32eb2fc9762a76d1fd23f3e7c0f44c52e250d546202d3152990fc0dd751a3a4c8d9ee7761f9ba06181c17b3cc692cea44e36ad6a5b8e76
|
7
|
+
data.tar.gz: 540d3353eb8955a185ceaf127ccc99d6ea3811aeaa08ad3189da813698da9577c05410bc68398e478c548ffeb7ce629ccecf3b0627ad918eb1d52bd636132a0c
|
data/Gemfile
CHANGED
data/lib/helper.rb
CHANGED
@@ -0,0 +1,67 @@
|
|
1
|
+
require 'helper'
|
2
|
+
require 'highline'
|
3
|
+
|
4
|
+
class Vbuilder
|
5
|
+
class Helper
|
6
|
+
module Utility
|
7
|
+
|
8
|
+
def self.get_provider_list
|
9
|
+
attributes_dir = "../vbuilder/generator/attributes"
|
10
|
+
attributes_dir = File.expand_path(attributes_dir, __FILE__)
|
11
|
+
|
12
|
+
provider_files = Dir.entries(attributes_dir)
|
13
|
+
provider_files = provider_files - ["..", "."]
|
14
|
+
|
15
|
+
# return an array of all the providers
|
16
|
+
provider_files.map { |item| item.gsub(".yaml", "") }
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.get_provider_attrs(provider)
|
20
|
+
begin
|
21
|
+
attrs_file = "../vbuilder/generator/attributes/#{provider}.yaml"
|
22
|
+
attrs_file = File.expand_path(attrs_file, __FILE__)
|
23
|
+
|
24
|
+
YAML.load(File.read(attrs_file))
|
25
|
+
rescue
|
26
|
+
# rescue and print out cause
|
27
|
+
puts "Provider '#{provider}' not valid. Vagrantfile will not be generated."
|
28
|
+
puts "Valid providers:"
|
29
|
+
self.get_provider_list.each { |item| puts " - #{item}" }
|
30
|
+
exit 1
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def self.get_template_file
|
35
|
+
template_file = "../vbuilder/templates/master.erb"
|
36
|
+
template_file = File.expand_path(template_file, __FILE__)
|
37
|
+
|
38
|
+
File.read(template_file)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
module Cli
|
43
|
+
|
44
|
+
def self.start_cli(attributes)
|
45
|
+
cli = HighLine.new
|
46
|
+
attributes.each do |key, value|
|
47
|
+
if key != "dependencies" && key != "provider"
|
48
|
+
case attributes[key]
|
49
|
+
when Array
|
50
|
+
attributes[key] = cli.ask("#{key} - (comma sep list) :", lambda { |val|val.split(/,\s*/) })
|
51
|
+
when String
|
52
|
+
attributes[key] = cli.ask("#{key}: ")
|
53
|
+
when Fixnum
|
54
|
+
attributes[key] = cli.ask("#{key}: ", Integer)
|
55
|
+
when Float
|
56
|
+
attributes[key] = cli.ask("#{key}: ", Float)
|
57
|
+
else
|
58
|
+
puts attributes[key].class
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
attributes
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
data/lib/vbuilder/generator.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'vbuilder/version'
|
2
|
+
require 'helper'
|
2
3
|
require 'pathname'
|
3
4
|
require 'yaml'
|
4
5
|
require 'erb'
|
@@ -17,10 +18,21 @@ class Vbuilder
|
|
17
18
|
end
|
18
19
|
|
19
20
|
def run
|
20
|
-
|
21
|
+
# get provider attributes from correct yaml file
|
22
|
+
provider_attrs = Vbuilder::Helper::Utility.get_provider_attrs(@provider)
|
23
|
+
|
24
|
+
if @options[:interactive]
|
25
|
+
provider_attrs = Vbuilder::Helper::Cli.start_cli(provider_attrs)
|
26
|
+
end
|
27
|
+
|
28
|
+
# create new provider based on provider attributes
|
21
29
|
provider = Vbuilder::Generator::Provider.new(provider_attrs)
|
22
30
|
|
23
|
-
|
31
|
+
# check provider dependencies before moving on
|
32
|
+
# gem execution will exit if unmet
|
33
|
+
provider.check_dependencies
|
34
|
+
|
35
|
+
template_file = Vbuilder::Helper::Utility.get_template_file
|
24
36
|
|
25
37
|
renderer = ERB.new(template_file).result(provider.get_binding)
|
26
38
|
|
@@ -28,21 +40,5 @@ class Vbuilder
|
|
28
40
|
f.write(renderer)
|
29
41
|
end
|
30
42
|
end
|
31
|
-
|
32
|
-
# Helper functions
|
33
|
-
# TODO: Move these functions to lib/helpers.rb
|
34
|
-
def get_provider_attrs
|
35
|
-
attrs_file = "../generator/attributes/#{@provider}.yaml"
|
36
|
-
attrs_file = File.expand_path(attrs_file, __FILE__)
|
37
|
-
|
38
|
-
YAML.load(File.read(attrs_file))
|
39
|
-
end
|
40
|
-
|
41
|
-
def get_template_file
|
42
|
-
template_file = "../templates/master.erb"
|
43
|
-
template_file = File.expand_path(template_file, __FILE__)
|
44
|
-
|
45
|
-
File.read(template_file)
|
46
|
-
end
|
47
43
|
end
|
48
44
|
end
|
@@ -1,13 +1,14 @@
|
|
1
1
|
# YAML Containing attributes to build basic Vagrantfile with aws as provider
|
2
2
|
|
3
|
+
dependencies: ["vagrant-aws"]
|
3
4
|
provider: aws
|
4
|
-
access_key_id:
|
5
|
-
secret_access_key:
|
6
|
-
session_token:
|
7
|
-
keypair_name:
|
8
|
-
ami:
|
9
|
-
instance_type:
|
5
|
+
access_key_id: ""
|
6
|
+
secret_access_key: ""
|
7
|
+
session_token: ""
|
8
|
+
keypair_name: ""
|
9
|
+
ami: ""
|
10
|
+
instance_type: ""
|
10
11
|
security_groups: []
|
11
|
-
iam_instance_profile_name:
|
12
|
+
iam_instance_profile_name: ""
|
12
13
|
ebs_volume_size: 8
|
13
14
|
tags: []
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# YAML Containing attributes to build basic Vagrantfile with aws as provider
|
2
|
+
|
3
|
+
dependencies: ["vagrant-aws"]
|
4
|
+
provider: aws
|
5
|
+
access_key_id:
|
6
|
+
secret_access_key:
|
7
|
+
session_token:
|
8
|
+
keypair_name:
|
9
|
+
ami:
|
10
|
+
instance_type:
|
11
|
+
security_groups: []
|
12
|
+
iam_instance_profile_name:
|
13
|
+
ebs_volume_size: 8
|
14
|
+
tags: []
|
@@ -1,3 +1,6 @@
|
|
1
|
+
require 'optparse'
|
2
|
+
require 'helper'
|
3
|
+
|
1
4
|
class Vbuilder
|
2
5
|
class Generator
|
3
6
|
class Options < Hash
|
@@ -8,16 +11,33 @@ class Vbuilder
|
|
8
11
|
|
9
12
|
@orig_args = args.clone
|
10
13
|
|
11
|
-
require 'optparse'
|
12
14
|
@opts = OptionParser.new do |o|
|
13
15
|
o.banner = "Usage: #{File.basename($0)} [options]\ne.g. #{File.basename($0)} --provider aws"
|
14
16
|
|
17
|
+
o.on('-v', '--version', 'show ruby gem version') do |ver|
|
18
|
+
puts "Version: #{Vbuilder::Version.version}"
|
19
|
+
exit
|
20
|
+
end
|
21
|
+
|
22
|
+
o.on('-P', '--providers', 'see the list of valid providers') do
|
23
|
+
puts "Valid providers:"
|
24
|
+
Vbuilder::Helper::Utility.get_provider_list.each do |provider|
|
25
|
+
puts " - #{provider}"
|
26
|
+
end
|
27
|
+
|
28
|
+
exit
|
29
|
+
end
|
30
|
+
|
15
31
|
o.on('-i', '--interactive', 'choose to interactively fill these config attributes out on the CLI') do
|
16
32
|
self[:interactive] = true
|
17
33
|
end
|
18
34
|
|
19
|
-
o.on('--provider [PROVIDER]', 'specify the provider to use in the building of your Vagrantfile') do |provider|
|
20
|
-
|
35
|
+
o.on('-p', '--provider [PROVIDER]', 'specify the provider to use in the building of your Vagrantfile') do |provider|
|
36
|
+
unless provider.nil?
|
37
|
+
self[:provider] = provider
|
38
|
+
else
|
39
|
+
self[:invalid_argument] = "please specify a provider"
|
40
|
+
end
|
21
41
|
end
|
22
42
|
|
23
43
|
o.separator ""
|
@@ -19,8 +19,20 @@ class Vbuilder
|
|
19
19
|
file = File.expand_path(template_file, __FILE__)
|
20
20
|
content = File.read(file)
|
21
21
|
t = ERB.new(content)
|
22
|
+
|
22
23
|
t.result(binding)
|
23
24
|
end
|
25
|
+
|
26
|
+
def check_dependencies
|
27
|
+
installed = `vagrant plugin list`
|
28
|
+
@dependencies.each do |dependency|
|
29
|
+
if !installed.include? dependency
|
30
|
+
puts "Unmet dependency"
|
31
|
+
puts "Missing plugin '#{dependency}'"
|
32
|
+
exit 1
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
24
36
|
end
|
25
37
|
end
|
26
38
|
end
|
data/lib/vbuilder/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vbuilder
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ian DesJardins
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-01-
|
11
|
+
date: 2016-01-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -75,6 +75,7 @@ files:
|
|
75
75
|
- lib/vbuilder/generator.rb
|
76
76
|
- lib/vbuilder/generator/application.rb
|
77
77
|
- lib/vbuilder/generator/attributes/aws.yaml
|
78
|
+
- lib/vbuilder/generator/attributes/virtualbox.yaml
|
78
79
|
- lib/vbuilder/generator/options.rb
|
79
80
|
- lib/vbuilder/generator/provider.rb
|
80
81
|
- lib/vbuilder/templates/master.erb
|