puppet-moddeps 0.3.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 +15 -0
- data/.coveralls.yml +2 -0
- data/.gitignore +24 -0
- data/.travis.yml +30 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +107 -0
- data/Guardfile +15 -0
- data/LICENSE +28 -0
- data/README.md +67 -0
- data/Rakefile +11 -0
- data/Vagrantfile +16 -0
- data/bin/puppet-moddeps +5 -0
- data/lib/puppet/moddeps/version.rb +5 -0
- data/lib/puppet/moddeps.rb +73 -0
- data/puppet-moddeps.gemspec +39 -0
- data/scripts/pretest.sh +20 -0
- data/scripts/vagrant-user.sh +21 -0
- data/spec/moddeps_spec.rb +56 -0
- data/spec/spec_helper.rb +8 -0
- metadata +241 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
!binary "U0hBMQ==":
|
|
3
|
+
metadata.gz: !binary |-
|
|
4
|
+
ZDRiNThjZjAzOGY0NDZmNTk2YTBlYTA5YzlkZDk5NjIyNjY4M2ViNw==
|
|
5
|
+
data.tar.gz: !binary |-
|
|
6
|
+
OGNmY2MxNTRhNjYwMDIwZjlmYzg1MzY2ZGRlNjdiNDc4ZDg3MzI4MA==
|
|
7
|
+
SHA512:
|
|
8
|
+
metadata.gz: !binary |-
|
|
9
|
+
YTU5YmVhNTJmY2RkM2I1YWEyNjU5YmQ5ZTc2ZGI2ZTcyMzBjMTVjYjM3YTBk
|
|
10
|
+
ZTgxZmJjNjI0YTEzYjMzZDE1OWZiMDBjM2EzNDMzZTI0NGY1NDlmZjBhYWQ1
|
|
11
|
+
NTdhZDgyMjFhOWRiMjMxYzZjZjdmZGM2ODA4N2IwZGZlOTQ3NjU=
|
|
12
|
+
data.tar.gz: !binary |-
|
|
13
|
+
YzI4MDYyYTJjNGViYTczMGViZGJlZjY5Zjg5ZjJmZDY5NzhkMTQ4NTkyYmEx
|
|
14
|
+
MzIyYmRlZjBiMjNkNWM4ZDFiODkxZDg2MzgyMDIxZjdlODFhNDJmZTRiM2Y5
|
|
15
|
+
NGM1ZjA2ODM1Y2JlM2RmMGJiNjFmODQ0ODlmYmM1ZDRmZjE3Mjc=
|
data/.coveralls.yml
ADDED
data/.gitignore
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/.bundle/
|
|
2
|
+
/.vagrant/
|
|
3
|
+
/.yardoc
|
|
4
|
+
#/Gemfile.lock
|
|
5
|
+
/_yardoc/
|
|
6
|
+
/coverage/
|
|
7
|
+
/doc/
|
|
8
|
+
/pkg/
|
|
9
|
+
/spec/reports/
|
|
10
|
+
/tmp/
|
|
11
|
+
*.bundle
|
|
12
|
+
*.so
|
|
13
|
+
*.o
|
|
14
|
+
*.a
|
|
15
|
+
mkmf.log
|
|
16
|
+
*.gem
|
|
17
|
+
|
|
18
|
+
# Files added as part of Vagrant setup
|
|
19
|
+
/GitConfig
|
|
20
|
+
|
|
21
|
+
/.DS_Store
|
|
22
|
+
/vendor
|
|
23
|
+
|
|
24
|
+
/.c9/
|
data/.travis.yml
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
language: ruby
|
|
2
|
+
cache: bundler
|
|
3
|
+
rvm:
|
|
4
|
+
- 1.9.3
|
|
5
|
+
- 2.0.0
|
|
6
|
+
- 2.1.1
|
|
7
|
+
|
|
8
|
+
before_install:
|
|
9
|
+
- wget https://apt.puppetlabs.com/puppetlabs-release-precise.deb
|
|
10
|
+
- sudo dpkg -i puppetlabs-release-precise.deb
|
|
11
|
+
- sudo apt-get update -qq
|
|
12
|
+
- sudo apt-get install -y puppet > /dev/null
|
|
13
|
+
- sudo chmod 777 /etc/puppet/modules
|
|
14
|
+
- moddir='/etc/puppet/modules/fake_private_module'
|
|
15
|
+
- mkdir "$moddir"
|
|
16
|
+
- echo '{"dependencies":[' >> "$moddir/metadata.json"
|
|
17
|
+
- echo '{"name":"puppetlabs/stdlib","version_requirement":">= 2.4.0"},' >> "$moddir/metadata.json"
|
|
18
|
+
- echo '{"name":"puppetlabs/concat","version_requirement":">= 1.1.1"},' >> "$moddir/metadata.json"
|
|
19
|
+
- echo '{"name":"puppetlabs/firewall","version_requirement":">= 1.3.0"}]}' >> "$moddir/metadata.json"
|
|
20
|
+
|
|
21
|
+
script: 'bundle exec rake'
|
|
22
|
+
|
|
23
|
+
notifications:
|
|
24
|
+
email:
|
|
25
|
+
on_failure: change
|
|
26
|
+
on_success: never
|
|
27
|
+
|
|
28
|
+
addons:
|
|
29
|
+
code_climate:
|
|
30
|
+
repo_token: f73a867bdb9f7839256dbf50604585592eecf50f5fb0ea09c0783eb27649e6f2
|
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
PATH
|
|
2
|
+
remote: .
|
|
3
|
+
specs:
|
|
4
|
+
puppet-moddeps (0.3.1)
|
|
5
|
+
json (~> 1.8, >= 1.8.1)
|
|
6
|
+
|
|
7
|
+
GEM
|
|
8
|
+
remote: https://rubygems.org/
|
|
9
|
+
specs:
|
|
10
|
+
celluloid (0.16.0)
|
|
11
|
+
timers (~> 4.0.0)
|
|
12
|
+
codeclimate-test-reporter (0.4.3)
|
|
13
|
+
simplecov (>= 0.7.1, < 1.0.0)
|
|
14
|
+
coderay (1.1.0)
|
|
15
|
+
coveralls (0.7.2)
|
|
16
|
+
multi_json (~> 1.3)
|
|
17
|
+
rest-client (= 1.6.7)
|
|
18
|
+
simplecov (>= 0.7)
|
|
19
|
+
term-ansicolor (= 1.2.2)
|
|
20
|
+
thor (= 0.18.1)
|
|
21
|
+
diff-lcs (1.2.5)
|
|
22
|
+
docile (1.1.5)
|
|
23
|
+
ffi (1.9.6)
|
|
24
|
+
formatador (0.2.5)
|
|
25
|
+
guard (2.10.5)
|
|
26
|
+
formatador (>= 0.2.4)
|
|
27
|
+
listen (~> 2.7)
|
|
28
|
+
lumberjack (~> 1.0)
|
|
29
|
+
nenv (~> 0.1)
|
|
30
|
+
pry (>= 0.9.12)
|
|
31
|
+
thor (>= 0.18.1)
|
|
32
|
+
guard-compat (1.2.0)
|
|
33
|
+
guard-rspec (4.5.0)
|
|
34
|
+
guard (~> 2.1)
|
|
35
|
+
guard-compat (~> 1.1)
|
|
36
|
+
rspec (>= 2.99.0, < 4.0)
|
|
37
|
+
hitimes (1.2.2)
|
|
38
|
+
json (1.8.1)
|
|
39
|
+
listen (2.8.4)
|
|
40
|
+
celluloid (>= 0.15.2)
|
|
41
|
+
rb-fsevent (>= 0.9.3)
|
|
42
|
+
rb-inotify (>= 0.9)
|
|
43
|
+
lumberjack (1.0.9)
|
|
44
|
+
method_source (0.8.2)
|
|
45
|
+
mime-types (2.4.3)
|
|
46
|
+
multi_json (1.10.1)
|
|
47
|
+
nenv (0.1.1)
|
|
48
|
+
pry (0.10.1)
|
|
49
|
+
coderay (~> 1.1.0)
|
|
50
|
+
method_source (~> 0.8.1)
|
|
51
|
+
slop (~> 3.4)
|
|
52
|
+
pry-nav (0.2.4)
|
|
53
|
+
pry (>= 0.9.10, < 0.11.0)
|
|
54
|
+
pry-remote (0.1.8)
|
|
55
|
+
pry (~> 0.9)
|
|
56
|
+
slop (~> 3.0)
|
|
57
|
+
rake (10.4.2)
|
|
58
|
+
rb-fsevent (0.9.4)
|
|
59
|
+
rb-inotify (0.9.5)
|
|
60
|
+
ffi (>= 0.5.0)
|
|
61
|
+
rest-client (1.6.7)
|
|
62
|
+
mime-types (>= 1.16)
|
|
63
|
+
rspec (3.1.0)
|
|
64
|
+
rspec-core (~> 3.1.0)
|
|
65
|
+
rspec-expectations (~> 3.1.0)
|
|
66
|
+
rspec-mocks (~> 3.1.0)
|
|
67
|
+
rspec-core (3.1.7)
|
|
68
|
+
rspec-support (~> 3.1.0)
|
|
69
|
+
rspec-expectations (3.1.2)
|
|
70
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
|
71
|
+
rspec-support (~> 3.1.0)
|
|
72
|
+
rspec-mocks (3.1.3)
|
|
73
|
+
rspec-support (~> 3.1.0)
|
|
74
|
+
rspec-nc (0.2.0)
|
|
75
|
+
rspec (>= 2.9)
|
|
76
|
+
terminal-notifier (>= 1.4)
|
|
77
|
+
rspec-support (3.1.2)
|
|
78
|
+
simplecov (0.9.1)
|
|
79
|
+
docile (~> 1.1.0)
|
|
80
|
+
multi_json (~> 1.0)
|
|
81
|
+
simplecov-html (~> 0.8.0)
|
|
82
|
+
simplecov-html (0.8.0)
|
|
83
|
+
slop (3.6.0)
|
|
84
|
+
term-ansicolor (1.2.2)
|
|
85
|
+
tins (~> 0.8)
|
|
86
|
+
terminal-notifier (1.6.2)
|
|
87
|
+
thor (0.18.1)
|
|
88
|
+
timers (4.0.1)
|
|
89
|
+
hitimes
|
|
90
|
+
tins (0.13.2)
|
|
91
|
+
|
|
92
|
+
PLATFORMS
|
|
93
|
+
ruby
|
|
94
|
+
|
|
95
|
+
DEPENDENCIES
|
|
96
|
+
bundler (~> 1.7)
|
|
97
|
+
codeclimate-test-reporter (~> 0.4)
|
|
98
|
+
coveralls (~> 0.7)
|
|
99
|
+
guard (~> 2.10)
|
|
100
|
+
guard-rspec (~> 4.5)
|
|
101
|
+
pry (~> 0.10)
|
|
102
|
+
pry-nav (~> 0.2)
|
|
103
|
+
pry-remote (~> 0.1)
|
|
104
|
+
puppet-moddeps!
|
|
105
|
+
rake (~> 10.4)
|
|
106
|
+
rspec (~> 3.1)
|
|
107
|
+
rspec-nc (~> 0.2)
|
data/Guardfile
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# -*- mode: ruby -*-
|
|
2
|
+
# vi: set ft=ruby :
|
|
3
|
+
|
|
4
|
+
guard 'rspec', cmd: 'bundle exec rspec' do
|
|
5
|
+
# watch /lib/puppet files
|
|
6
|
+
watch(%r{^lib/puppet/(.+).rb$}) do |m|
|
|
7
|
+
"spec/#{m[1]}_spec.rb"
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
# watch /spec/ files
|
|
11
|
+
watch(%r{^spec/(.+).rb$}) do |m|
|
|
12
|
+
"spec/#{m[1]}.rb"
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
|
data/LICENSE
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
Copyright (c) 2014, genebean
|
|
2
|
+
All rights reserved.
|
|
3
|
+
|
|
4
|
+
Redistribution and use in source and binary forms, with or without
|
|
5
|
+
modification, are permitted provided that the following conditions are met:
|
|
6
|
+
|
|
7
|
+
* Redistributions of source code must retain the above copyright notice, this
|
|
8
|
+
list of conditions and the following disclaimer.
|
|
9
|
+
|
|
10
|
+
* Redistributions in binary form must reproduce the above copyright notice,
|
|
11
|
+
this list of conditions and the following disclaimer in the documentation
|
|
12
|
+
and/or other materials provided with the distribution.
|
|
13
|
+
|
|
14
|
+
* Neither the name of puppet-moddeps nor the names of its
|
|
15
|
+
contributors may be used to endorse or promote products derived from
|
|
16
|
+
this software without specific prior written permission.
|
|
17
|
+
|
|
18
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
19
|
+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
20
|
+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
21
|
+
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
|
22
|
+
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
23
|
+
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
24
|
+
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
25
|
+
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
26
|
+
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
27
|
+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
28
|
+
|
data/README.md
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# Puppet::Moddeps
|
|
2
|
+
|
|
3
|
+
#### Master branch:
|
|
4
|
+
[![Build Status][travis-img-master]][travis-ci]
|
|
5
|
+
[![Code Climate][cc-img]][code-climate]
|
|
6
|
+
[![Coverage Status][coveralls-img-master]][coveralls-master]
|
|
7
|
+
[![Dependency Status][gemnasium-img]][gemnasium]
|
|
8
|
+
|
|
9
|
+
#### Devlop branch:
|
|
10
|
+
[![Build Status][travis-img-develop]][travis-ci]
|
|
11
|
+
[![Coverage Status][coveralls-img-develop]][coveralls-develop]
|
|
12
|
+
|
|
13
|
+
This gem will allow you to pull in all missing dependencies for a given Puppet
|
|
14
|
+
module. This is targeted specifically at private modules that have a populated
|
|
15
|
+
`metadata.json` file.
|
|
16
|
+
|
|
17
|
+
## Installation
|
|
18
|
+
|
|
19
|
+
Add this line to your application's Gemfile:
|
|
20
|
+
|
|
21
|
+
```ruby
|
|
22
|
+
gem 'puppet-moddeps'
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
And then execute:
|
|
26
|
+
|
|
27
|
+
$ bundle
|
|
28
|
+
|
|
29
|
+
Or install it yourself as:
|
|
30
|
+
|
|
31
|
+
$ gem install puppet-moddeps
|
|
32
|
+
|
|
33
|
+
## Usage
|
|
34
|
+
|
|
35
|
+
TODO: Write usage instructions here
|
|
36
|
+
|
|
37
|
+
## Contributing
|
|
38
|
+
|
|
39
|
+
The development environment requires at least Ruby 1.9.2 due to the use of Guard
|
|
40
|
+
and Coveralls. The gem is designed to run on Ruby 1.8.7 and higher as that is
|
|
41
|
+
the version available in Red Hat / CentOS 6.
|
|
42
|
+
|
|
43
|
+
1. Fork it ( https://github.com/genebean/puppet-moddeps/fork )
|
|
44
|
+
2. Create your feature branch based off of the develop branch
|
|
45
|
+
(`git checkout develop; git checkout -b my-new-feature`)
|
|
46
|
+
3. Install development gems (`bundle install`)
|
|
47
|
+
4. Open a second terminal and use guard to make sure your code doesn't break anything
|
|
48
|
+
(`bundle exec guard`)
|
|
49
|
+
5. Commit your changes and associated tests (`git commit -am 'Add some feature'`)
|
|
50
|
+
6. Push to the branch (`git push origin my-new-feature`)
|
|
51
|
+
7. Create a new Pull Request
|
|
52
|
+
|
|
53
|
+
Please try and write tests using Rspec's expect syntax for any code you add or change.
|
|
54
|
+
Code must have tests before it will be merged.
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
[code-climate]: https://codeclimate.com/github/genebean/puppet-moddeps
|
|
58
|
+
[cc-img]: https://img.shields.io/codeclimate/github/genebean/puppet-moddeps.svg
|
|
59
|
+
[coveralls-master]: https://coveralls.io/r/genebean/puppet-moddeps?branch=master
|
|
60
|
+
[coveralls-develop]: https://coveralls.io/r/genebean/puppet-moddeps?branch=develop
|
|
61
|
+
[coveralls-img-master]: https://img.shields.io/coveralls/genebean/puppet-moddeps/master.svg
|
|
62
|
+
[coveralls-img-develop]: https://img.shields.io/coveralls/genebean/puppet-moddeps/develop.svg
|
|
63
|
+
[gemnasium-img]: https://img.shields.io/gemnasium/genebean/puppet-moddeps.svg
|
|
64
|
+
[gemnasium]: https://gemnasium.com/genebean/puppet-moddeps
|
|
65
|
+
[travis-ci]: https://travis-ci.org/genebean/puppet-moddeps
|
|
66
|
+
[travis-img-master]: https://img.shields.io/travis/genebean/puppet-moddeps/master.svg
|
|
67
|
+
[travis-img-develop]: https://img.shields.io/travis/genebean/puppet-moddeps/develop.svg
|
data/Rakefile
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
require 'bundler/gem_tasks'
|
|
2
|
+
require 'rspec/core/rake_task'
|
|
3
|
+
|
|
4
|
+
# Default directory to look in is `/specs`
|
|
5
|
+
# Run with `rake spec`
|
|
6
|
+
RSpec::Core::RakeTask.new(:spec) do |task|
|
|
7
|
+
task.rspec_opts = ['--color', '--format', 'documentation']
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
task :default => :spec
|
|
11
|
+
|
data/Vagrantfile
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# -*- mode: ruby -*-
|
|
2
|
+
# vi: set ft=ruby :
|
|
3
|
+
|
|
4
|
+
# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
|
|
5
|
+
VAGRANTFILE_API_VERSION = "2"
|
|
6
|
+
|
|
7
|
+
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
|
|
8
|
+
config.vm.box = "genebean/centos6-puppet-64bit"
|
|
9
|
+
|
|
10
|
+
config.vm.synced_folder "./", "/home/vagrant/puppet-moddeps"
|
|
11
|
+
|
|
12
|
+
config.vm.provision "shell", inline: "yum -y install dos2unix git nano ruby-devel tree vim-enhanced"
|
|
13
|
+
config.vm.provision "shell", inline: "dos2unix /vagrant/scripts/vagrant-user.sh"
|
|
14
|
+
config.vm.provision "shell", inline: "su - vagrant -c '/vagrant/scripts/vagrant-user.sh'"
|
|
15
|
+
config.vm.provision "shell", path: "scripts/pretest.sh"
|
|
16
|
+
end
|
data/bin/puppet-moddeps
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
require 'puppet/moddeps/version'
|
|
2
|
+
require 'rubygems'
|
|
3
|
+
require 'json'
|
|
4
|
+
require 'thor'
|
|
5
|
+
|
|
6
|
+
module Puppet
|
|
7
|
+
module Moddeps
|
|
8
|
+
|
|
9
|
+
@@default_module_path = '/etc/puppet/modules'
|
|
10
|
+
|
|
11
|
+
def Moddeps.installDeps(*puppet_module)
|
|
12
|
+
|
|
13
|
+
if ( puppet_module.size >=1 and puppet_module[0].is_a?(Array) )
|
|
14
|
+
args = puppet_module[0]
|
|
15
|
+
else
|
|
16
|
+
args = puppet_module
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
if ( args.size == 1 )
|
|
20
|
+
if Moddeps.checkIfInstalled(args[0])
|
|
21
|
+
Moddeps.parseMetadata(args[0])
|
|
22
|
+
Moddeps.installModules
|
|
23
|
+
else
|
|
24
|
+
puts "Can't find #{args[0]} in #{@@default_module_path}"
|
|
25
|
+
end
|
|
26
|
+
else
|
|
27
|
+
Moddeps.help
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def Moddeps.help
|
|
32
|
+
puts 'Usage: puppet-moddeps module'
|
|
33
|
+
puts ' Call puppet-moddeps with the name of one installed module'
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def Moddeps.checkIfInstalled(file)
|
|
37
|
+
File.directory?("#{@@default_module_path}/#{file}")
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def Moddeps.parseMetadata(puppet_module)
|
|
41
|
+
metadata = File.read("#{@@default_module_path}/#{puppet_module}/metadata.json")
|
|
42
|
+
data = JSON.parse(metadata)
|
|
43
|
+
@deps = Moddeps.getDeps(data)
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def Moddeps.getDeps(data)
|
|
47
|
+
dependencies = []
|
|
48
|
+
data['dependencies'].each do |dep|
|
|
49
|
+
depname = dep["name"].sub '/', '-'
|
|
50
|
+
dependencies.push( depname )
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
return dependencies
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def Moddeps.installModules
|
|
57
|
+
if @deps.size > 0
|
|
58
|
+
@deps.each do |dep|
|
|
59
|
+
if Moddeps.checkIfInstalled(dep)
|
|
60
|
+
puts "#{dep} is already installed, skipping."
|
|
61
|
+
else
|
|
62
|
+
cmd = "/usr/bin/puppet module install #{dep}"
|
|
63
|
+
puts "Running \"#{cmd}\"..."
|
|
64
|
+
%x(#{cmd})
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
else
|
|
68
|
+
puts 'No dependencies were marked for installation.'
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
end
|
|
73
|
+
end
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# coding: utf-8
|
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
|
+
require 'puppet/moddeps/version'
|
|
5
|
+
|
|
6
|
+
Gem::Specification.new do |spec|
|
|
7
|
+
spec.name = "puppet-moddeps"
|
|
8
|
+
spec.version = Puppet::Moddeps::VERSION
|
|
9
|
+
spec.authors = ["GeneBean"]
|
|
10
|
+
spec.email = ["me@technicalissues.us"]
|
|
11
|
+
spec.summary = %q{Installs dependencies for a given Puppet module}
|
|
12
|
+
spec.description = <<-EOF
|
|
13
|
+
This gem will allow you to pull in all missing dependencies for a given
|
|
14
|
+
Puppet module. This is targeted specifically at private modules that have a
|
|
15
|
+
populated metadata.json file.
|
|
16
|
+
EOF
|
|
17
|
+
spec.homepage = "https://github.com/genebean/puppet-moddeps"
|
|
18
|
+
#spec.homepage = "http://rubygems.org/gems/puppet-moddeps"
|
|
19
|
+
spec.license = "New BSD"
|
|
20
|
+
|
|
21
|
+
spec.files = `git ls-files -z`.split("\x0")
|
|
22
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
|
23
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
|
24
|
+
spec.require_paths = ["lib"]
|
|
25
|
+
|
|
26
|
+
spec.add_development_dependency 'bundler', '~> 1.7'
|
|
27
|
+
spec.add_development_dependency 'codeclimate-test-reporter', '~> 0.4'
|
|
28
|
+
spec.add_development_dependency 'coveralls', '~> 0.7'
|
|
29
|
+
spec.add_development_dependency 'guard', '~> 2.10'
|
|
30
|
+
spec.add_development_dependency 'guard-rspec', '~> 4.5'
|
|
31
|
+
spec.add_development_dependency 'pry', '~> 0.10'
|
|
32
|
+
spec.add_development_dependency 'pry-nav', '~> 0.2'
|
|
33
|
+
spec.add_development_dependency 'pry-remote', '~> 0.1'
|
|
34
|
+
spec.add_development_dependency 'rake', '~> 10.4'
|
|
35
|
+
spec.add_development_dependency 'rspec', '~> 3.1'
|
|
36
|
+
spec.add_development_dependency 'rspec-nc', '~> 0.2'
|
|
37
|
+
|
|
38
|
+
spec.add_runtime_dependency 'json', '~> 1.8', '>= 1.8.1'
|
|
39
|
+
end
|
data/scripts/pretest.sh
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
chmod 777 /etc/puppet/modules
|
|
4
|
+
|
|
5
|
+
moddir='/etc/puppet/modules/fake_private_module'
|
|
6
|
+
|
|
7
|
+
if [ -d "$moddir" ]; then rm -rf "$moddir"; fi
|
|
8
|
+
|
|
9
|
+
mkdir "$moddir"
|
|
10
|
+
|
|
11
|
+
cat > "$moddir/metadata.json" <<EOF
|
|
12
|
+
{
|
|
13
|
+
"dependencies": [
|
|
14
|
+
{"name":"puppetlabs/stdlib","version_requirement":">= 2.4.0"},
|
|
15
|
+
{"name":"puppetlabs/concat","version_requirement":">= 1.1.1"},
|
|
16
|
+
{"name":"puppetlabs/firewall","version_requirement":">= 1.3.0"}
|
|
17
|
+
]
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
EOF
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
## This script should be executed as the vagrant user
|
|
4
|
+
|
|
5
|
+
if [ -f '/vagrant/GitConfig' ]; then
|
|
6
|
+
cp /vagrant/GitConfig ~/.gitconfig
|
|
7
|
+
fi
|
|
8
|
+
|
|
9
|
+
# Setup RVM
|
|
10
|
+
gpg --keyserver hkp://keys.gnupg.net --recv-keys D39DC0E3
|
|
11
|
+
curl -L get.rvm.io | bash -s stable
|
|
12
|
+
source ~/.profile
|
|
13
|
+
|
|
14
|
+
# Setup Ruby 1.9.3
|
|
15
|
+
rvm install 1.9.3
|
|
16
|
+
rvm use 1.9.3
|
|
17
|
+
|
|
18
|
+
# Setup project
|
|
19
|
+
gem install bundler --no-ri --no-rdoc
|
|
20
|
+
cd puppet-moddeps
|
|
21
|
+
bundle install
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe Puppet::Moddeps do
|
|
4
|
+
|
|
5
|
+
describe '.installDeps(puppet_module)' do
|
|
6
|
+
|
|
7
|
+
context 'with no parameters' do
|
|
8
|
+
it 'should print usage info' do
|
|
9
|
+
|
|
10
|
+
expect { Puppet::Moddeps.installDeps() }.to output(/Usage.*/).to_stdout
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
context 'with two or more parameters' do
|
|
15
|
+
it 'should print usage info' do
|
|
16
|
+
expect { Puppet::Moddeps.installDeps('arg1', 'arg2') }.to output(/Usage.*/).to_stdout
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
context 'with one parameter' do
|
|
21
|
+
it 'should print usage if multiple arguments come in as an array' do
|
|
22
|
+
params = ['arg1', 'arg2']
|
|
23
|
+
expect { Puppet::Moddeps.installDeps(params) }.to output(/Usage.*/).to_stdout
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
it 'should print usage if an empty array is passed in' do
|
|
27
|
+
params = []
|
|
28
|
+
expect { Puppet::Moddeps.installDeps(params) }.to output(/Usage.*/).to_stdout
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
it 'should fail if the parameter is not an installed module' do
|
|
32
|
+
expect { Puppet::Moddeps.installDeps('fake_missing_module') }.to output(/Can\'t find fake_missing_module in.*/).to_stdout
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
it "should parse metadata.json" do
|
|
36
|
+
deps = Puppet::Moddeps.parseMetadata('fake_private_module')
|
|
37
|
+
expect(deps).to include('puppetlabs-stdlib', 'puppetlabs-concat', 'puppetlabs-firewall')
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
it "should install each module in provided array" do
|
|
41
|
+
Puppet::Moddeps.installDeps('fake_private_module')
|
|
42
|
+
basedir = '/etc/puppet/modules'
|
|
43
|
+
expect("#{basedir}/stdlib").to exist
|
|
44
|
+
expect("#{basedir}/concat").to exist
|
|
45
|
+
expect("#{basedir}/firewall").to exist
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
end # end describe '.installDeps(puppet_module)'
|
|
51
|
+
|
|
52
|
+
#after(:all) do
|
|
53
|
+
# %x(sudo rm -rf /etc/puppet/modules/*)
|
|
54
|
+
#end
|
|
55
|
+
|
|
56
|
+
end
|
data/spec/spec_helper.rb
ADDED
metadata
ADDED
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: puppet-moddeps
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.3.1
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- GeneBean
|
|
8
|
+
autorequire:
|
|
9
|
+
bindir: bin
|
|
10
|
+
cert_chain: []
|
|
11
|
+
date: 2014-12-29 00:00:00.000000000 Z
|
|
12
|
+
dependencies:
|
|
13
|
+
- !ruby/object:Gem::Dependency
|
|
14
|
+
name: bundler
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
16
|
+
requirements:
|
|
17
|
+
- - ~>
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: '1.7'
|
|
20
|
+
type: :development
|
|
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: codeclimate-test-reporter
|
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
|
30
|
+
requirements:
|
|
31
|
+
- - ~>
|
|
32
|
+
- !ruby/object:Gem::Version
|
|
33
|
+
version: '0.4'
|
|
34
|
+
type: :development
|
|
35
|
+
prerelease: false
|
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
+
requirements:
|
|
38
|
+
- - ~>
|
|
39
|
+
- !ruby/object:Gem::Version
|
|
40
|
+
version: '0.4'
|
|
41
|
+
- !ruby/object:Gem::Dependency
|
|
42
|
+
name: coveralls
|
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
|
44
|
+
requirements:
|
|
45
|
+
- - ~>
|
|
46
|
+
- !ruby/object:Gem::Version
|
|
47
|
+
version: '0.7'
|
|
48
|
+
type: :development
|
|
49
|
+
prerelease: false
|
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
+
requirements:
|
|
52
|
+
- - ~>
|
|
53
|
+
- !ruby/object:Gem::Version
|
|
54
|
+
version: '0.7'
|
|
55
|
+
- !ruby/object:Gem::Dependency
|
|
56
|
+
name: guard
|
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
|
58
|
+
requirements:
|
|
59
|
+
- - ~>
|
|
60
|
+
- !ruby/object:Gem::Version
|
|
61
|
+
version: '2.10'
|
|
62
|
+
type: :development
|
|
63
|
+
prerelease: false
|
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
+
requirements:
|
|
66
|
+
- - ~>
|
|
67
|
+
- !ruby/object:Gem::Version
|
|
68
|
+
version: '2.10'
|
|
69
|
+
- !ruby/object:Gem::Dependency
|
|
70
|
+
name: guard-rspec
|
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
|
72
|
+
requirements:
|
|
73
|
+
- - ~>
|
|
74
|
+
- !ruby/object:Gem::Version
|
|
75
|
+
version: '4.5'
|
|
76
|
+
type: :development
|
|
77
|
+
prerelease: false
|
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
79
|
+
requirements:
|
|
80
|
+
- - ~>
|
|
81
|
+
- !ruby/object:Gem::Version
|
|
82
|
+
version: '4.5'
|
|
83
|
+
- !ruby/object:Gem::Dependency
|
|
84
|
+
name: pry
|
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
|
86
|
+
requirements:
|
|
87
|
+
- - ~>
|
|
88
|
+
- !ruby/object:Gem::Version
|
|
89
|
+
version: '0.10'
|
|
90
|
+
type: :development
|
|
91
|
+
prerelease: false
|
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
93
|
+
requirements:
|
|
94
|
+
- - ~>
|
|
95
|
+
- !ruby/object:Gem::Version
|
|
96
|
+
version: '0.10'
|
|
97
|
+
- !ruby/object:Gem::Dependency
|
|
98
|
+
name: pry-nav
|
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
|
100
|
+
requirements:
|
|
101
|
+
- - ~>
|
|
102
|
+
- !ruby/object:Gem::Version
|
|
103
|
+
version: '0.2'
|
|
104
|
+
type: :development
|
|
105
|
+
prerelease: false
|
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
107
|
+
requirements:
|
|
108
|
+
- - ~>
|
|
109
|
+
- !ruby/object:Gem::Version
|
|
110
|
+
version: '0.2'
|
|
111
|
+
- !ruby/object:Gem::Dependency
|
|
112
|
+
name: pry-remote
|
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
|
114
|
+
requirements:
|
|
115
|
+
- - ~>
|
|
116
|
+
- !ruby/object:Gem::Version
|
|
117
|
+
version: '0.1'
|
|
118
|
+
type: :development
|
|
119
|
+
prerelease: false
|
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
121
|
+
requirements:
|
|
122
|
+
- - ~>
|
|
123
|
+
- !ruby/object:Gem::Version
|
|
124
|
+
version: '0.1'
|
|
125
|
+
- !ruby/object:Gem::Dependency
|
|
126
|
+
name: rake
|
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
|
128
|
+
requirements:
|
|
129
|
+
- - ~>
|
|
130
|
+
- !ruby/object:Gem::Version
|
|
131
|
+
version: '10.4'
|
|
132
|
+
type: :development
|
|
133
|
+
prerelease: false
|
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
135
|
+
requirements:
|
|
136
|
+
- - ~>
|
|
137
|
+
- !ruby/object:Gem::Version
|
|
138
|
+
version: '10.4'
|
|
139
|
+
- !ruby/object:Gem::Dependency
|
|
140
|
+
name: rspec
|
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
|
142
|
+
requirements:
|
|
143
|
+
- - ~>
|
|
144
|
+
- !ruby/object:Gem::Version
|
|
145
|
+
version: '3.1'
|
|
146
|
+
type: :development
|
|
147
|
+
prerelease: false
|
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
149
|
+
requirements:
|
|
150
|
+
- - ~>
|
|
151
|
+
- !ruby/object:Gem::Version
|
|
152
|
+
version: '3.1'
|
|
153
|
+
- !ruby/object:Gem::Dependency
|
|
154
|
+
name: rspec-nc
|
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
|
156
|
+
requirements:
|
|
157
|
+
- - ~>
|
|
158
|
+
- !ruby/object:Gem::Version
|
|
159
|
+
version: '0.2'
|
|
160
|
+
type: :development
|
|
161
|
+
prerelease: false
|
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
163
|
+
requirements:
|
|
164
|
+
- - ~>
|
|
165
|
+
- !ruby/object:Gem::Version
|
|
166
|
+
version: '0.2'
|
|
167
|
+
- !ruby/object:Gem::Dependency
|
|
168
|
+
name: json
|
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
|
170
|
+
requirements:
|
|
171
|
+
- - ~>
|
|
172
|
+
- !ruby/object:Gem::Version
|
|
173
|
+
version: '1.8'
|
|
174
|
+
- - ! '>='
|
|
175
|
+
- !ruby/object:Gem::Version
|
|
176
|
+
version: 1.8.1
|
|
177
|
+
type: :runtime
|
|
178
|
+
prerelease: false
|
|
179
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
180
|
+
requirements:
|
|
181
|
+
- - ~>
|
|
182
|
+
- !ruby/object:Gem::Version
|
|
183
|
+
version: '1.8'
|
|
184
|
+
- - ! '>='
|
|
185
|
+
- !ruby/object:Gem::Version
|
|
186
|
+
version: 1.8.1
|
|
187
|
+
description: ! " This gem will allow you to pull in all missing dependencies for
|
|
188
|
+
a given\n Puppet module. This is targeted specifically at private modules that
|
|
189
|
+
have a\n populated metadata.json file.\n"
|
|
190
|
+
email:
|
|
191
|
+
- me@technicalissues.us
|
|
192
|
+
executables:
|
|
193
|
+
- puppet-moddeps
|
|
194
|
+
extensions: []
|
|
195
|
+
extra_rdoc_files: []
|
|
196
|
+
files:
|
|
197
|
+
- .coveralls.yml
|
|
198
|
+
- .gitignore
|
|
199
|
+
- .travis.yml
|
|
200
|
+
- Gemfile
|
|
201
|
+
- Gemfile.lock
|
|
202
|
+
- Guardfile
|
|
203
|
+
- LICENSE
|
|
204
|
+
- README.md
|
|
205
|
+
- Rakefile
|
|
206
|
+
- Vagrantfile
|
|
207
|
+
- bin/puppet-moddeps
|
|
208
|
+
- lib/puppet/moddeps.rb
|
|
209
|
+
- lib/puppet/moddeps/version.rb
|
|
210
|
+
- puppet-moddeps.gemspec
|
|
211
|
+
- scripts/pretest.sh
|
|
212
|
+
- scripts/vagrant-user.sh
|
|
213
|
+
- spec/moddeps_spec.rb
|
|
214
|
+
- spec/spec_helper.rb
|
|
215
|
+
homepage: https://github.com/genebean/puppet-moddeps
|
|
216
|
+
licenses:
|
|
217
|
+
- New BSD
|
|
218
|
+
metadata: {}
|
|
219
|
+
post_install_message:
|
|
220
|
+
rdoc_options: []
|
|
221
|
+
require_paths:
|
|
222
|
+
- lib
|
|
223
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
224
|
+
requirements:
|
|
225
|
+
- - ! '>='
|
|
226
|
+
- !ruby/object:Gem::Version
|
|
227
|
+
version: '0'
|
|
228
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
229
|
+
requirements:
|
|
230
|
+
- - ! '>='
|
|
231
|
+
- !ruby/object:Gem::Version
|
|
232
|
+
version: '0'
|
|
233
|
+
requirements: []
|
|
234
|
+
rubyforge_project:
|
|
235
|
+
rubygems_version: 2.4.5
|
|
236
|
+
signing_key:
|
|
237
|
+
specification_version: 4
|
|
238
|
+
summary: Installs dependencies for a given Puppet module
|
|
239
|
+
test_files:
|
|
240
|
+
- spec/moddeps_spec.rb
|
|
241
|
+
- spec/spec_helper.rb
|