falkorlib 0.3.12 → 0.3.13

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 48621a1943781dfdea2558deaf7835d99ac2ecaf
4
- data.tar.gz: 59f699b1e866574ae3f30de108467be662405287
3
+ metadata.gz: e6d8cec0c3c632500898407975a5973f60f0e7fb
4
+ data.tar.gz: 7f4f4f44b51d0a166417f47b4de3b8fd560a5551
5
5
  SHA512:
6
- metadata.gz: 04f31de4f018201535bacb98160b630bc953212814de6349c429e8c479e87725999ea4aaa3477b28de1bf38ba0eeaabfc936dfa6671c5bbcd51076ca0e43c7d6
7
- data.tar.gz: ca21f90e2c03fdac3d9df7b2ea95fab2508e0d909a29c6113331a27f47f73dd3ab19ae3d7791776f0e379fa895b20715f9a9b88670676281a50096bf22771c46
6
+ metadata.gz: b55f144b558fb083f70135c8e4234eae31e7205b4a32f629a2f7a93195f42288acafe1a02d052a5335269a48bde62ec3c6c309a85d077f0b9e00aa23922c5238
7
+ data.tar.gz: 4b059fa396dff399cdef5d1606fdfc12a5a19f5a636c824f456b6d6c7174c0497283213b319ace08aecefe7333c9c474bd0aeebd230d234f1345d2d02ce14604
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- falkorlib (0.3.12)
4
+ falkorlib (0.3.13)
5
5
  awesome_print (~> 1.2)
6
6
  configatron (~> 3.2)
7
7
  diffy (>= 3.0)
@@ -1,12 +1,13 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
  ################################################################################
3
- # Time-stamp: <Ven 2014-09-05 10:44 svarrette>
3
+ # Time-stamp: <Ven 2014-12-05 15:41 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
+ require 'json'
10
11
 
11
12
  module FalkorLib #:nodoc:
12
13
 
@@ -305,7 +306,8 @@ module FalkorLib #:nodoc:
305
306
  end
306
307
  end
307
308
 
308
- ## ERB generation of the file `outfile` using the source template file `erbfile`
309
+ ###
310
+ # ERB generation of the file `outfile` using the source template file `erbfile`
309
311
  # Supported options:
310
312
  # :no_interaction [boolean]: do not interact
311
313
  def write_from_erb_template(erbfile, outfile, config = {},
@@ -316,28 +318,70 @@ module FalkorLib #:nodoc:
316
318
  template = File.read("#{erbfile}")
317
319
  output = ERB.new(template, nil, '<>')
318
320
  content = output.result(binding)
319
- if File.exists?( outfile )
320
- ref = File.read( outfile )
321
- return if ref == content
322
- warn "the file '#{outfile}' already exists and will be overwritten."
323
- warn "Expected difference: \n------"
324
- Diffy::Diff.default_format = :color
325
- puts Diffy::Diff.new(ref, content, :context => 1)
326
- else
327
-
328
- watch = options[:no_interaction] ? 'no' : ask( cyan(" ==> Do you want to see the generated file before commiting the writing (y|N)"), 'No')
329
- puts content if watch =~ /y.*/i
321
+ show_diff_and_write(content, outfile, options)
322
+ end
330
323
 
331
- end
332
- proceed = options[:no_interaction] ? 'yes' : ask( cyan(" ==> proceed with the writing (Y|n)"), 'Yes')
333
- return if proceed =~ /n.*/i
324
+ ## Show the difference between a `content` string and an destination file (using Diff algorithm).
325
+ # Obviosuly, if the outfile does not exists, no difference is proposed.
326
+ # Supported options:
327
+ # :no_interaction [boolean]: do not interact
328
+ # :json_pretty_format [boolean]: write a json content, in pretty format
329
+ #
330
+ # return 0 if nothing happened, 1 if a write has been done
331
+ def show_diff_and_write(content, outfile, options = {
332
+ :no_interaction => false,
333
+ :json_pretty_format => false,
334
+ })
335
+ if File.exists?( outfile )
336
+ ref = File.read( outfile )
337
+ if options[:json_pretty_format]
338
+ ref = JSON.pretty_generate (JSON.parse( IO.read( outfile ) ))
339
+ end
340
+ if ref == content
341
+ warn "Nothing to update"
342
+ return 0
343
+ end
344
+ warn "the file '#{outfile}' already exists and will be overwritten."
345
+ warn "Expected difference: \n------"
346
+ Diffy::Diff.default_format = :color
347
+ puts Diffy::Diff.new(ref, content, :context => 1)
348
+ else
349
+ watch = options[:no_interaction] ? 'no' : ask( cyan(" ==> Do you want to see the generated file before commiting the writing (y|N)"), 'No')
350
+ puts content if watch =~ /y.*/i
351
+ end
352
+ proceed = options[:no_interaction] ? 'yes' : ask( cyan(" ==> proceed with the writing (Y|n)"), 'Yes')
353
+ return 0 if proceed =~ /n.*/i
334
354
  info("=> writing #{outfile}")
335
355
  File.open("#{outfile}", "w+") do |f|
336
- f.puts content
356
+ f.write content
337
357
  end
338
- end
358
+ if FalkorLib::Git.init?(File.dirname(outfile))
359
+ do_commit = options[:no_interaction] ? 'yes' : ask( cyan(" ==> commit the changes (Y|n)"), 'Yes')
360
+ FalkorLib::Git.add(outfile, "update content of '#{File.basename(outfile)}'") if do_commit =~ /y.*/i
361
+ end
362
+ return 1
363
+ end
339
364
 
340
365
 
366
+ ## Blind copy of a source file `src` into its destination directory `dstdir`
367
+ # Supported options:
368
+ # :no_interaction [boolean]: do not interact
369
+ # :srcdir [string]: source directory, make the `src` file relative to that directory
370
+ # :outfile [string]: alter the outfile name (File.basename(src) by default)
371
+ def write_from_template(src,dstdir,options = {
372
+ :no_interaction => false,
373
+ :srcdir => '',
374
+ :outfile => ''
375
+ })
376
+ srcfile = options[:srcdir].nil? ? src : File.join(options[:srcdir], src)
377
+ error "Unable to find the source file #{srcfile}" unless File.exists? ( srcfile )
378
+ error "The destination directory '#{dstdir}' do not exist" unless File.directory?( dstdir )
379
+ dstfile = options[:outfile].nil? ? File.basename(srcfile) : options[:outfile]
380
+ outfile = File.join(dstdir, dstfile)
381
+ content = File.read( srcfile )
382
+ show_diff_and_write(content, outfile, options)
383
+ end # copy_from_template
384
+
341
385
 
342
386
  ### RVM init
343
387
  def init_rvm(rootdir = Dir.pwd, gemset = '')
@@ -1,6 +1,6 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
  ################################################################################
3
- # Time-stamp: <Mar 2014-08-26 11:54 svarrette>
3
+ # Time-stamp: <Ven 2014-12-05 22:43 svarrette>
4
4
  ################################################################################
5
5
  # Interface for the main Git operations
6
6
  #
@@ -315,12 +315,12 @@ module FalkorLib #:nodoc:
315
315
  FalkorLib.config.git[:subtrees].each do |dir,conf|
316
316
  next if conf[:url].nil?
317
317
  url = conf[:url]
318
- remote = dir
318
+ remote = dir.gsub(/\//, '-')
319
319
  branch = conf[:branch].nil? ? 'master' : conf[:branch]
320
320
  remotes = FalkorLib::Git.remotes
321
321
  unless remotes.include?( remote )
322
322
  info "Initialize Git remote '#{remote}' from URL '#{url}'"
323
- exit_status = execute "git remote add -f #{dir} #{url}"
323
+ exit_status = execute "git remote add -f #{remote} #{url}"
324
324
  end
325
325
  unless File.directory?( File.join(git_root_dir, dir) )
326
326
  info "initialize Git subtree '#{dir}'"
@@ -356,7 +356,7 @@ module FalkorLib #:nodoc:
356
356
  FalkorLib.config.git[:subtrees].each do |dir,conf|
357
357
  next if conf[:url].nil?
358
358
  url = conf[:url]
359
- remote = dir
359
+ remote = dir.gsub(/\//, '-')
360
360
  branch = conf[:branch].nil? ? 'master' : conf[:branch]
361
361
  remotes = FalkorLib::Git.remotes
362
362
  raise IOError, "The git remote '#{remote}' is not configured" unless remotes.include?( remote )
@@ -377,7 +377,7 @@ module FalkorLib #:nodoc:
377
377
  FalkorLib.config.git[:subtrees].each do |dir,conf|
378
378
  next if conf[:url].nil?
379
379
  url = conf[:url]
380
- remote = dir
380
+ remote = dir.gsub(/\//, '-')
381
381
  branch = conf[:branch].nil? ? 'master' : conf[:branch]
382
382
  remotes = FalkorLib::Git.remotes
383
383
  info "Pulling changes into subtree '#{dir}' using remote '#{remote}/#{branch}'"
@@ -387,6 +387,7 @@ module FalkorLib #:nodoc:
387
387
  raise IOError, "The git subtree directory '#{dir}' does not exists" unless File.directory? ( File.join(git_root_dir, dir) )
388
388
  info "\t\\__ pulling changes"
389
389
  exit_status = execute "git subtree pull --prefix #{dir} --squash #{remote} #{branch}"
390
+ #exit_status = puts "git subtree pull --prefix #{dir} --squash #{remote} #{branch}"
390
391
  end
391
392
  end
392
393
  exit_status
@@ -1,6 +1,6 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
  ################################################################################
3
- # Time-stamp: <Sam 2014-09-06 16:21 svarrette>
3
+ # Time-stamp: <Lun 2014-09-08 16:41 svarrette>
4
4
  ################################################################################
5
5
  # Interface for the main Puppet Module operations
6
6
  #
@@ -30,7 +30,7 @@ module FalkorLib #:nodoc:
30
30
  :source => '',
31
31
  :project_page => '',
32
32
  :issues_url => '',
33
- :forge_url => 'https://forge.puppetlabs.com',
33
+ :forge_url => 'https://forge.puppetlabs.com',
34
34
  :dependencies => [],
35
35
  :operatingsystem_support => [],
36
36
  :tags => []
@@ -76,7 +76,7 @@ module FalkorLib #:nodoc:
76
76
  end
77
77
  end
78
78
  result.uniq!
79
- result
79
+ result.sort
80
80
  end
81
81
 
82
82
 
@@ -102,7 +102,7 @@ module FalkorLib #:nodoc:
102
102
  when :issues_url
103
103
  config[:project_page].nil? ? v : "#{config[:project_page]}/issues"
104
104
  when :forge_url
105
- v + '/' + config[:name].gsub(/-/,'/')
105
+ v + '/' + config[:name].gsub(/-/,'/')
106
106
  when :description
107
107
  config[:summary].nil? ? v : "#{config[:summary]}"
108
108
  when :source
@@ -123,19 +123,20 @@ module FalkorLib #:nodoc:
123
123
  idx.nil? ? 1 : idx + 1)
124
124
  config[:license] = license.downcase unless license.empty?
125
125
  puts "\t" + sprintf("%-20s", "Module License:") + config[:license]
126
-
127
- # Supported platforms
128
- config[:platforms] = [ 'debian' ]
129
- config[:dependencies] = [{
130
- "name" => "puppetlabs-stdlib",
131
- "version_range" => ">= 1.0.0"
132
- }]
126
+
127
+ # Supported platforms
128
+ config[:platforms] = [ 'debian' ]
129
+ config[:dependencies] = [{
130
+ "name" => "puppetlabs-stdlib",
131
+ "version_range" => ">= 1.0.0"
132
+ }]
133
+ config[:params] = ["ensure", "protocol", "port", "packagename" ]
133
134
  #ap config
134
135
  # Bootstrap the directory
135
136
  templatedir = File.join( FalkorLib.templates, 'puppet', 'modules')
136
137
  init_from_template(templatedir, moduledir, config, {
137
138
  :erb_exclude => [ 'templates\/[^\/]*variables\.erb$' ],
138
- :no_interaction => true
139
+ :no_interaction => true
139
140
  })
140
141
  # Rename the files / element templatename
141
142
  Dir["#{moduledir}/**/*"].each do |e|
@@ -152,22 +153,22 @@ module FalkorLib #:nodoc:
152
153
  end
153
154
  info "Initialize RVM"
154
155
  init_rvm(moduledir)
155
- unless FalkorLib::Git.init?(moduledir)
156
- init_gitflow = command?('git-flow')
157
- warn "Git #{init_gitflow ? '[Flow]' : ''} is not initialized in #{moduledir}."
158
- a = ask("Proceed to git-flow initialization (Y|n)", 'Yes')
159
- return if a =~ /n.*/i
160
- init_gitflow ? FalkorLib::GitFlow.init(moduledir) : FalkorLib::Git.init(moduledir)
161
- end
162
-
156
+ unless FalkorLib::Git.init?(moduledir)
157
+ init_gitflow = command?('git-flow')
158
+ warn "Git #{init_gitflow ? '[Flow]' : ''} is not initialized in #{moduledir}."
159
+ a = ask("Proceed to git-flow initialization (Y|n)", 'Yes')
160
+ return if a =~ /n.*/i
161
+ init_gitflow ? FalkorLib::GitFlow.init(moduledir) : FalkorLib::Git.init(moduledir)
162
+ end
163
+
163
164
  # Propose to commit the key files
164
165
  if FalkorLib::Git.init?(moduledir)
165
166
  if FalkorLib::GitFlow.init?(moduledir)
166
167
  info "=> preparing git-flow feature for the newly created module '#{config[:name]}'"
167
168
  FalkorLib::GitFlow.start('feature', "bootstraping", moduledir)
168
169
  end
169
- [ 'metadata.json',
170
- 'doc/', 'LICENSE', '.gitignore',
170
+ [ 'metadata.json',
171
+ 'doc/', 'LICENSE', '.gitignore',
171
172
  'Gemfile', '.vagrant_init.rb', 'Rakefile', 'Vagrantfile' ].each do |f|
172
173
  FalkorLib::Git.add(File.join(moduledir, f))
173
174
  end
@@ -176,15 +177,25 @@ module FalkorLib #:nodoc:
176
177
 
177
178
  ####
178
179
  # Parse a given modules to collect information
179
- ##
180
- def parse(moduledir = Dir.pwd)
181
- name = File.basename( moduledir )
182
- error "The module #{name} does not exist" unless File.directory?( moduledir )
180
+ # Supported options:
181
+ # :no_interaction [boolean]: do not interact
182
+ #
183
+ def parse(moduledir = Dir.pwd, options = {
184
+ :no_interaction => false
185
+ })
186
+ name = File.basename(moduledir)
187
+ metadata = metadata(moduledir, {
188
+ :use_symbols => false,
189
+ :extras => false
190
+ })
191
+ puts "**********************"
192
+ puts metadata.to_yaml
193
+ # error "The module #{name} does not exist" unless File.directory?( moduledir )
183
194
  jsonfile = File.join( moduledir, 'metadata.json')
184
- error "Unable to find #{jsonfile}" unless File.exist?( jsonfile )
185
- metadata = JSON.parse( IO.read( jsonfile ) )
195
+ # error "Unable to find #{jsonfile}" unless File.exist?( jsonfile )
196
+ # metadata = JSON.parse( IO.read( jsonfile ) )
186
197
  ref = JSON.pretty_generate( metadata )
187
- metadata["classes"] = classes(moduledir)
198
+ metadata["classes"] = classes(moduledir)
188
199
  metadata["definitions"] = definitions(moduledir)
189
200
  deps = deps(moduledir)
190
201
  listed_deps = metadata["dependencies"]
@@ -195,18 +206,16 @@ module FalkorLib #:nodoc:
195
206
  deps.delete( lib )
196
207
  else
197
208
  unless lib =~ /stdlib/
198
- warn "The library '#{dep["name"]}' is not analyzed as part of the #{name} module"
209
+ warn "The library '#{dep["name"]}' is not analyzed as part of the #{metadata['shortname']} module"
199
210
  missed_deps << dep
200
211
  end
201
212
  end
202
213
  end
203
214
  if ! deps.empty?
204
215
  deps.each do |l|
205
- shortname = name.gsub(/.*-/, '')
206
- shortmetaname = metadata["name"].gsub(/.*-/, '')
207
216
  next if [name, metadata["name"], name.gsub(/.*-/, ''), metadata["name"].gsub(/.*-/, '') ].include? ( l )
208
217
  warn "The module '#{l}' is missing in the dependencies thus added"
209
- login = ask("[Github] login for the module '#{l}'")
218
+ login = ask("[Github] login for the module '#{l}'")
210
219
  version = ask("Version requirement (ex: '>=1.0.0 <2.0.0' or '1.2.3' or '1.x')")
211
220
  metadata["dependencies"] << {
212
221
  "name" => "#{login}/#{l}",
@@ -214,58 +223,126 @@ module FalkorLib #:nodoc:
214
223
  }
215
224
  end
216
225
  end
217
- content = JSON.pretty_generate( metadata )
226
+ content = JSON.pretty_generate( metadata )
218
227
  info "Metadata configuration for the module '#{name}'"
219
228
  puts content
220
- if ref == content
221
- warn "No difference to commit"
222
- return []
223
- end
224
- info "Differences with the previous file"
225
- Diffy::Diff.default_format = :color
226
- puts Diffy::Diff.new(ref, content, :context => 1)
227
- warn "About to commit these changes in the '#{name}/metadata.json' file"
228
- really_continue?
229
- File.open(jsonfile,"w") do |f|
230
- f.write JSON.pretty_generate( metadata )
231
- end
232
- run %{ git commit -s -m "Update metadata.json" #{jsonfile} }
229
+ show_diff_and_write(content, jsonfile, {
230
+ :no_interaction => options[:no_interaction],
231
+ :json_pretty_format => true
232
+ })
233
233
  metadata
234
234
  end # parse
235
235
 
236
- ##Upgrade the repository README etc. with the
237
- def upgrade(moduledir = Dir.pwd,
238
- options = {
239
- :no_interaction => false
240
- })
236
+ ###
237
+ # Retrieves the metadata from the metadata.json file in `moduledir`.
238
+ # Supported options:
239
+ # :use_symbols [boolean]: convert all keys to symbols
240
+ # :extras [boolean]: add extra keys
241
+ #
242
+ def metadata(moduledir = Dir.pwd, options = {
243
+ :use_symbols => true,
244
+ :extras => true
245
+ })
246
+ add_extras = options[:extras].nil? ? true : options[:extras]
241
247
  name = File.basename( moduledir )
242
248
  error "The module #{name} does not exist" unless File.directory?( moduledir )
243
249
  jsonfile = File.join( moduledir, 'metadata.json')
244
250
  error "Unable to find #{jsonfile}" unless File.exist?( jsonfile )
245
251
  metadata = JSON.parse( IO.read( jsonfile ) )
246
- templatedir = File.join( FalkorLib.templates, 'puppet', 'modules')
247
- # convert string keys to symbols
248
- metadata.keys.each do |k|
249
- metadata[(k.to_sym rescue k) || k] = metadata.delete(k)
252
+ if add_extras
253
+ metadata[:shortname] = name.gsub(/.*-/, '')
254
+ metadata[:platforms] = []
255
+ metadata["operatingsystem_support"].each do |e|
256
+ metadata[:platforms] << e["operatingsystem"].downcase unless e["operatingsystem"].nil?
257
+ end
258
+ # Analyse params
259
+ params_manifest = File.join(moduledir, 'manifests', 'params.pp')
260
+ if File.exist?(params_manifest)
261
+ params = []
262
+ File.read(params_manifest).scan(/^\s*\$(.*)\s*=/) do |m|
263
+ params << $1 unless $1.nil?
264
+ end
265
+ metadata[:params] = params.uniq
266
+ end
250
267
  end
251
- metadata[:platforms] = []
252
- metadata[:operatingsystem_support].each do |e|
253
- metadata[:platforms] << e["operatingsystem"].downcase
254
- end
255
- metadata[:shortname] = name.gsub(/.*-/, '')
256
- [ 'README.md', 'doc/contributing.md'].each do |f|
257
- info "Upgrade the content of #{f}"
258
- ans = options[:no_interaction] ? 'Yes' : ask("procceed?", 'Yes')
259
- next unless ans =~ /n*/i
260
- write_from_erb_template(File.join(templatedir, "#{f}.erb"),
261
- File.join(moduledir, f),
262
- metadata,
263
- options)
268
+ if options[:use_symbols]
269
+ # convert string keys to symbols
270
+ metadata.keys.each do |k|
271
+ metadata[(k.to_sym rescue k) || k] = metadata.delete(k)
272
+ end
264
273
  end
265
- end
274
+ metadata
275
+ end # metadata
266
276
 
267
277
 
268
278
 
279
+ ##
280
+ # Upgrade the key files (README etc.) of the puppet module hosted
281
+ # in `moduledir` with the latest version of the FalkorLib template
282
+ # Supported options:
283
+ # :no_interaction [boolean]: do not interact
284
+ # :only [Array of string]: update only the listed files
285
+ # :exclude [Array of string]: exclude from the upgrade the listed
286
+ # files
287
+ # return the number of considered files
288
+ def upgrade(moduledir = Dir.pwd,
289
+ options = {
290
+ :no_interaction => false,
291
+ :only => nil,
292
+ :exclude => []
293
+ })
294
+ metadata = metadata(moduledir)
295
+ templatedir = File.join( FalkorLib.templates, 'puppet', 'modules')
296
+ i = 0
297
+ update_from_erb = [ 'README.md', 'doc/contributing.md']
298
+ (update_from_erb + [ 'Gemfile', 'Rakefile', 'Vagrantfile', '.vagrant_init.rb' ]).each do |f|
299
+ next unless options[:exclude].nil? or ! options[:exclude].include?( f )
300
+ next unless options[:only].nil? or options[:only].include?(f)
301
+ info "Upgrade the content of #{f}"
302
+ ans = options[:no_interaction] ? 'Yes' : ask(cyan("==> procceed? (Y|n)"), 'Yes')
303
+ next if ans =~ /n.*/i
304
+ if update_from_erb.include?(f)
305
+ i += write_from_erb_template(File.join(templatedir, "#{f}.erb"),
306
+ File.join(moduledir, f),
307
+ metadata,
308
+ options)
309
+ else
310
+ i+= write_from_template(f, moduledir, {
311
+ :no_interaction => options[:no_interaction],
312
+ :srcdir => templatedir
313
+ })
314
+ end
315
+ end
316
+ i
317
+ end
318
+
319
+ ##
320
+ # initializes or update the (tests/specs/etc.) sub-directory of the
321
+ # `moduledir` using the correcponding ERB files.
322
+ # Supported options:
323
+ # :no_interaction [boolean]: do not interactww
324
+ #
325
+ # returns the number of considered files
326
+ def upgrade_from_template(moduledir = Dir.pwd,
327
+ subdir = 'tests',
328
+ options = {
329
+ :no_interaction => false
330
+ })
331
+ metadata = metadata(moduledir)
332
+ #ap metadata
333
+ i = 0
334
+ templatedir = File.join( FalkorLib.templates, 'puppet', 'modules', subdir)
335
+ error "Unable to find the template directory '#{templatedir}" unless File.directory?( templatedir )
336
+ Dir["#{templatedir}/**/*.erb"].each do |erbfile|
337
+ f = File.join(subdir, File.basename(erbfile, '.erb'))
338
+ info "Upgrade the content of #{f}"
339
+ ans = options[:no_interaction] ? 'Yes' : ask(cyan("==> procceed? (Y|n)"), 'Yes')
340
+ next if ans =~ /n.*/i
341
+ i+= write_from_erb_template(erbfile, File.join(moduledir, f), metadata, options)
342
+ end
343
+ i
344
+ end
345
+
269
346
 
270
347
  #######
271
348
  # Find the classes of a given module
@@ -298,12 +375,12 @@ module FalkorLib #:nodoc:
298
375
  resulttmp = result.dup
299
376
  (result - result2).each do |x|
300
377
  Dir["#{moduledir}/**/*.pp"].each do |ppfile|
301
- File.read(ppfile).scan(/^\s*(include|require|class\s*{)\s*["']?(::)?([0-9a-zA-Z:{$}\-]*)["']?/) do |m|
302
- next if $3.nil?
303
- entry = $3.split('::').first
304
- result << entry unless entry.nil? or entry.empty?
305
- end
306
- end
378
+ File.read(ppfile).scan(/^\s*(include|require|class\s*{)\s*["']?(::)?([0-9a-zA-Z:{$}\-]*)["']?/) do |m|
379
+ next if $3.nil?
380
+ entry = $3.split('::').first
381
+ result << entry unless entry.nil? or entry.empty?
382
+ end
383
+ end
307
384
  end
308
385
  result.uniq!
309
386
  result2 = resulttmp.dup
@@ -1,12 +1,13 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
  ################################################################################
3
3
  # puppet_modules.rake - Special tasks for the management of Puppet modules
4
- # Time-stamp: <Sam 2014-09-06 16:32 svarrette>
4
+ # Time-stamp: <Lun 2014-09-08 17:19 svarrette>
5
5
  #
6
6
  # Copyright (c) 2014 Sebastien Varrette <Sebastien.Varrette@uni.lu>
7
7
  # http://varrette.gforge.uni.lu
8
8
  ################################################################################
9
9
 
10
+ require 'rake'
10
11
  require 'falkorlib'
11
12
  require 'falkorlib/tasks'
12
13
  require 'falkorlib/puppet'
@@ -119,12 +120,40 @@ end # namespace puppet
119
120
 
120
121
  #.....................
121
122
  namespace :templates do
123
+
122
124
  namespace :upgrade do
123
- ########### module:upgrade:readme ###########
124
- task :readme do |t|
125
- #info "#{t.comment}"
125
+ ########### templates:upgrade:all ###########
126
+ task :all do
127
+ info "Upgrade all key module files from FalkorLib templates"
126
128
  FalkorLib::Puppet::Modules.upgrade()
127
129
  end
130
+
131
+ [ 'readme', 'rake', 'vagrant' ].each do |t|
132
+ ########### templates:upgrade:{readme,rake,vagrant} ###########
133
+ task t.to_sym do
134
+ list = case t
135
+ when 'readme'
136
+ [ 'README.md', 'doc/contributing.md' ]
137
+ when 'rake'
138
+ [ 'Gemfile', 'Rakefile' ]
139
+ when 'vagrant'
140
+ [ 'Vagrantfile', '.vagrant_init.rb']
141
+ else []
142
+ end
143
+ #info "Upgrade the module files '#{list.join(',')}' from FalkorLib templates"
144
+ FalkorLib::Puppet::Modules.upgrade(Dir.pwd,{
145
+ :only => list
146
+ })
147
+ end
148
+ end
149
+
150
+ ########### templates:upgrade:tests ###########
151
+ task :tests do
152
+ info "Upgrade the basic tests manifests in tests/"
153
+ FalkorLib::Puppet::Modules.upgrade_from_template(Dir.pwd, 'tests')
154
+ end
155
+
156
+
128
157
  end # namespace upgrade
129
158
  end # namespace module
130
159
 
@@ -162,6 +191,32 @@ PuppetSyntax.exclude_paths = exclude_tests_paths
162
191
  # end
163
192
  # task :syntax => :syntax_info
164
193
 
194
+ #.........................................................................
195
+ # rspec-puppet tasks -- see http://rspec-puppet.com/tutorial/
196
+ #
197
+ require 'rspec/core/rake_task'
198
+
199
+ ########## rspec #################
200
+ desc "Run all RSpec code examples"
201
+ RSpec::Core::RakeTask.new(:rspec) do |t|
202
+ t.rspec_opts = File.read("spec/spec.opts").chomp || ""
203
+ end
204
+
205
+ SPEC_SUITES = (Dir.entries('spec') - ['.', '..','fixtures']).select {|e| File.directory? "spec/#{e}" }
206
+ namespace :rspec do
207
+ SPEC_SUITES.each do |suite|
208
+ ############ rspec:{classes,defines...} ##########
209
+ desc "Run #{suite} RSpec code examples"
210
+ RSpec::Core::RakeTask.new(suite) do |t|
211
+ t.pattern = "spec/#{suite}/**/*_spec.rb"
212
+ t.rspec_opts = File.read("spec/spec.opts").chomp || ""
213
+ end
214
+ end
215
+ end
216
+ task :default => :rspec
217
+
218
+
219
+
165
220
 
166
221
  ################################################
167
222
 
@@ -19,7 +19,7 @@ module FalkorLib #:nodoc:
19
19
  # MAJOR: Defines the major version
20
20
  # MINOR: Defines the minor version
21
21
  # PATCH: Defines the patch version
22
- MAJOR, MINOR, PATCH = 0, 3, 12
22
+ MAJOR, MINOR, PATCH = 0, 3, 13
23
23
 
24
24
  module_function
25
25
 
@@ -2,7 +2,7 @@
2
2
  #########################################
3
3
  # puppet_modules_spec.rb
4
4
  # @author Sebastien Varrette <Sebastien.Varrette@uni.lu>
5
- # Time-stamp: <Sam 2014-09-06 16:25 svarrette>
5
+ # Time-stamp: <Ven 2014-12-05 22:56 svarrette>
6
6
  #
7
7
  # @description Check the Puppet Modules operations
8
8
  #
@@ -88,17 +88,23 @@ describe FalkorLib::Puppet::Modules do
88
88
  d.should == []
89
89
  end
90
90
 
91
- it "#upgrade" do
92
- d = FalkorLib::Puppet::Modules.upgrade(moduledir, {
93
- :no_interaction => true
94
- })
95
- end
91
+ it "#metadata" do
92
+ ref = JSON.parse( IO.read( jsonfile ) )
93
+ metadata = FalkorLib::Puppet::Modules.metadata(moduledir, {
94
+ :use_symbols => false,
95
+ :extras => false
96
+ })
97
+ ref.keys.each do |k|
98
+ metadata[k].should == ref[k]
99
+ end
100
+ end
101
+
96
102
 
97
103
  it "#parse" do
98
- STDIN.should_receive(:gets).and_return('')
104
+ #STDIN.should_receive(:gets).and_return('')
99
105
  ref = JSON.parse( IO.read( jsonfile ) )
100
- metadata = FalkorLib::Puppet::Modules.parse(moduledir)
101
- diff = (metadata.to_a - ref.to_a).flatten.sort
106
+ metadata = FalkorLib::Puppet::Modules.parse(moduledir, { :no_interaction => true })
107
+ diff = (metadata.to_a - ref.to_a).flatten.sort
102
108
  diff.should == [
103
109
  'classes',
104
110
  'definitions',
@@ -111,9 +117,11 @@ describe FalkorLib::Puppet::Modules do
111
117
  ]
112
118
  end
113
119
 
114
- it "#parse again" do
115
- metadata = FalkorLib::Puppet::Modules.parse(moduledir)
116
- metadata.should == []
120
+ it "#parse again -- should not exhibit any difference" do
121
+ ref = JSON.parse( IO.read( jsonfile ) )
122
+ metadata = FalkorLib::Puppet::Modules.parse(moduledir, { :no_interaction => true })
123
+ diff = (metadata.to_a - ref.to_a).flatten.sort
124
+ diff.should == []
117
125
  end
118
126
 
119
127
  it "#deps -- should find a new dependency" do
@@ -124,11 +132,12 @@ describe FalkorLib::Puppet::Modules do
124
132
  a.should include newdep
125
133
  end
126
134
 
127
- it "#parse -- should ask new dependency elements" do
135
+ it "#parse again -- should ask new dependency elements" do
128
136
  ref = JSON.parse( IO.read( jsonfile ) )
129
137
  STDIN.should_receive(:gets).and_return('svarrette')
130
138
  STDIN.should_receive(:gets).and_return('1.2')
131
139
  STDIN.should_receive(:gets).and_return('Yes')
140
+ STDIN.should_receive(:gets).and_return('')
132
141
  metadata = FalkorLib::Puppet::Modules.parse(moduledir)
133
142
  diff = (metadata.to_a - ref.to_a).flatten
134
143
  diff.should == [
@@ -137,6 +146,41 @@ describe FalkorLib::Puppet::Modules do
137
146
  {"name"=>"svarrette/tata", "version_requirement"=>"1.2"}
138
147
  ]
139
148
  end
149
+
150
+ upgraded_files_default = 1
151
+ it "#upgrade" do
152
+ d = FalkorLib::Puppet::Modules.upgrade(moduledir, {
153
+ :no_interaction => true
154
+ })
155
+ d.should == upgraded_files_default
156
+ end
157
+
158
+ it "#upgrade -- with only a subset of files" do
159
+ d = FalkorLib::Puppet::Modules.upgrade(moduledir, {
160
+ :no_interaction => true,
161
+ :only => [ 'README.md', 'Gemfile']
162
+ })
163
+ d.should == 0
164
+ end
165
+
166
+ it "#upgrade -- exclude some files" do
167
+ d = FalkorLib::Puppet::Modules.upgrade(moduledir, {
168
+ :no_interaction => true,
169
+ :exclude => [ 'README.md']
170
+ })
171
+ d.should == (upgraded_files_default - 1)
172
+ end
173
+
174
+ it "#upgrade -- both include and exclude files" do
175
+ d = FalkorLib::Puppet::Modules.upgrade(moduledir, {
176
+ :no_interaction => true,
177
+ :only => [ 'README.md'],
178
+ :exclude => [ 'README.md']
179
+ })
180
+ d.should == 0
181
+ end
182
+
183
+
140
184
  end # context
141
185
 
142
186
  end
@@ -6,7 +6,8 @@ gem 'falkorlib' #, :path => '~/git/github.com/Falkor/falkorlib'
6
6
  # Puppet stuff
7
7
  puppetversion = ENV.key?('PUPPET_VERSION') ? "= #{ENV['PUPPET_VERSION']}" : ['>= 3.3']
8
8
  gem "puppet", puppetversion
9
- gem 'puppetlabs_spec_helper', '>= 0.1.0'
9
+ #gem 'puppetlabs_spec_helper', '>= 0.1.0'
10
10
  gem 'puppet-lint', '>= 0.3.2'
11
11
  gem 'puppet-syntax'
12
12
  gem 'facter', '>= 1.7.0'
13
+ gem 'rspec-puppet'
@@ -1,6 +1,6 @@
1
1
  -*- mode: markdown; mode: auto-fill; fill-column: 80 -*-
2
2
 
3
- # <%= config[:name].gsub(/.*-/, '').capitalize %> Puppet Module Developments
3
+ # <%= config[:shortname].capitalize %> Puppet Module Developments
4
4
 
5
5
  If you want to contribute to the code, you shall be aware of the way this module
6
6
  is organized.
@@ -13,18 +13,18 @@ is organized.
13
13
  `-- files/ # Contains static files, which managed nodes can download
14
14
  `-- lib/ # custom facts/type/provider definitions
15
15
  `-- manifests/
16
- `-- init.pp # Main manifests file
17
- `-- classes/ # Hold manifest for <%= config[:name] %> classes/
18
- `-- <%= config[:name] %>.pp # defines the <%= config[:name] %> class
19
- `-- <%= config[:name] %>-params.pp # <%= config[:name] %> module variables
20
- `-- definitions/ # Hold manifest for <%= config[:name] %> definitions
21
- `-- <%= config[:name] %>-mydef.pp # defines the <%= config[:name] %>::mydef definition `-- templates/ # Module ERB template files
16
+ `-- init.pp # Main manifests file which defines the <%= config[:shortname] %> class
17
+ `-- params.pp # <%= config[:name] %> module variables
18
+ `-- mydef.pp # defines the <%= config[:shortname] %>::mydef definition
19
+ `-- templates/ # Module ERB template files
22
20
  `-- tests/ # Contains examples showing how to declare the module’s classes and defined type
23
- `-- spec/ # Contains spec tests for any plugins in the lib directory
21
+ `-- spec/ # Contains rspec tests
24
22
  `-- Rakefile # Definition of the [rake](https://github.com/jimweirich/rake) tasks
25
23
  `-- .ruby-{version,gemset} # [RVM](https://rvm.io/) configuration
26
24
  `-- Gemfile[.lock] # [Bundler](http://bundler.io/) configuration
27
25
  `-- .git/ # Hold git configuration
26
+ `-- .vagrant_init.rb # Vagrant provisionner to test this module
27
+ `-- Vagrantfile # Vagrant file
28
28
 
29
29
  ### Git Branching Model
30
30
 
@@ -15,27 +15,13 @@
15
15
 
16
16
  include '<%= config[:shortname] %>::params'
17
17
 
18
- $names = [
19
- "ensure",
20
- "protocol",
21
- "port",
22
- "packagename",
23
- "logdir",
24
- "logdir_mode",
25
- "logdir_owner",
26
- "logdir_group",
27
- "servicename",
28
- "processname",
29
- "hasstatus",
30
- "hasrestart",
31
- "configfile",
32
- "configfile_init",
33
- "configfile_mode",
34
- "configfile_owner",
35
- "configfile_group",
36
- ]
18
+ $names = <%= config[:params] %>
37
19
 
38
- each($names) |$v| {
39
- $var = "<%= config[:shortname] %>::params::${v}"
40
- notice("${var} = ", inline_template('<%%= scope.lookupvar(@var) %>'))
41
- }
20
+ <% config[:params].each do |v| %>
21
+ notice("<%= config[:shortname] %>::params::<%= v %> = ${<%= config[:shortname] %>::params::<%= v %>}")
22
+ <% end %>
23
+
24
+ #each($names) |$v| {
25
+ # $var = "<%= config[:shortname] %>::params::${v}"
26
+ # notice("${var} = ", inline_template('<%%= scope.lookupvar(@var) %>'))
27
+ #}
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: falkorlib
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.12
4
+ version: 0.3.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sebastien Varrette
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-09-06 00:00:00.000000000 Z
11
+ date: 2014-12-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake