puppet-moddeps 1.2.0 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,2 +0,0 @@
1
- service_name: travis-ci
2
-
@@ -1,103 +0,0 @@
1
- require 'rubygems'
2
- require 'json'
3
- require 'rbconfig'
4
-
5
- module Puppet
6
- module Moddeps
7
- class InstallDeps
8
-
9
- attr_reader :module_path, :deps
10
-
11
- def initialize(path=nil, deps=nil)
12
- if path and path.is_a?(String)
13
- @module_path = path
14
- elsif path
15
- abort('The provided path was not a string.')
16
- else
17
- separator = self.path_separator(RbConfig::CONFIG['host_os'])
18
- @module_path = %x(puppet config print modulepath).split(separator)[0]
19
- end
20
-
21
- if deps and deps.is_a?(Array)
22
- @deps = deps
23
- elsif deps
24
- abort('The provided dependency list was not an array.')
25
- else
26
- @deps = []
27
- end
28
- end
29
-
30
- def install(*puppet_module)
31
-
32
- if puppet_module.size >=1 and puppet_module[0].is_a?(Array)
33
- args = puppet_module[0]
34
- else
35
- args = puppet_module
36
- end
37
-
38
- if args.size == 1
39
- if installed?(args[0])
40
- self.parse_metadata(args[0])
41
- self.install_modules
42
- else
43
- puts "Can't find #{args[0]} in #{@module_path}"
44
- end
45
- else
46
- self.help
47
- end
48
- end
49
-
50
- def help
51
- puts 'Usage: puppet-moddeps module'
52
- puts ' Call puppet-moddeps with the name of one installed module'
53
- end
54
-
55
- def installed?(module_name)
56
- File.directory?("#{@module_path}/#{module_name}")
57
- end
58
-
59
- def path_separator(os_string)
60
- if (/cygwin|mswin|mingw|bccwin|wince|emx/ =~ os_string) != nil
61
- separator = ';'
62
- else
63
- separator = ':'
64
- end
65
- end
66
-
67
- def parse_metadata(module_name)
68
- metadata = File.read("#{@module_path}/#{module_name}/metadata.json")
69
- data = JSON.parse(metadata)
70
- self.parse_deps(data)
71
- end
72
-
73
- def parse_deps(data)
74
- @deps.clear
75
-
76
- data['dependencies'].each do |dep|
77
- depname = dep["name"].sub '/', '-'
78
- @deps.push( depname )
79
- end
80
- end
81
-
82
- def install_modules
83
- if @deps.size > 0
84
-
85
- puts "Modules will be installed into #{module_path}"
86
-
87
- @deps.each do |dep|
88
- if self.installed?(dep)
89
- puts "#{dep} is already installed, skipping."
90
- else
91
- cmd = "puppet module install #{dep}"
92
- puts "Running \"#{cmd}\"..."
93
- %x(#{cmd})
94
- end
95
- end
96
- else
97
- puts 'No dependencies were marked for installation.'
98
- end
99
- end
100
-
101
- end
102
- end
103
- end
@@ -1,12 +0,0 @@
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 project
10
- gem install bundler --no-ri --no-rdoc
11
- cd puppet-moddeps
12
- bundle install --jobs=3 --retry=3
@@ -1,169 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Puppet::Moddeps::InstallDeps do
4
-
5
- before(:all) do
6
- puts 'Downloading the puppetlabs-apache module...'
7
-
8
- %x(puppet module install puppetlabs-apache --ignore-dependencies)
9
-
10
- @dirs_to_clean = ['apache']
11
-
12
- if (/cygwin|mswin|mingw|bccwin|wince|emx/ =~ RbConfig::CONFIG['host_os']) != nil
13
- @expected_path = %x(puppet config print modulepath).split(';')[0]
14
- else
15
- @expected_path = %x(puppet config print modulepath).split(':')[0]
16
- end
17
-
18
- puts "The expected module path is: #{@expected_path}"
19
- end
20
-
21
- describe '.initialize(path, deps)' do
22
-
23
- it 'should set the default module path and deps list' do
24
- base_obj = Puppet::Moddeps::InstallDeps.new
25
-
26
- expect(base_obj.module_path).to eq(@expected_path)
27
- expect(base_obj.deps).to match_array []
28
- end
29
-
30
- it 'should use the provided values' do
31
- base_obj = Puppet::Moddeps::InstallDeps.new('/tmp', ['dep1', 'dep2'])
32
- expect(base_obj.module_path).to eq('/tmp')
33
- expect(base_obj.deps).to contain_exactly('dep1', 'dep2')
34
- end
35
-
36
- it 'should fail when an array is passed to path' do
37
- expect { Puppet::Moddeps::InstallDeps.new(['dep1', 'dep2']) }.to raise_error(SystemExit, 'The provided path was not a string.' )
38
- end
39
-
40
- it 'should fail when an string is passed to deps' do
41
- expect { Puppet::Moddeps::InstallDeps.new('arg1', 'arg2') }.to raise_error(SystemExit, 'The provided dependency list was not an array.' )
42
- end
43
-
44
- end
45
-
46
- describe '.install(puppet_module) feedback verification' do
47
-
48
- before(:each) do
49
- @base_object = Puppet::Moddeps::InstallDeps.new
50
- end
51
-
52
- context 'with no parameters' do
53
- it 'should print usage info' do
54
- expect { @base_object.install }.to output(/Usage.*/).to_stdout
55
- end
56
- end
57
-
58
- context 'with two or more parameters' do
59
- it 'should print usage info' do
60
- expect { @base_object.install('arg1', 'arg2') }.to output(/Usage.*/).to_stdout
61
- end
62
- end
63
-
64
- context 'with one parameter' do
65
- it 'should print usage if multiple arguments come in as an array' do
66
- params = ['arg1', 'arg2']
67
- expect { @base_object.install(params) }.to output(/Usage.*/).to_stdout
68
- end
69
-
70
- it 'should print usage if an empty array is passed in' do
71
- params = []
72
- expect { @base_object.install(params) }.to output(/Usage.*/).to_stdout
73
- end
74
-
75
- it 'should fail if the parameter is not an installed module' do
76
- expect { @base_object.install('fake_missing_module') }.to output(/Can\'t find fake_missing_module in.*/).to_stdout
77
- end
78
-
79
- end
80
-
81
- end
82
-
83
- describe '.path_separator' do
84
-
85
- subject { Puppet::Moddeps::InstallDeps.new }
86
-
87
- context 'on Windows' do
88
- it 'should return ; as the path separator' do
89
- expect(subject.path_separator('mingw32')).to eq(';')
90
- end
91
- end
92
-
93
- context 'on Linux' do
94
- it 'should return : as the path separator' do
95
- expect(subject.path_separator('linux-gnu')).to eq(':')
96
- end
97
- end
98
- end
99
-
100
- describe '.parse_metadata' do
101
-
102
- it "should parse metadata.json" do
103
- base_object = Puppet::Moddeps::InstallDeps.new
104
-
105
- base_object.parse_metadata('apache')
106
-
107
- expect(base_object.deps).to contain_exactly('puppetlabs-stdlib', 'puppetlabs-concat')
108
- end
109
-
110
- end
111
-
112
- describe '.install_modules' do
113
-
114
- before(:all) do
115
- @base_object = Puppet::Moddeps::InstallDeps.new
116
- end
117
-
118
- it 'should say the module is already installed' do
119
- @base_object.instance_variable_set(:@deps, ['apache'])
120
-
121
- expect { @base_object.install_modules }.to output(/apache is already installed.*/).to_stdout
122
- end
123
-
124
- it 'should say nothing to install' do
125
- @base_object.instance_variable_set(:@deps, [])
126
-
127
- expect { @base_object.install_modules }.to output(/No dependencies were marked for installation.*/).to_stdout
128
- end
129
-
130
- end
131
-
132
- describe '.install actual Puppet modules' do
133
-
134
- it "should install each module in provided array" do
135
- base_object = Puppet::Moddeps::InstallDeps.new
136
-
137
- base_object.install('apache')
138
-
139
- basedir = base_object.module_path
140
-
141
- base_object.deps.each do |dep|
142
- mod_dir = dep.split('-')[1]
143
- @dirs_to_clean.push(mod_dir)
144
-
145
- mod_path = "#{basedir}/#{mod_dir}"
146
- expect(File.directory?(mod_path)).to eql(true)
147
- end
148
-
149
- end
150
-
151
- end
152
-
153
- after(:all) do
154
-
155
- @dirs_to_clean.each do |mod_dir|
156
- path_to_clean = @expected_path + "/#{mod_dir}"
157
-
158
- if (/cygwin|mswin|mingw|bccwin|wince|emx/ =~ RbConfig::CONFIG['host_os']) != nil
159
- puts "Removing #{path_to_clean.gsub '/', '\\'}"
160
- %x(rmdir /Q /S #{path_to_clean.gsub '/', '\\'})
161
- else
162
- puts "Removing #{path_to_clean}"
163
- %x(rm -rf #{path_to_clean})
164
- end
165
-
166
- end
167
- end
168
-
169
- end