vagrant-properties 0.0.1

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 86ad7491ac3019f9ed1b8a977b7e266857ba5c6d
4
+ data.tar.gz: 77831bdd89e4108f0af87c4117881c27843571b7
5
+ SHA512:
6
+ metadata.gz: b9a61baefa32ddbdbc0931bbbd679f25f17870b92f004a87d884263ad1a717827909ca3c2c5438841382660e49a6e330c273e9bad02e35c48df6e994ca0ad5c7
7
+ data.tar.gz: b1929691edc81807343fab77bdd4cc4df9ea007aad7cc4b6fe99cb0db212bf03d8da5576ec59cc56cd06a830409e4c7b816bc133e36b04ea0c717b9e7469bc6a
data/.gitignore ADDED
@@ -0,0 +1,14 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
10
+ *.bundle
11
+ *.so
12
+ *.o
13
+ *.a
14
+ mkmf.log
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in vagrant-properties.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2015 linyows
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,35 @@
1
+ Vagrant::Properties
2
+ ===================
3
+
4
+ Management multiple machines.
5
+
6
+ Installation
7
+ ------------
8
+
9
+ Add this line to your application's Gemfile:
10
+
11
+ ```ruby
12
+ gem 'vagrant-properties'
13
+ ```
14
+
15
+ And then execute:
16
+
17
+ $ bundle
18
+
19
+ Or install it yourself as:
20
+
21
+ $ gem install vagrant-properties
22
+
23
+ Usage
24
+ -----
25
+
26
+ TODO: Write usage instructions here
27
+
28
+ Contributing
29
+ ------------
30
+
31
+ 1. Fork it ( https://github.com/[my-github-username]/vagrant-properties/fork )
32
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
33
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
34
+ 4. Push to the branch (`git push origin my-new-feature`)
35
+ 5. Create a new Pull Request
data/Rakefile ADDED
@@ -0,0 +1,2 @@
1
+ require "bundler/gem_tasks"
2
+
@@ -0,0 +1,12 @@
1
+ require 'vagrant-properties/version'
2
+
3
+ module VagrantPlugins
4
+ module Property
5
+ class Plugin < Vagrant.plugin('2')
6
+ config('properties') do
7
+ require File.expand_path('../vagrant-properties/config', __FILE__)
8
+ Property::Config
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,66 @@
1
+ require 'vagrant'
2
+ require 'yaml'
3
+
4
+ module VagrantPlugins
5
+ module Property
6
+ class Config < Vagrant.plugin('2', :config)
7
+ attr_accessor :properties
8
+
9
+ def initialize
10
+ @properties = self.class.properties
11
+ end
12
+
13
+ class << self
14
+ def properties
15
+ @properties ||= build_properties
16
+ end
17
+
18
+ def build_properties
19
+ load_properties.each do |k, v|
20
+ v['path'] = pull_project(v['repo'])
21
+ write_to_hosts v['ip'], v['hostname']
22
+ end
23
+ end
24
+
25
+ def load_properties
26
+ YAML.load_file('vagrant_properties.yml')
27
+ end
28
+
29
+ def pull_project(repo)
30
+ matched = repo.match(path_matcher)
31
+
32
+ if ghq?
33
+ path = "#{`ghq root`.chop}/#{matched[1..3].join('/')}"
34
+ ghq_get path, repo
35
+ else
36
+ path = "../#{matched[3]}"
37
+ git_clone path, repo
38
+ end
39
+
40
+ path
41
+ end
42
+
43
+ def write_to_hosts(ip, hostname)
44
+ `test 0 -ne $(cat /etc/hosts | grep -q #{ip} ; echo $?) && \
45
+ echo "#{ip} #{hostname}" | tee -a /etc/hosts`
46
+ end
47
+
48
+ def path_matcher
49
+ %r|([\w\-\.]*)[:/]([\w\-]*)/([\w\-]*)\.git|
50
+ end
51
+
52
+ def ghq_get(path, repo)
53
+ `test ! -d #{path} && ghq get #{repo}`
54
+ end
55
+
56
+ def git_clone(path, repo)
57
+ `test ! -d #{path} && git clone #{value['repo']} #{path}`
58
+ end
59
+
60
+ def ghq?
61
+ @ghq ||= `which ghq 1>/dev/null ; echo $?`.to_i == 0
62
+ end
63
+ end
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,5 @@
1
+ module Vagrant
2
+ module Properties
3
+ VERSION = "0.0.1"
4
+ end
5
+ end
@@ -0,0 +1,24 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'vagrant-properties/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "vagrant-properties"
8
+ spec.version = Vagrant::Properties::VERSION
9
+ spec.authors = ["linyows"]
10
+ spec.email = ["linyows@gmail.com"]
11
+ spec.summary = %q{Mnagement multiple machines.}
12
+ spec.description = %q{Mnagement multiple machines.}
13
+ spec.homepage = "https://github.com/linyows/vagrant-properties"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0")
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_dependency "vagrant", "~> 1.7"
22
+ spec.add_development_dependency "bundler", "~> 1.7"
23
+ spec.add_development_dependency "rake", "~> 10.0"
24
+ end
metadata ADDED
@@ -0,0 +1,95 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: vagrant-properties
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - linyows
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-03-23 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: vagrant
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.7'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.7'
27
+ - !ruby/object:Gem::Dependency
28
+ name: bundler
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.7'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.7'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '10.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '10.0'
55
+ description: Mnagement multiple machines.
56
+ email:
57
+ - linyows@gmail.com
58
+ executables: []
59
+ extensions: []
60
+ extra_rdoc_files: []
61
+ files:
62
+ - ".gitignore"
63
+ - Gemfile
64
+ - LICENSE.txt
65
+ - README.md
66
+ - Rakefile
67
+ - lib/vagrant-properties.rb
68
+ - lib/vagrant-properties/config.rb
69
+ - lib/vagrant-properties/version.rb
70
+ - vagrant-properties.gemspec
71
+ homepage: https://github.com/linyows/vagrant-properties
72
+ licenses:
73
+ - MIT
74
+ metadata: {}
75
+ post_install_message:
76
+ rdoc_options: []
77
+ require_paths:
78
+ - lib
79
+ required_ruby_version: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: '0'
84
+ required_rubygems_version: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ requirements: []
90
+ rubyforge_project:
91
+ rubygems_version: 2.2.2
92
+ signing_key:
93
+ specification_version: 4
94
+ summary: Mnagement multiple machines.
95
+ test_files: []