bib-vagrant 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -13
- data/.gitignore +1 -0
- data/.travis.yml +1 -0
- data/CONTRIBUTING.md +4 -0
- data/Gemfile +8 -1
- data/README.md +25 -1
- data/Rakefile +3 -1
- data/Vagrantfile +26 -3
- data/bib-vagrant.gemspec +4 -2
- data/lib/bib/vagrant/provisioner.rb +210 -0
- data/lib/bib/vagrant/version.rb +1 -1
- data/lib/bib-vagrant.rb +2 -1
- metadata +33 -17
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
MzY5N2VmMDU4NDFjOTZkZDc1ODQ2NmI1YjVkMmVhZWQzZTI2NThhNA==
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: e61e6e30152c53c0beb8c47629d5ab6c02a20131
|
4
|
+
data.tar.gz: 20110d8627d95de0556d45585f2fe657b2fe10d4
|
7
5
|
SHA512:
|
8
|
-
metadata.gz:
|
9
|
-
|
10
|
-
Nzk3ZGE0YTBmMjJiNjk4ZGM4NDU4Nzk0NDMwNmRmMjYwNzcyMDczODMxNGYz
|
11
|
-
YjRhYTg1ODc3NGMxNTRiYWY1NjgyODFhODA2MDVmZmQ1OWZjNTY=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
MTkzYTE3NmEyZTdhMWI1NzA0YjdmM2NmYWVhY2Q4NjM1ZTE3OGY1ZDA4ZWYx
|
14
|
-
NDI5NjM3MjMwOGJhOWRmOGZjYjk3MjllMDEyNWFjODVlMjk5OWFkYWU0YmU4
|
15
|
-
MGMwYTlkMDQ0YzBiYmYyYjlmNTY2MmU0Y2MyNDgyMTllZDRmYjA=
|
6
|
+
metadata.gz: 4e2981e65dcd8d39210e4c71d32128e23427d987aaf170e80349266f5b415db0375f454eb59847500406e626ffd01b692cbbb6687f17ff55098af46e596e0610
|
7
|
+
data.tar.gz: 0c7f5978c96ad4e529d50ccb68f40a42893eeda13820c7d8e9ba73681909c76b6867450a37f5139c9d8f4a9a26a47f6eed666b5b0fa3d2c9d6670549013b7044
|
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
data/CONTRIBUTING.md
CHANGED
data/Gemfile
CHANGED
@@ -5,5 +5,12 @@ source 'https://rubygems.org'
|
|
5
5
|
gemspec
|
6
6
|
|
7
7
|
group :development do
|
8
|
-
gem "vagrant", git: "
|
8
|
+
gem "vagrant", git: "https://github.com/mitchellh/vagrant.git"
|
9
|
+
# gem "vagrant", git: "git://github.com/mitchellh/vagrant.git", tag: "v1.7.4"
|
10
|
+
# gem "vagrant", git: "git://github.com/mitchellh/vagrant.git", tag: "v1.3.5"
|
9
11
|
end
|
12
|
+
|
13
|
+
group :plugins do
|
14
|
+
gem "bib-vagrant", path: "."
|
15
|
+
end
|
16
|
+
|
data/README.md
CHANGED
@@ -43,6 +43,23 @@ additional_json: ! '{}'
|
|
43
43
|
|
44
44
|
#Show Virtualbox GUI
|
45
45
|
gui: false
|
46
|
+
|
47
|
+
# Token to use with composer
|
48
|
+
composer_github_token: <github token>
|
49
|
+
|
50
|
+
# npm proxy in the form of "http://npm-proxy.tld/"
|
51
|
+
npm_registry: <npm registry or proxy url>
|
52
|
+
|
53
|
+
# your npm user email address in the form of user@domain.tld
|
54
|
+
npm_username: <github or npm username>
|
55
|
+
|
56
|
+
# your npm or user email address in the form of user@domain.tld
|
57
|
+
npm_usermail: <npm or github users email address>
|
58
|
+
|
59
|
+
# Authentication Token to use with npm
|
60
|
+
npm_userpass: <npm or github authentication token>
|
61
|
+
|
62
|
+
|
46
63
|
```
|
47
64
|
|
48
65
|
Additional parameters can be added to the file and used in the Vagrantfile - but you then have to make sure to use sensible fallback defaults in your Vagrantfile, since not every developer might have this setting in the .yml.
|
@@ -75,7 +92,9 @@ Vagrant.configure("2") do |config|
|
|
75
92
|
chef.add_recipe "something::here"
|
76
93
|
chef.log_level = vagrantconfig["chef_log_level"]
|
77
94
|
end
|
78
|
-
|
95
|
+
|
96
|
+
web_config.vm.provision "bib_configure_npm"
|
97
|
+
|
79
98
|
end
|
80
99
|
```
|
81
100
|
|
@@ -88,6 +107,11 @@ cookbook_path: ~/Documents/workspaces/easybib-cookbooks
|
|
88
107
|
chef_log_level: debug
|
89
108
|
additional_json: ! '{}'
|
90
109
|
gui: true
|
110
|
+
composer_github_token: <github token>
|
111
|
+
npm_registry: <npm registry or proxy url>
|
112
|
+
npm_username: <github or npm username>
|
113
|
+
npm_usermail: <npm or github users email address>
|
114
|
+
npm_userpass: <npm or github authentication token>
|
91
115
|
```
|
92
116
|
|
93
117
|
## Contributing
|
data/Rakefile
CHANGED
data/Vagrantfile
CHANGED
@@ -1,7 +1,30 @@
|
|
1
|
-
Vagrant.require_plugin "bib-vagrant"
|
2
1
|
|
3
2
|
Vagrant.configure("2") do |config|
|
4
|
-
foo =
|
3
|
+
foo = Bib::Vagrant::Config.new()
|
5
4
|
puts foo.get.inspect
|
6
|
-
|
5
|
+
|
6
|
+
# for testing ubuntu 14.04
|
7
|
+
config.vm.box = 'trusty-server-cloudimg-amd64-vagrant-disk1.box'
|
8
|
+
config.vm.box_url = 'https://cloud-images.ubuntu.com/vagrant/trusty/current/trusty-server-cloudimg-amd64-vagrant-disk1.box'
|
9
|
+
|
10
|
+
# for testing ubuntu 15.04
|
11
|
+
# config.vm.box = 'vivid-server-cloudimg-amd64-vagrant-disk1.box'
|
12
|
+
# config.vm.box_url = 'https://cloud-images.ubuntu.com/vagrant/vivid/current/vivid-server-cloudimg-amd64-vagrant-disk1.box'
|
13
|
+
|
14
|
+
# config.vm.provision :shell, :path => 'apt-spy-2-bootstrap.sh'
|
15
|
+
|
16
|
+
config.vm.provision 'shell', inline: 'sudo apt-get -y update'
|
17
|
+
|
18
|
+
# for testing the latest greatest npm
|
19
|
+
# config.vm.provision 'shell', inline: 'sudo apt-get -y install curl'
|
20
|
+
# config.vm.provision 'shell', inline: 'curl -sL https://deb.nodesource.com/setup_0.12 | sudo bash -'
|
21
|
+
|
22
|
+
config.vm.provision 'shell', inline: 'sudo apt-get -y install nodejs npm'
|
23
|
+
|
24
|
+
config.vm.provision 'bib_configure_npm'
|
25
|
+
|
26
|
+
config.vm.provision 'shell', inline: 'npm config list'
|
27
|
+
|
28
|
+
config.vm.provision 'shell', inline: 'npm --loglevel silly view test'
|
29
|
+
|
7
30
|
end
|
data/bib-vagrant.gemspec
CHANGED
@@ -6,7 +6,7 @@ require 'bib/vagrant/version'
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
7
|
spec.name = "bib-vagrant"
|
8
8
|
spec.version = Bib::Vagrant::VERSION
|
9
|
-
spec.authors = ["tillk", "fh"]
|
9
|
+
spec.authors = ["tillk", "fh", "gilleyj"]
|
10
10
|
spec.email = ["till@php.net"]
|
11
11
|
spec.description = "A rubygem to centralize configuration and setup in every project's Vagrantfile"
|
12
12
|
spec.summary = "Centralize configuration and setup"
|
@@ -20,10 +20,12 @@ Gem::Specification.new do |spec|
|
|
20
20
|
|
21
21
|
spec.add_dependency 'thor', '>= 0.18.1'
|
22
22
|
spec.add_dependency 'colored', '>= 1.2'
|
23
|
+
spec.add_dependency 'rest_client'
|
23
24
|
spec.add_dependency 'json'
|
24
25
|
|
25
|
-
spec.add_development_dependency "bundler", "~> 1.
|
26
|
+
spec.add_development_dependency "bundler", "~> 1.5"
|
26
27
|
spec.add_development_dependency "rake"
|
27
28
|
spec.add_development_dependency "minitest", "~> 5.0.8"
|
28
29
|
spec.add_development_dependency "coveralls"
|
29
30
|
end
|
31
|
+
|
@@ -0,0 +1,210 @@
|
|
1
|
+
require 'vagrant'
|
2
|
+
require 'rubygems'
|
3
|
+
require 'rest_client'
|
4
|
+
require 'json'
|
5
|
+
require 'base64'
|
6
|
+
|
7
|
+
# Define the plugin.
|
8
|
+
class BibConfigurePlugin < Vagrant.plugin('2')
|
9
|
+
name 'NPM configuration Plugin'
|
10
|
+
|
11
|
+
# This plugin provides a provisioner called unix_reboot.
|
12
|
+
provisioner 'bib_configure_npm' do
|
13
|
+
|
14
|
+
# Create a provisioner.
|
15
|
+
class BibConfigureProvisioner < Vagrant.plugin('2', :provisioner)
|
16
|
+
# Initialization, define internal state. Nothing needed.
|
17
|
+
|
18
|
+
attr_reader :bib_config
|
19
|
+
|
20
|
+
def initialize(machine, config)
|
21
|
+
super(machine, config)
|
22
|
+
end
|
23
|
+
|
24
|
+
# Configuration changes to be done. Nothing needed here either.
|
25
|
+
def configure(root_config)
|
26
|
+
super(root_config)
|
27
|
+
end
|
28
|
+
|
29
|
+
# Run the provisioning.
|
30
|
+
def provision
|
31
|
+
return unless @machine.communicate.ready?
|
32
|
+
bib_config = Bib::Vagrant::Config.new
|
33
|
+
bib_config_values = bib_config.get
|
34
|
+
bib_config.validate!(bib_config_values)
|
35
|
+
|
36
|
+
# sneaky fix to "stdin: is not a tty" noise
|
37
|
+
# sudo_command("sudo sed -i 's/^mesg n$/tty -s \&\& mesg n/g' /root/.profile")
|
38
|
+
|
39
|
+
# inbound variables
|
40
|
+
registry = false
|
41
|
+
username = false
|
42
|
+
usermail = false
|
43
|
+
userpass = false
|
44
|
+
|
45
|
+
if bib_config_values.include?('npm_registry')
|
46
|
+
registry = bib_config_values['npm_registry'].clone
|
47
|
+
end
|
48
|
+
|
49
|
+
if bib_config_values.include?('npm_username')
|
50
|
+
username = bib_config_values['npm_username'].clone
|
51
|
+
end
|
52
|
+
|
53
|
+
if bib_config_values.include?('npm_usermail')
|
54
|
+
usermail = bib_config_values['npm_usermail'].clone
|
55
|
+
end
|
56
|
+
|
57
|
+
if bib_config_values.include?('npm_userpass')
|
58
|
+
userpass = bib_config_values['npm_userpass'].clone
|
59
|
+
end
|
60
|
+
|
61
|
+
if ( registry && username && usermail && userpass)
|
62
|
+
auth_hash = Base64.strict_encode64(username + ':' + userpass)
|
63
|
+
auth_token = get_npm_token(registry, username, usermail, userpass)
|
64
|
+
if auth_token
|
65
|
+
registry_ident = registry.clone
|
66
|
+
registry_ident.slice!('http:')
|
67
|
+
|
68
|
+
npmrc_set('always-auth', 'true')
|
69
|
+
npmrc_set('registry', registry)
|
70
|
+
npmrc_set('email', usermail)
|
71
|
+
|
72
|
+
# this seems to break 1.4.x (it gets username from _auth base64)
|
73
|
+
# npmrc_set('username', username)
|
74
|
+
|
75
|
+
# for older npm user/pass hash authentication
|
76
|
+
npmrc_set( '_auth', '"' + auth_hash + '"')
|
77
|
+
|
78
|
+
# for newer npm token authentication
|
79
|
+
npmrc_set( registry_ident + ':_authToken', '"' + auth_token + '"')
|
80
|
+
|
81
|
+
else
|
82
|
+
@machine.ui.info("npm registry token request failed. Attempting old style auth configuration.")
|
83
|
+
npmrc_set('always-auth', 'true')
|
84
|
+
npmrc_set('registry', registry)
|
85
|
+
npmrc_set('email', usermail)
|
86
|
+
|
87
|
+
# this seems to break 1.4.x (it gets username from _auth base64)
|
88
|
+
# npmrc_set('username', username)
|
89
|
+
|
90
|
+
npmrc_set('_auth', auth_hash)
|
91
|
+
end
|
92
|
+
|
93
|
+
else
|
94
|
+
|
95
|
+
message = ''
|
96
|
+
if !registry
|
97
|
+
message += " npm_registry"
|
98
|
+
end
|
99
|
+
|
100
|
+
if !username
|
101
|
+
message += " npm_username"
|
102
|
+
end
|
103
|
+
|
104
|
+
if !usermail
|
105
|
+
message += " npm_userpass"
|
106
|
+
end
|
107
|
+
|
108
|
+
if !userpass
|
109
|
+
message += " npm_userpass"
|
110
|
+
end
|
111
|
+
|
112
|
+
@machine.ui.warn("WARNING: Missing " + message + " value(s) in ~/.config/easybib/vagrantdefault.yml (Your HOST OS)")
|
113
|
+
@machine.ui.warn("WARNING: .npmrc not setup on guest OS")
|
114
|
+
end
|
115
|
+
|
116
|
+
# if bib_config_values.includ?('composer_github_token')
|
117
|
+
# composer_set('github-oauth.github.com', bib_config_values['composer_github_token'])
|
118
|
+
# else
|
119
|
+
# @machine.ui.warn("Missing composer_github_token value in config")
|
120
|
+
# end
|
121
|
+
|
122
|
+
send_command("mkdir -p ~/.npm/_locks")
|
123
|
+
send_command("sudo chown -R $USER ~/.npm")
|
124
|
+
|
125
|
+
# Now the machine is up again, perform the necessary tasks.
|
126
|
+
@machine.ui.info('bib-vagrant config complete...')
|
127
|
+
end
|
128
|
+
|
129
|
+
# def composer_set(key, value)
|
130
|
+
# command = "composer config -g #{key} #{value}"
|
131
|
+
# sudo_command(command)
|
132
|
+
# end
|
133
|
+
|
134
|
+
def npmrc_set(key, value)
|
135
|
+
command = "npm -g config "
|
136
|
+
if value
|
137
|
+
command << "set #{key} #{value}"
|
138
|
+
else
|
139
|
+
# if value is null assume a delete
|
140
|
+
command << "delete #{key}"
|
141
|
+
# fix for npmrc key not existing
|
142
|
+
sudo_command("npm -g set #{key} GNDN")
|
143
|
+
end
|
144
|
+
# do not to echo the command all the time (need if debug?)
|
145
|
+
# @machine.ui.info(command)
|
146
|
+
sudo_command(command)
|
147
|
+
end
|
148
|
+
|
149
|
+
def send_command(command)
|
150
|
+
@machine.communicate.execute(command) do |type, data|
|
151
|
+
if type == :stderr
|
152
|
+
@machine.ui.warn(data)
|
153
|
+
else
|
154
|
+
@machine.ui.info(data)
|
155
|
+
end
|
156
|
+
end
|
157
|
+
end
|
158
|
+
|
159
|
+
def sudo_command(command)
|
160
|
+
@machine.communicate.sudo(command) do |type, data|
|
161
|
+
if type == :stderr
|
162
|
+
@machine.ui.warn(data)
|
163
|
+
else
|
164
|
+
@machine.ui.info(data)
|
165
|
+
end
|
166
|
+
end
|
167
|
+
end
|
168
|
+
|
169
|
+
# my nifty function to get an NPM token from the registry
|
170
|
+
def get_npm_token(registry_url, username, usermail, userpass)
|
171
|
+
# get the date for some reason
|
172
|
+
date = Time.now;
|
173
|
+
# set up the request _id ???
|
174
|
+
_id = 'org.couchdb.user:' + username
|
175
|
+
# set up the registry URL to request the token from
|
176
|
+
url = registry_url + '-/user/' + _id
|
177
|
+
# create json object passed to the registry
|
178
|
+
data = { _id: _id ,
|
179
|
+
name: username,
|
180
|
+
password: userpass,
|
181
|
+
email: usermail,
|
182
|
+
type: 'user',
|
183
|
+
roles: [],
|
184
|
+
date: date
|
185
|
+
}
|
186
|
+
# convert it to json
|
187
|
+
jdata = JSON.generate(data)
|
188
|
+
# make the request and see if we get a token
|
189
|
+
response_json = RestClient.put url, jdata, {:content_type => :json}
|
190
|
+
# convert the response to a hash???
|
191
|
+
hash = JSON.parse response_json
|
192
|
+
# check to see if the key token is there
|
193
|
+
if hash.has_key?('token')
|
194
|
+
# it is, so return it
|
195
|
+
hash['token']
|
196
|
+
else
|
197
|
+
# it doesn't so return false
|
198
|
+
false
|
199
|
+
end
|
200
|
+
end
|
201
|
+
|
202
|
+
# Nothing needs to be done on cleanup.
|
203
|
+
def cleanup
|
204
|
+
super
|
205
|
+
end
|
206
|
+
end
|
207
|
+
BibConfigureProvisioner
|
208
|
+
end
|
209
|
+
end
|
210
|
+
|
data/lib/bib/vagrant/version.rb
CHANGED
data/lib/bib-vagrant.rb
CHANGED
metadata
CHANGED
@@ -1,56 +1,71 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bib-vagrant
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- tillk
|
8
8
|
- fh
|
9
|
+
- gilleyj
|
9
10
|
autorequire:
|
10
11
|
bindir: bin
|
11
12
|
cert_chain: []
|
12
|
-
date:
|
13
|
+
date: 2015-10-16 00:00:00.000000000 Z
|
13
14
|
dependencies:
|
14
15
|
- !ruby/object:Gem::Dependency
|
15
16
|
name: thor
|
16
17
|
requirement: !ruby/object:Gem::Requirement
|
17
18
|
requirements:
|
18
|
-
- -
|
19
|
+
- - '>='
|
19
20
|
- !ruby/object:Gem::Version
|
20
21
|
version: 0.18.1
|
21
22
|
type: :runtime
|
22
23
|
prerelease: false
|
23
24
|
version_requirements: !ruby/object:Gem::Requirement
|
24
25
|
requirements:
|
25
|
-
- -
|
26
|
+
- - '>='
|
26
27
|
- !ruby/object:Gem::Version
|
27
28
|
version: 0.18.1
|
28
29
|
- !ruby/object:Gem::Dependency
|
29
30
|
name: colored
|
30
31
|
requirement: !ruby/object:Gem::Requirement
|
31
32
|
requirements:
|
32
|
-
- -
|
33
|
+
- - '>='
|
33
34
|
- !ruby/object:Gem::Version
|
34
35
|
version: '1.2'
|
35
36
|
type: :runtime
|
36
37
|
prerelease: false
|
37
38
|
version_requirements: !ruby/object:Gem::Requirement
|
38
39
|
requirements:
|
39
|
-
- -
|
40
|
+
- - '>='
|
40
41
|
- !ruby/object:Gem::Version
|
41
42
|
version: '1.2'
|
43
|
+
- !ruby/object:Gem::Dependency
|
44
|
+
name: rest_client
|
45
|
+
requirement: !ruby/object:Gem::Requirement
|
46
|
+
requirements:
|
47
|
+
- - '>='
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: '0'
|
50
|
+
type: :runtime
|
51
|
+
prerelease: false
|
52
|
+
version_requirements: !ruby/object:Gem::Requirement
|
53
|
+
requirements:
|
54
|
+
- - '>='
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: '0'
|
42
57
|
- !ruby/object:Gem::Dependency
|
43
58
|
name: json
|
44
59
|
requirement: !ruby/object:Gem::Requirement
|
45
60
|
requirements:
|
46
|
-
- -
|
61
|
+
- - '>='
|
47
62
|
- !ruby/object:Gem::Version
|
48
63
|
version: '0'
|
49
64
|
type: :runtime
|
50
65
|
prerelease: false
|
51
66
|
version_requirements: !ruby/object:Gem::Requirement
|
52
67
|
requirements:
|
53
|
-
- -
|
68
|
+
- - '>='
|
54
69
|
- !ruby/object:Gem::Version
|
55
70
|
version: '0'
|
56
71
|
- !ruby/object:Gem::Dependency
|
@@ -59,26 +74,26 @@ dependencies:
|
|
59
74
|
requirements:
|
60
75
|
- - ~>
|
61
76
|
- !ruby/object:Gem::Version
|
62
|
-
version: '1.
|
77
|
+
version: '1.5'
|
63
78
|
type: :development
|
64
79
|
prerelease: false
|
65
80
|
version_requirements: !ruby/object:Gem::Requirement
|
66
81
|
requirements:
|
67
82
|
- - ~>
|
68
83
|
- !ruby/object:Gem::Version
|
69
|
-
version: '1.
|
84
|
+
version: '1.5'
|
70
85
|
- !ruby/object:Gem::Dependency
|
71
86
|
name: rake
|
72
87
|
requirement: !ruby/object:Gem::Requirement
|
73
88
|
requirements:
|
74
|
-
- -
|
89
|
+
- - '>='
|
75
90
|
- !ruby/object:Gem::Version
|
76
91
|
version: '0'
|
77
92
|
type: :development
|
78
93
|
prerelease: false
|
79
94
|
version_requirements: !ruby/object:Gem::Requirement
|
80
95
|
requirements:
|
81
|
-
- -
|
96
|
+
- - '>='
|
82
97
|
- !ruby/object:Gem::Version
|
83
98
|
version: '0'
|
84
99
|
- !ruby/object:Gem::Dependency
|
@@ -99,14 +114,14 @@ dependencies:
|
|
99
114
|
name: coveralls
|
100
115
|
requirement: !ruby/object:Gem::Requirement
|
101
116
|
requirements:
|
102
|
-
- -
|
117
|
+
- - '>='
|
103
118
|
- !ruby/object:Gem::Version
|
104
119
|
version: '0'
|
105
120
|
type: :development
|
106
121
|
prerelease: false
|
107
122
|
version_requirements: !ruby/object:Gem::Requirement
|
108
123
|
requirements:
|
109
|
-
- -
|
124
|
+
- - '>='
|
110
125
|
- !ruby/object:Gem::Version
|
111
126
|
version: '0'
|
112
127
|
description: A rubygem to centralize configuration and setup in every project's Vagrantfile
|
@@ -131,6 +146,7 @@ files:
|
|
131
146
|
- lib/bib/vagrant.rb
|
132
147
|
- lib/bib/vagrant/config.rb
|
133
148
|
- lib/bib/vagrant/plugin.rb
|
149
|
+
- lib/bib/vagrant/provisioner.rb
|
134
150
|
- lib/bib/vagrant/version.rb
|
135
151
|
- test/config_test.rb
|
136
152
|
homepage: https://github.com/easybiblabs/bib-vagrant
|
@@ -143,17 +159,17 @@ require_paths:
|
|
143
159
|
- lib
|
144
160
|
required_ruby_version: !ruby/object:Gem::Requirement
|
145
161
|
requirements:
|
146
|
-
- -
|
162
|
+
- - '>='
|
147
163
|
- !ruby/object:Gem::Version
|
148
164
|
version: '0'
|
149
165
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
150
166
|
requirements:
|
151
|
-
- -
|
167
|
+
- - '>='
|
152
168
|
- !ruby/object:Gem::Version
|
153
169
|
version: '0'
|
154
170
|
requirements: []
|
155
171
|
rubyforge_project:
|
156
|
-
rubygems_version: 2.
|
172
|
+
rubygems_version: 2.0.14
|
157
173
|
signing_key:
|
158
174
|
specification_version: 4
|
159
175
|
summary: Centralize configuration and setup
|