falkorlib 0.3.3 → 0.3.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +3 -1
- data/falkorlib.gemspec +1 -0
- data/lib/falkorlib/common.rb +74 -61
- data/lib/falkorlib/puppet/modules.rb +124 -91
- data/lib/falkorlib/tasks/puppet_modules.rake +53 -18
- data/lib/falkorlib/tasks/rspec.rake +1 -1
- data/lib/falkorlib/version.rb +1 -1
- data/spec/falkorlib/puppet_modules_spec.rb +3 -8
- metadata +15 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 04f2741d9368f17031d85aaf70162b520885251a
|
4
|
+
data.tar.gz: 9a2ff37f2459c2c9ec3014ea5c380cb4ccba4eb2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3a11240f50dec10daa3d9a5bf36ffc95e6c6b314e17a97731e2651db4ed227af5864118e8111599a9aa612032628191555e21796f47559fa4638af86539fdc60
|
7
|
+
data.tar.gz: be5cb38f44c4926a785f50f2b932f6077b83de6b61cade921e8a685226b8e553b8c5103a8c2e8823ae5a479dbe1d9a1340117625a0e691b331b778ed9c742c47
|
data/Gemfile.lock
CHANGED
@@ -1,9 +1,10 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
falkorlib (0.3.
|
4
|
+
falkorlib (0.3.4)
|
5
5
|
awesome_print (~> 1.2)
|
6
6
|
configatron (~> 3.2)
|
7
|
+
diffy (>= 3.0)
|
7
8
|
git_remote_branch (~> 0)
|
8
9
|
json (~> 1.8)
|
9
10
|
license-generator (~> 0)
|
@@ -22,6 +23,7 @@ GEM
|
|
22
23
|
coderay (1.1.0)
|
23
24
|
configatron (3.2.0)
|
24
25
|
diff-lcs (1.1.3)
|
26
|
+
diffy (3.0.6)
|
25
27
|
docile (1.1.5)
|
26
28
|
ethon (0.7.0)
|
27
29
|
ffi (>= 1.3.0)
|
data/falkorlib.gemspec
CHANGED
@@ -132,6 +132,7 @@ Gem::Specification.new do |s|
|
|
132
132
|
s.add_runtime_dependency("awesome_print", "~> 1.2")
|
133
133
|
s.add_runtime_dependency("json", "~> 1.8")
|
134
134
|
s.add_runtime_dependency("license-generator", '~> 0')
|
135
|
+
s.add_runtime_dependency("diffy", '>= 3.0')
|
135
136
|
|
136
137
|
#
|
137
138
|
# One call to add_dependency('gem_name', 'gem version requirement') for each
|
data/lib/falkorlib/common.rb
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
2
|
################################################################################
|
3
|
-
# Time-stamp: <
|
3
|
+
# Time-stamp: <Sat 2014-08-30 21:05 svarrette>
|
4
4
|
################################################################################
|
5
5
|
|
6
6
|
require "falkorlib"
|
7
7
|
require 'open3'
|
8
8
|
require 'erb' # required for module generation
|
9
|
-
|
9
|
+
require 'diffy'
|
10
10
|
|
11
11
|
module FalkorLib #:nodoc:
|
12
12
|
|
@@ -170,7 +170,7 @@ module FalkorLib #:nodoc:
|
|
170
170
|
# Supported options:
|
171
171
|
# :only_files [boolean]: list only files in the glob
|
172
172
|
# :only_dirs [boolean]: list only directories in the glob
|
173
|
-
# :pattern_include [array of strings]: pattern(s) to include for listing
|
173
|
+
# :pattern_include [array of strings]: pattern(s) to include for listing
|
174
174
|
# :pattern_exclude [array of strings]: pattern(s) to exclude for listing
|
175
175
|
# :text [string]: text to put
|
176
176
|
def list_items(glob_pattern, options = {})
|
@@ -207,8 +207,8 @@ module FalkorLib #:nodoc:
|
|
207
207
|
text = options[:text].nil? ? "select the index" : options[:text]
|
208
208
|
default_idx = options[:default].nil? ? 0 : options[:default]
|
209
209
|
raise SystemExit.new('Empty list') if index == 1
|
210
|
-
|
211
|
-
|
210
|
+
#ap list
|
211
|
+
#ap raw_list
|
212
212
|
# puts list.to_yaml
|
213
213
|
# answer = ask("=> #{text}", "#{default_idx}")
|
214
214
|
# raise SystemExit.new('exiting selection') if answer == '0'
|
@@ -264,10 +264,10 @@ module FalkorLib #:nodoc:
|
|
264
264
|
# feed ERB files which **should** have the extension .erb.
|
265
265
|
# The initialization is performed as follows:
|
266
266
|
# * a rsync process is initiated to duplicate the directory structure
|
267
|
-
# and the symlinks, and exclude .erb files
|
267
|
+
# and the symlinks, and exclude .erb files
|
268
268
|
# * each erb files (thus with extension .erb) is interpreted, the
|
269
269
|
# corresponding file is generated without the .erb extension
|
270
|
-
# Supported options:
|
270
|
+
# Supported options:
|
271
271
|
# :erb_exclude [array of strings]: pattern(s) to exclude from erb file
|
272
272
|
# interpretation and thus to copy 'as is'
|
273
273
|
def init_from_template(templatedir, rootdir, config = {}, options = {})
|
@@ -277,65 +277,78 @@ module FalkorLib #:nodoc:
|
|
277
277
|
run %{ mkdir -p #{rootdir} } unless File.directory?( rootdir )
|
278
278
|
run %{ rsync --exclude '*.erb' -avzu #{templatedir}/ #{rootdir}/ }
|
279
279
|
Dir["#{templatedir}/**/*.erb"].each do |erbfile|
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
end
|
296
|
-
# Let's go
|
297
|
-
info "updating '#{relative_outdir.to_s}/#{filename}'"
|
298
|
-
puts " using ERB template '#{erbfile}'"
|
299
|
-
template = File.read("#{erbfile}")
|
300
|
-
output = ERB.new(template, nil, '<>')
|
301
|
-
if File.exists?( outfile )
|
302
|
-
warn "the file '#{outfile}' already exists and will be overwritten."
|
303
|
-
error "TODO: watch the diff ;)"
|
304
|
-
else
|
305
|
-
watch = ask( cyan(" ==> Do you want to see the generated file before commiting the writing (y|N)"), 'No')
|
306
|
-
puts output.result(binding) if watch =~ /y.*/i
|
307
|
-
end
|
308
|
-
proceed = ask( cyan(" ==> proceed with the writing (Y|n)"), 'Yes')
|
309
|
-
next if proceed =~ /n.*/i
|
310
|
-
info("=> writing #{outfile}")
|
311
|
-
File.open("#{outfile}", "w+") do |f|
|
312
|
-
f.puts output.result(binding)
|
280
|
+
relative_outdir = Pathname.new( File.realpath( File.dirname(erbfile) )).relative_path_from Pathname.new(templatedir)
|
281
|
+
filename = File.basename(erbfile, '.erb')
|
282
|
+
outdir = File.realpath( File.join(rootdir, relative_outdir.to_s) )
|
283
|
+
outfile = File.join(outdir, filename)
|
284
|
+
unless options[:erb_exclude].nil?
|
285
|
+
exclude_entry = false
|
286
|
+
options[:erb_exclude].each do |pattern|
|
287
|
+
exclude_entry |= erbfile =~ /#{pattern}/
|
288
|
+
end
|
289
|
+
if exclude_entry
|
290
|
+
info "copying non-interpreted ERB file"
|
291
|
+
# copy this file since it has been probably excluded from teh rsync process
|
292
|
+
run %{ cp #{erbfile} #{outdir}/ }
|
293
|
+
next
|
294
|
+
end
|
313
295
|
end
|
314
|
-
|
296
|
+
# Let's go
|
297
|
+
info "updating '#{relative_outdir.to_s}/#{filename}'"
|
298
|
+
puts " using ERB template '#{erbfile}'"
|
299
|
+
write_from_erb_template(erbfile, outfile, config)
|
300
|
+
end
|
315
301
|
end
|
316
302
|
|
303
|
+
## ERB generation of the file destfile usung the source template file `erbsrc`
|
304
|
+
def write_from_erb_template(erbfile, outfile, config = {})
|
305
|
+
error "Unable to find the template file #{erbfile}" unless File.exists? (erbfile )
|
306
|
+
template = File.read("#{erbfile}")
|
307
|
+
output = ERB.new(template, nil, '<>')
|
308
|
+
content = output.result(binding)
|
309
|
+
if File.exists?( outfile )
|
310
|
+
ref = File.read( outfile )
|
311
|
+
return if ref == content
|
312
|
+
warn "the file '#{outfile}' already exists and will be overwritten."
|
313
|
+
warn "Expected difference: \n------"
|
314
|
+
Diffy::Diff.default_format = :color
|
315
|
+
puts Diffy::Diff.new(ref, content, :context => 1)
|
316
|
+
else
|
317
|
+
watch = ask( cyan(" ==> Do you want to see the generated file before commiting the writing (y|N)"), 'No')
|
318
|
+
puts content if watch =~ /y.*/i
|
319
|
+
end
|
320
|
+
proceed = ask( cyan(" ==> proceed with the writing (Y|n)"), 'Yes')
|
321
|
+
return if proceed =~ /n.*/i
|
322
|
+
info("=> writing #{outfile}")
|
323
|
+
File.open("#{outfile}", "w+") do |f|
|
324
|
+
f.puts content
|
325
|
+
end
|
326
|
+
end
|
327
|
+
|
328
|
+
|
329
|
+
|
317
330
|
### RVM init
|
318
331
|
def init_rvm(rootdir = Dir.pwd, gemset = '')
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
end
|
332
|
+
rvm_files = {
|
333
|
+
:version => File.join(rootdir, '.ruby-version'),
|
334
|
+
:gemset => File.join(rootdir, '.ruby-gemset')
|
335
|
+
}
|
336
|
+
unless File.exists?( "#{rvm_files[:version]}")
|
337
|
+
v = select_from(FalkorLib.config[:rvm][:rubies],
|
338
|
+
"Select RVM ruby to configure for this directory",
|
339
|
+
3)
|
340
|
+
File.open( rvm_files[:version], 'w') do |f|
|
341
|
+
f.puts v
|
342
|
+
end
|
343
|
+
end
|
344
|
+
unless File.exists?( "#{rvm_files[:gemset]}")
|
345
|
+
g = gemset.empty? ? ask("Enter RVM gemset name for this directory", File.basename(rootdir)) : gemset
|
346
|
+
File.open( rvm_files[:gemset], 'w') do |f|
|
347
|
+
f.puts g
|
348
|
+
end
|
349
|
+
end
|
350
|
+
|
351
|
+
end
|
339
352
|
|
340
353
|
|
341
354
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
2
|
################################################################################
|
3
|
-
# Time-stamp: <Sat 2014-08-30
|
3
|
+
# Time-stamp: <Sat 2014-08-30 21:23 svarrette>
|
4
4
|
################################################################################
|
5
5
|
# Interface for the main Puppet Module operations
|
6
6
|
#
|
@@ -29,6 +29,7 @@ module FalkorLib #:nodoc:
|
|
29
29
|
:source => '',
|
30
30
|
:project_page => '',
|
31
31
|
:issues_url => '',
|
32
|
+
:forge_url => 'https://forge.puppetlabs.com/',
|
32
33
|
:dependencies => [],
|
33
34
|
:operatingsystem_support => [],
|
34
35
|
:tags => []
|
@@ -53,23 +54,23 @@ module FalkorLib #:nodoc:
|
|
53
54
|
# Management of Puppet Modules operations
|
54
55
|
module Modules
|
55
56
|
|
56
|
-
|
57
|
-
|
57
|
+
module_function
|
58
|
+
|
58
59
|
def _get_classdefs(moduledir = Dir.pwd, type = 'classes')
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
60
|
+
name = File.basename( moduledir )
|
61
|
+
error "The module #{name} does not exist" unless File.directory?( moduledir )
|
62
|
+
t = case type
|
63
|
+
when /class*/i
|
64
|
+
'class'
|
65
|
+
when /def*/
|
66
|
+
'define'
|
67
|
+
else
|
68
|
+
''
|
69
|
+
end
|
70
|
+
error "Undefined type #{type}" if t.empty?
|
70
71
|
result = []
|
71
72
|
Dir["#{moduledir}/manifests/**/*.pp"].each do |ppfile|
|
72
|
-
|
73
|
+
File.read(ppfile).scan(/^[ \t]*#{t}[\s]+([0-9a-zA-z:-]+).*$/).each do |line|
|
73
74
|
result << line[0]
|
74
75
|
end
|
75
76
|
end
|
@@ -88,7 +89,7 @@ module FalkorLib #:nodoc:
|
|
88
89
|
config = {}
|
89
90
|
login = `whoami`.chomp
|
90
91
|
config[:name] = name unless name.empty?
|
91
|
-
|
92
|
+
moduledir = name.empty? ? rootdir : File.join(rootdir, name)
|
92
93
|
FalkorLib::Config::Puppet::Modules::DEFAULTS[:metadata].each do |k,v|
|
93
94
|
next if v.kind_of?(Array) or k == :license
|
94
95
|
next if k == :name and ! name.empty?
|
@@ -99,6 +100,8 @@ module FalkorLib #:nodoc:
|
|
99
100
|
File.basename(rootdir).gsub(/^puppet-/, '')
|
100
101
|
when :issues_url
|
101
102
|
config[:project_page].nil? ? v : "#{config[:project_page]}/issues"
|
103
|
+
when :forge_url
|
104
|
+
v + '/' + config[:name].gsub(/-/,'/')
|
102
105
|
when :description
|
103
106
|
config[:summary].nil? ? v : "#{config[:summary]}"
|
104
107
|
when :source
|
@@ -109,21 +112,24 @@ module FalkorLib #:nodoc:
|
|
109
112
|
config[k.to_sym] = ask( "\t" + sprintf("%-20s", "Module #{k}"), default_answer)
|
110
113
|
end
|
111
114
|
name = config[:name].gsub(/.*-/, '')
|
112
|
-
|
115
|
+
tags = ask("\tKeywords (comma-separated list of tags)", name)
|
113
116
|
config[:tags] = tags.split(',')
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
117
|
+
list_license = FalkorLib::Config::Puppet::Modules::DEFAULTS[:licenses]
|
118
|
+
default_license = FalkorLib::Config::Puppet::Modules::DEFAULTS[:metadata][:license]
|
119
|
+
idx = list_license.index(default_license) unless default_license.nil?
|
120
|
+
license = select_from(list_license,
|
118
121
|
'Select the license index for the Puppet module:',
|
119
|
-
|
122
|
+
idx.nil? ? 1 : idx + 1)
|
120
123
|
config[:license] = license.downcase unless license.empty?
|
121
124
|
puts "\t" + sprintf("%-20s", "Module License:") + config[:license]
|
125
|
+
|
126
|
+
# Supported platforms
|
127
|
+
config[:platforms] = [ 'debian' ]
|
122
128
|
|
123
129
|
#ap config
|
124
130
|
# Bootstrap the directory
|
125
131
|
templatedir = File.join( FalkorLib.templates, 'puppet', 'modules')
|
126
|
-
|
132
|
+
init_from_template(templatedir, moduledir, config, {
|
127
133
|
:erb_exclude => [ 'templates\/[^\/]*\.erb$' ]
|
128
134
|
})
|
129
135
|
# Rename the files / element templatename
|
@@ -143,8 +149,9 @@ module FalkorLib #:nodoc:
|
|
143
149
|
init_rvm(moduledir)
|
144
150
|
unless FalkorLib::GitFlow.init?(moduledir)
|
145
151
|
warn "Git [Flow] is not initialized in #{moduledir}."
|
146
|
-
a = ask("Proceed to git-flow initialization (
|
147
|
-
|
152
|
+
a = ask("Proceed to git-flow initialization (y|N)", 'No')
|
153
|
+
return if a =~ /n.*/i
|
154
|
+
FalkorLib::GitFlow.init(moduledir)
|
148
155
|
end
|
149
156
|
|
150
157
|
# Propose to commit the key files
|
@@ -165,96 +172,122 @@ module FalkorLib #:nodoc:
|
|
165
172
|
def parse(moduledir = Dir.pwd)
|
166
173
|
name = File.basename( moduledir )
|
167
174
|
error "The module #{name} does not exist" unless File.directory?( moduledir )
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
175
|
+
jsonfile = File.join( moduledir, 'metadata.json')
|
176
|
+
error "Unable to find #{jsonfile}" unless File.exist?( jsonfile )
|
177
|
+
metadata = JSON.parse( IO.read( jsonfile ) )
|
178
|
+
metadata["classes"] = classes(moduledir)
|
179
|
+
metadata["definitions"] = definitions(moduledir)
|
180
|
+
deps = deps(moduledir)
|
181
|
+
listed_deps = metadata["dependencies"]
|
182
|
+
missed_deps = []
|
183
|
+
metadata["dependencies"].each do |dep|
|
184
|
+
lib = dep["name"].gsub(/^[^\/-]+[\/-]/,'')
|
185
|
+
if deps.include?( lib )
|
186
|
+
deps.delete( lib )
|
187
|
+
else
|
188
|
+
unless lib =~ /stdlib/
|
189
|
+
warn "The library '#{dep["name"]}' is not analyzed as part of the #{name} module"
|
190
|
+
missed_deps << dep
|
191
|
+
end
|
192
|
+
end
|
193
|
+
end
|
194
|
+
if ! deps.empty?
|
195
|
+
deps.each do |l|
|
196
|
+
shortname = name.gsub(/.*-/, '')
|
197
|
+
shortmetaname = metadata["name"].gsub(/.*-/, '')
|
198
|
+
next if [name, metadata["name"], name.gsub(/.*-/, ''), metadata["name"].gsub(/.*-/, '') ].include? ( l )
|
199
|
+
warn "The module '#{l}' is missing in the dependencies thus added"
|
200
|
+
login = ask("[Github] login for the module '#{l}'")
|
201
|
+
version = ask("Version requirement (ex: '>=1.0.0 <2.0.0' or '1.2.3' or '1.x')")
|
202
|
+
metadata["dependencies"] << {
|
203
|
+
"name" => "#{login}/#{l}",
|
204
|
+
"version_requirement" => "#{version}"
|
205
|
+
}
|
206
|
+
end
|
207
|
+
end
|
208
|
+
info "Metadata configuration for the module '#{name}'"
|
209
|
+
puts JSON.pretty_generate( metadata )
|
210
|
+
warn "About to commit these changes in the '#{name}/metadata.json' file"
|
211
|
+
really_continue?
|
212
|
+
File.open(jsonfile,"w") do |f|
|
213
|
+
f.write JSON.pretty_generate( metadata )
|
214
|
+
end
|
215
|
+
metadata
|
216
|
+
end # parse
|
217
|
+
|
218
|
+
##Upgrade the repository README etc. with the
|
219
|
+
def upgrade(moduledir = Dir.pwd)
|
220
|
+
name = File.basename( moduledir )
|
221
|
+
error "The module #{name} does not exist" unless File.directory?( moduledir )
|
222
|
+
jsonfile = File.join( moduledir, 'metadata.json')
|
223
|
+
error "Unable to find #{jsonfile}" unless File.exist?( jsonfile )
|
224
|
+
metadata = JSON.parse( IO.read( jsonfile ) )
|
225
|
+
templatedir = File.join( FalkorLib.templates, 'puppet', 'modules')
|
226
|
+
# convert string keys to symbols
|
227
|
+
metadata.keys.each do |k|
|
228
|
+
metadata[(k.to_sym rescue k) || k] = metadata.delete(k)
|
229
|
+
end
|
230
|
+
metadata[:platforms] = []
|
231
|
+
metadata[:operatingsystem_support].each do |e|
|
232
|
+
metadata[:platforms] << e["operatingsystem"].downcase
|
207
233
|
end
|
208
234
|
|
209
|
-
|
235
|
+
[ 'README.md', 'doc/contributing.md'].each do |f|
|
236
|
+
info "Upgrade the content of #{f}"
|
237
|
+
write_from_erb_template(File.join(templatedir, "#{f}.erb"),
|
238
|
+
File.join(moduledir, f),
|
239
|
+
metadata)
|
240
|
+
end
|
241
|
+
end
|
242
|
+
|
243
|
+
|
210
244
|
|
211
245
|
|
212
246
|
#######
|
213
247
|
# Find the classes of a given module
|
214
248
|
###
|
215
249
|
def classes(moduledir = Dir.pwd)
|
216
|
-
|
250
|
+
_get_classdefs(moduledir, 'classes')
|
217
251
|
end
|
218
252
|
|
219
253
|
#######
|
220
254
|
# Find the definitions of a given module
|
221
255
|
###
|
222
256
|
def definitions(moduledir = Dir.pwd)
|
223
|
-
|
257
|
+
_get_classdefs(moduledir, 'definitions')
|
224
258
|
end
|
225
259
|
|
226
260
|
#######
|
227
261
|
# Find the dependencies of a given module
|
228
262
|
###
|
229
263
|
def deps(moduledir = Dir.pwd)
|
230
|
-
|
231
|
-
|
264
|
+
name = File.basename( moduledir )
|
265
|
+
error "The module #{name} does not exist" unless File.directory?( moduledir )
|
232
266
|
|
233
|
-
|
234
|
-
|
235
|
-
|
267
|
+
result = Array.new
|
268
|
+
result2 = Array.new
|
269
|
+
resulttmp = Array.new
|
236
270
|
|
237
|
-
|
271
|
+
result << name
|
238
272
|
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
273
|
+
while result != result2 do
|
274
|
+
resulttmp = result.dup
|
275
|
+
(result - result2).each do |x|
|
276
|
+
Dir["#{moduledir}/**/*.pp"].each do |ppfile|
|
277
|
+
File.read(ppfile).scan(/^[ \t]*include.*$|^[ \t]*require.*$/).each do |line|
|
278
|
+
if line.scan(">").length == 0
|
279
|
+
result << line.gsub(/^[ \t]*(include|require) ([\"']|)([0-9a-zA-Z:{$}\-]*)([\"']|)/, '\3').split("::").first
|
280
|
+
end
|
281
|
+
end
|
282
|
+
end
|
283
|
+
end
|
284
|
+
result.uniq!
|
285
|
+
result2 = resulttmp.dup
|
286
|
+
end
|
287
|
+
result.delete "#{name}"
|
288
|
+
result
|
255
289
|
end
|
256
290
|
|
257
|
-
|
258
|
-
end # module FalkorLib::Puppet::Modules
|
291
|
+
end
|
259
292
|
end # module FalkorLib::Puppet
|
260
293
|
end # module FalkorLib
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
2
|
################################################################################
|
3
3
|
# puppet_modules.rake - Special tasks for the management of Puppet modules
|
4
|
-
# Time-stamp: <
|
4
|
+
# Time-stamp: <Sat 2014-08-30 21:16 svarrette>
|
5
5
|
#
|
6
6
|
# Copyright (c) 2014 Sebastien Varrette <Sebastien.Varrette@uni.lu>
|
7
7
|
# http://varrette.gforge.uni.lu
|
@@ -13,31 +13,66 @@ require 'falkorlib/puppet'
|
|
13
13
|
|
14
14
|
#.....................
|
15
15
|
namespace :bootstrap do
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
16
|
+
#.....................
|
17
|
+
namespace :puppet do
|
18
|
+
|
19
|
+
########### bootstrap:puppet:module ###########
|
20
|
+
desc "Bootstrap a new Puppet module"
|
21
|
+
task :module, [:name] do |t, args|
|
22
|
+
info "#{t.comment}"
|
23
|
+
name = args.name == 'name' ? ask("Enter the module name") : args.name
|
24
|
+
error "You need to provide a module name" unless name != ''
|
25
|
+
error "The module name cannot contain spaces" if name =~ /\s+/
|
26
|
+
moduledir = File.join( FalkorLib.config[:puppet][:modulesdir], name)
|
27
|
+
dir = ask("Destination directory:", moduledir)
|
28
|
+
error "The module '#{name}' already exists" if File.directory?(dir)
|
29
|
+
FalkorLib::Puppet::Modules.init(dir)
|
30
|
+
end
|
31
31
|
|
32
32
|
|
33
|
-
|
33
|
+
end # namespace bootstrap:puppet
|
34
34
|
end # namespace bootstrap
|
35
35
|
|
36
36
|
|
37
37
|
|
38
38
|
#.....................
|
39
39
|
namespace :puppet do
|
40
|
-
|
40
|
+
include FalkorLib::Common
|
41
|
+
|
42
|
+
if command?('puppet')
|
43
|
+
#.....................
|
44
|
+
namespace :module do
|
45
|
+
|
46
|
+
########### puppet:module:build ###########
|
47
|
+
desc "Build the puppet module to publish it on the Puppet Forge"
|
48
|
+
task :build do |t|
|
49
|
+
info "#{t.comment}"
|
50
|
+
run %{ puppet module build }
|
51
|
+
warn "you can now upload the generated file on the puppet forge"
|
52
|
+
warn " https://forge.puppetlabs.com/"
|
53
|
+
end # task build
|
54
|
+
|
55
|
+
########### puppet:module:parse ###########
|
56
|
+
desc "Parse a given module"
|
57
|
+
task :parse do |t|
|
58
|
+
info "#{t.comment}"
|
59
|
+
FalkorLib::Puppet::Modules.parse()
|
60
|
+
end # task parse
|
41
61
|
|
42
62
|
|
63
|
+
end
|
64
|
+
end # namespace module
|
43
65
|
end # namespace puppet
|
66
|
+
|
67
|
+
#.....................
|
68
|
+
namespace :module do
|
69
|
+
namespace :upgrade do
|
70
|
+
########### module:upgrade:readme ###########
|
71
|
+
task :readme do |t|
|
72
|
+
#info "#{t.comment}"
|
73
|
+
FalkorLib::Puppet::Modules.upgrade()
|
74
|
+
end
|
75
|
+
|
76
|
+
|
77
|
+
end # namespace upgrade
|
78
|
+
end # namespace module
|
@@ -32,7 +32,7 @@ begin
|
|
32
32
|
# Glob pattern to match files.
|
33
33
|
#t.pattern = "spec/**/test_*.rb"
|
34
34
|
#t.pattern = "spec/**/*_spec.rb"
|
35
|
-
|
35
|
+
t.pattern = "spec/**/puppet*spec.rb"
|
36
36
|
|
37
37
|
# Whether or not to fail Rake when an error occurs (typically when
|
38
38
|
# examples fail).
|
data/lib/falkorlib/version.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
#########################################
|
3
3
|
# puppet_modules_spec.rb
|
4
4
|
# @author Sebastien Varrette <Sebastien.Varrette@uni.lu>
|
5
|
-
# Time-stamp: <Sat 2014-08-30
|
5
|
+
# Time-stamp: <Sat 2014-08-30 21:23 svarrette>
|
6
6
|
#
|
7
7
|
# @description Check the Puppet Modules operations
|
8
8
|
#
|
@@ -37,13 +37,8 @@ describe FalkorLib::Puppet::Modules do
|
|
37
37
|
|
38
38
|
it "#init -- create a puppet module" do
|
39
39
|
# Prepare answer to the questions
|
40
|
-
Array.new(
|
41
|
-
|
42
|
-
Array.new(14).each { |e| STDIN.should_receive(:gets).and_return('') }
|
43
|
-
STDIN.should_receive(:gets).and_return('') ## RVM version
|
44
|
-
STDIN.should_receive(:gets).and_return(name) ## RVM gemset
|
45
|
-
STDIN.should_receive(:gets).and_return('No')
|
46
|
-
|
40
|
+
Array.new(32).each { |e| STDIN.should_receive(:gets).and_return('') }
|
41
|
+
|
47
42
|
FalkorLib::Puppet::Modules.init(moduledir)
|
48
43
|
templatedir = File.join( FalkorLib.templates, 'puppet', 'modules')
|
49
44
|
s = true
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: falkorlib
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sebastien Varrette
|
@@ -128,6 +128,20 @@ dependencies:
|
|
128
128
|
- - "~>"
|
129
129
|
- !ruby/object:Gem::Version
|
130
130
|
version: '0'
|
131
|
+
- !ruby/object:Gem::Dependency
|
132
|
+
name: diffy
|
133
|
+
requirement: !ruby/object:Gem::Requirement
|
134
|
+
requirements:
|
135
|
+
- - ">="
|
136
|
+
- !ruby/object:Gem::Version
|
137
|
+
version: '3.0'
|
138
|
+
type: :runtime
|
139
|
+
prerelease: false
|
140
|
+
version_requirements: !ruby/object:Gem::Requirement
|
141
|
+
requirements:
|
142
|
+
- - ">="
|
143
|
+
- !ruby/object:Gem::Version
|
144
|
+
version: '3.0'
|
131
145
|
- !ruby/object:Gem::Dependency
|
132
146
|
name: bundler
|
133
147
|
requirement: !ruby/object:Gem::Requirement
|