dice_bag 1.1.1 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 22c7b492a6a98905102513cd406e215811819a7a
4
- data.tar.gz: 517d2b3fd51783c8cfd6fca1b73a910ce4ec9918
3
+ metadata.gz: e411c7158a8d1862207f60e5ce491849a3ae6a57
4
+ data.tar.gz: ff3f71df983d8c23a8609cee44f84ab996a30703
5
5
  SHA512:
6
- metadata.gz: 021df9eee911fafcd88b7e2ce9735ba4fc40b9fd72cc7f08330016ed3ac4c8f6369b903f8f199f66c8f938ddec20340cc181a1086812622a72a6bbf063f87397
7
- data.tar.gz: 14ac7dd6c469000a8b4f6a111b547118a295ce505d839bce992a2f06cc5d1dab15b165be8e37b733f92adf1444c3cc646c58ef7210bc16039f11c836b51e9841
6
+ metadata.gz: 2a2c9da3b3accf242da8cb7cfebddd9c32cb6b29f01ad6917ea5a39d0c10bb1b4f1a8c68505b830d89b0b49ca2dcf5367ef944b9f2a845c6f61932fea0556cba
7
+ data.tar.gz: 22f058c0eb1cee9727d9670c9049155ceee38c03e5398d5dc2a527ecfa8e371aa5eaeb7d4a32f12febf3ae3b3d2f565e36ecc4ce9f3812c2610a6be70e6d6ed1
@@ -1,10 +1,10 @@
1
+ require 'rubygems'
1
2
  require 'dice_bag/default_template_file'
2
3
 
3
4
  # This class returns all the templates we can generate in this particular project
4
5
  module DiceBag
5
-
6
- class AvailableTemplates
7
6
 
7
+ class AvailableTemplates
8
8
 
9
9
  # By default the final location for any template will be the config directory.
10
10
  # If any template 'plugin' wants to overwrite the directory where its template will be written
@@ -16,6 +16,22 @@ module DiceBag
16
16
 
17
17
  class << self
18
18
 
19
+ def gem_specs
20
+ @gem_specs ||= begin
21
+ Gem::Specification.sort.each_with_object({}) do |spec, hsh|
22
+ hsh[spec.name] = spec.full_gem_path
23
+ end
24
+ end
25
+ end
26
+
27
+ def checker_within_given_gems?(checker, gem_names)
28
+ checker_file = checker.method(:templates).source_location[0]
29
+ gem_specs.each do |name, location|
30
+ return true if checker_file.starts_with?(location) && gem_names.include?(name)
31
+ end
32
+ false
33
+ end
34
+
19
35
  def template_checkers
20
36
  @template_checkers ||= []
21
37
  end
@@ -24,12 +40,13 @@ module DiceBag
24
40
  template_checkers << base
25
41
  end
26
42
 
27
- def all
43
+ def all(gem_names=[])
28
44
  #all the classes than inherit from us in the ruby runtime
29
45
  available_templates = []
30
46
 
31
47
  template_checkers.each do |template_checker|
32
48
  checker = template_checker.new
49
+ next if !gem_names.empty? && !checker_within_given_gems?(checker, gem_names)
33
50
  location = checker.templates_location
34
51
  checker.templates.each do |template|
35
52
  available_templates.push( DefaultTemplateFile.new(template, location) )
@@ -52,7 +69,7 @@ module DiceBag
52
69
  end
53
70
 
54
71
 
55
- # we require the our own templates checker here, for other gems we just need
56
- # them to inherit from DiceBag::AvailableTemplates and require the file
72
+ # we require our own templates checker here, for other gems we just need
73
+ # them to inherit from DiceBag::AvailableTemplates and require the file
57
74
  # If Ruby loads the file we can find the class in the object space and call it
58
75
  require_relative 'templates/gems_checker'
@@ -31,7 +31,6 @@ module DiceBag
31
31
  template_file.create_file(config_file, params)
32
32
  end
33
33
 
34
-
35
34
  def generate_all_templates(force=false)
36
35
  AvailableTemplates.all.each do |template|
37
36
  generate_template(template, force)
@@ -42,5 +41,11 @@ module DiceBag
42
41
  copy_file default_template.file, default_template.destination, force: force
43
42
  end
44
43
 
44
+ def generate_gems_templates(gem_names, force=false)
45
+ AvailableTemplates.all(gem_names).each do |template|
46
+ generate_template(template, force)
47
+ end
48
+ end
49
+
45
50
  end
46
51
  end
@@ -1,8 +1,10 @@
1
- require 'erb'
2
- require 'dice_bag/command'
1
+ require "erb"
2
+ require "dice_bag/command"
3
+
4
+ FORCE_ENV_VAR = "DICEBAG_FORCE".freeze
3
5
 
4
6
  desc "Populate all templates using values from the environment to create configuration files"
5
- task :config => ['config:all']
7
+ task :config => ["config:all"]
6
8
 
7
9
  namespace :config do
8
10
  # Deprecated, present only for backward compatibility.
@@ -22,7 +24,7 @@ namespace :config do
22
24
  DiceBag::Command.new.write(filename)
23
25
  end
24
26
 
25
- desc 'Generate all configuration file templates with interactive commands (use config:generate_all:force to replace all without asking for input)'
27
+ desc "Generate all configuration file templates with interactive commands (use config:generate_all:force to replace all without asking for input)"
26
28
  task :generate_all do
27
29
  DiceBag::Command.new.generate_all_templates(false)
28
30
  end
@@ -33,11 +35,19 @@ namespace :config do
33
35
  end
34
36
  end
35
37
 
36
- desc 'Generate specified template, optionally in the specified location with options to control file actions'
38
+ desc "Generate specified template, optionally in the specified location with options to control file actions"
37
39
  task :generate, :filename, :location do |t, args|
38
40
  filename = args[:filename]
39
41
  location = args[:location]
40
- raise 'A filename needs to be provided' if filename.nil?
42
+ raise "A filename needs to be provided" if filename.nil?
41
43
  DiceBag::Command.new.generate_template(DiceBag::DefaultTemplateFile.new(filename, location), false)
42
44
  end
45
+
46
+ desc "Generate the templates from the specified gems only ('config:generate_from_gems gem1 gem2 gemN', set the env variable '#{FORCE_ENV_VAR}' to overwrite the templates without asking for confirmation)"
47
+ task :generate_from_gems, :names do |t, args|
48
+ ARGV.each { |a| task a.to_sym do ; end }
49
+ names = ARGV[1..-1]
50
+ raise "One or more gem names need to be provided" if names.empty?
51
+ DiceBag::Command.new.generate_gems_templates(names, !ENV[FORCE_ENV_VAR].nil?)
52
+ end
43
53
  end
@@ -1,3 +1,3 @@
1
1
  module DiceBag
2
- VERSION = '1.1.1'
2
+ VERSION = '1.2.0'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dice_bag
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Smith
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2016-06-17 00:00:00.000000000 Z
12
+ date: 2016-11-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
@@ -156,4 +156,3 @@ test_files:
156
156
  - spec/command_spec.rb
157
157
  - spec/configuration_spec.rb
158
158
  - spec/spec_helper.rb
159
- has_rdoc: