falkorlib 0.3.3 → 0.3.4
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 +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
|