vagrant-hivemind 0.1.5 → 0.1.6

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: 5451a9794ab6ec928dbde47c1a17a16e5a819e10
4
- data.tar.gz: e8aca8487f46a8b534a32a392c891e34b4446fa0
3
+ metadata.gz: 096d7bc5746b1e78bb9df4205c6b6a8bd23d9859
4
+ data.tar.gz: 5396a552c7076e97a436df6807632aa3f60e605f
5
5
  SHA512:
6
- metadata.gz: 69bb48ca9a0a5151f347b00ed3522e3c59b687b90771f7df04d55aec9f3fa10c5665cf231097c019a4d8bbed294d424bd25a8e9cacdbdf7f35c0763d654e508f
7
- data.tar.gz: a3a7407d0d04b7b7beca80934a3ea323b6a0253c8d04896003c56e9c0fb2bb17144f67c4f85b6a90c33de2cce2bc9fa5543338f4b8a76a21df39252c3adaf926
6
+ metadata.gz: 1f984063526bde33b71cf8d9f7e14784cd35ebdbd2c2a68ed35f59da838fff9162f327899c4aa73eb21d0111c39758fc681152afa92a850eaae5c7d890de9ab8
7
+ data.tar.gz: ea4215f9ff49e1497317b27ae4b984c23920bbb12ba1eee489237e6c475c12b1f5dc188f2401fbaa40b71b0a361c1b345fc11beb133203358c66cfae878b91fd
@@ -0,0 +1,71 @@
1
+ require "optparse"
2
+ require "erb"
3
+
4
+ require "vagrant/hivemind/constants"
5
+ require "vagrant/hivemind/util"
6
+ require "vagrant/hivemind/host"
7
+
8
+ module Vagrant
9
+ module Hivemind
10
+ module Command
11
+ class Generate < Vagrant.plugin("2", :command)
12
+ include Vagrant::Hivemind::Constants
13
+ include Vagrant::Hivemind::Util
14
+
15
+ def self.synopsis
16
+ "Generates a Vagrantfile of the Hive"
17
+ end
18
+
19
+ def execute
20
+ options = {}
21
+
22
+ opts = OptionParser.new do |o|
23
+ o.banner = "Usage: vagrant hivemind generate [options]"
24
+ o.separator ""
25
+ o.separator "Options:"
26
+ o.separator ""
27
+
28
+ o.on("-f", "--force", "Overwrite an existing '#{VAGRANT_FILE}' with a new one") do |f|
29
+ options[:force] = f
30
+ end
31
+
32
+ o.on("-d", "--directory DIRECTORY", "Specify the directory where '#{HIVE_FILE}' is located (default: current directory)") do |d|
33
+ options[:directory] = []
34
+ options[:directory] << d
35
+ end
36
+ end.parse!
37
+
38
+ root_path = Path.get_root_path_from_options options
39
+
40
+ unless HiveFile.exist? root_path
41
+ @env.ui.error "There is no Hive file in the working directory."
42
+ return 1
43
+ end
44
+
45
+ hosts = HiveFile.read_from root_path
46
+
47
+ if Vagrant::Hivemind::Util::Vagrantfile.exist? root_path
48
+ if options[:force]
49
+ write_new_vagrant_file hosts, root_path
50
+ @env.ui.info "The Vagrantfile has been overwritten."
51
+ return 0
52
+ else
53
+ @env.ui.error "The Vagrantfile already exists!"
54
+ return 1
55
+ end
56
+ end
57
+
58
+ write_new_vagrant_file hosts, root_path
59
+
60
+ 0
61
+ end
62
+
63
+ private
64
+ def write_new_vagrant_file(hosts, path)
65
+ Vagrant::Hivemind::Util::Vagrantfile.generate_hivemind_vagrantfile @env, hosts, path, true
66
+ end
67
+
68
+ end
69
+ end
70
+ end
71
+ end
@@ -55,6 +55,11 @@ module Vagrant
55
55
  Halt
56
56
  end
57
57
 
58
+ @subcommands.register(:generate) do
59
+ require_relative "generate"
60
+ Generate
61
+ end
62
+
58
63
  end
59
64
 
60
65
  def execute
@@ -4,6 +4,7 @@ module Vagrant
4
4
  HIVE_FILE = "hive.yml"
5
5
  ANSIBLE_HOSTS_FILE = "ansible.hosts"
6
6
  SYSTEM_HOSTS_FILE = "system.hosts"
7
+ VAGRANT_FILE = "Vagrantfile"
7
8
 
8
9
  BOX_TYPES = {
9
10
  :server => { name: "Server", box_id: "napramirez/ubuntu-14.04-server-amd64", is_gui: false },
@@ -141,7 +141,7 @@ module Vagrant
141
141
  end
142
142
 
143
143
  class Vagrantfile
144
- def self.generate_hivemind_vagrantfile(env, hosts, path = Pathname.new(Dir.pwd))
144
+ def self.generate_hivemind_vagrantfile(env, hosts, path = Pathname.new(Dir.pwd), generate = false)
145
145
  box_types = Vagrant::Hivemind::Constants::BOX_TYPES
146
146
  box_sizes = Vagrant::Hivemind::Constants::BOX_SIZES
147
147
  cache_path = Path.cache_path
@@ -157,19 +157,36 @@ module Vagrant
157
157
  template = ERB.new template_string
158
158
  template_result = template.result(b)
159
159
 
160
- tf = Tempfile.new("Hivemind_Vagrantfile", path)
161
- tf.write template_result
162
- tf.close
160
+ if generate
161
+ vagrant_file = File.new(Vagrant::Hivemind::Constants::VAGRANT_FILE, "w+")
162
+ else
163
+ vagrant_file = Tempfile.new("Hivemind_Vagrantfile", path)
164
+ end
165
+ vagrant_file.write template_result
166
+ vagrant_file.close
163
167
 
164
168
  env.define_singleton_method :vagrantfile_name= do |vfn| @vagrantfile_name = vfn end
165
169
  env.define_singleton_method :root_path= do |root_path| @root_path = root_path end
166
170
  env.define_singleton_method :local_data_path= do |local_data_path| @local_data_path = local_data_path end
167
- env.vagrantfile_name = [File.basename(tf)]
171
+ env.vagrantfile_name = [File.basename(vagrant_file)]
168
172
  env.root_path = path
169
173
  env.local_data_path = local_data_path
170
174
 
171
175
  nil
172
176
  end
177
+
178
+ def self.exist?(path = Pathname.new(Dir.pwd))
179
+ File.exist? get_vagrant_file_from_path path
180
+ end
181
+
182
+ private
183
+ def self.get_vagrant_file_from_path(path)
184
+ if File.directory? path
185
+ File.join(path, Vagrant::Hivemind::Constants::VAGRANT_FILE)
186
+ else
187
+ path
188
+ end
189
+ end
173
190
  end
174
191
 
175
192
  class Ansible
@@ -1,5 +1,5 @@
1
1
  module Vagrant
2
2
  module Hivemind
3
- VERSION = "0.1.5"
3
+ VERSION = "0.1.6"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vagrant-hivemind
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nap Ramirez
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-11-10 00:00:00.000000000 Z
11
+ date: 2016-01-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -74,6 +74,7 @@ files:
74
74
  - keys/id_rsa.pub
75
75
  - lib/vagrant/hivemind.rb
76
76
  - lib/vagrant/hivemind/commands/desc.rb
77
+ - lib/vagrant/hivemind/commands/generate.rb
77
78
  - lib/vagrant/hivemind/commands/halt.rb
78
79
  - lib/vagrant/hivemind/commands/init.rb
79
80
  - lib/vagrant/hivemind/commands/kill.rb