origen_app_generators 1.0.1 → 1.1.0

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: efe3f54f85b5eb4fbf72aa62d4735d1b3eb91a0d
4
- data.tar.gz: a7ac8e0632d178b7549e39fdb1c2b7da8c9a0bd5
3
+ metadata.gz: 52ed0cc091ddc22553ff9ef23b89d32a583f5dad
4
+ data.tar.gz: 15d517d2d9057b35ce8b10ced794abc241de6332
5
5
  SHA512:
6
- metadata.gz: b5234f29caa0c4f6611ec22b79cfa3cca7714104b6487ae22f0fa8dc222349c992238df591856d630c1d984e5f80d7e2579d1dd59900c830720dd974be0929ae
7
- data.tar.gz: f26c931c0aec81bdc5f8125db023736e105e37eb5f21d70352b2022aa30a58ea23f36b302d938a1f15d8f22d231e85c58764e22fce31c8303dde9286d4e53f20
6
+ metadata.gz: 30fb76df25db734b690c4669a79b6bd124e454d97b909daf48fa6811cc7d90800971b4310a8bed202d3d060ffc145eec5bf311c052926815e287c15c8a19814f
7
+ data.tar.gz: 35c4fed01e48500f0823a62c29387cdd429b0f9261a68c24829c16f0566853c601a39203580d19b7220a21e7c0a1a36cd04168b7e259e3a921aebf2c213b1a15
data/config/version.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  module OrigenAppGenerators
2
2
  MAJOR = 1
3
- MINOR = 0
4
- BUGFIX = 1
3
+ MINOR = 1
4
+ BUGFIX = 0
5
5
  DEV = nil
6
6
 
7
7
  VERSION = [MAJOR, MINOR, BUGFIX].join(".") + (DEV ? ".pre#{DEV}" : '')
@@ -14,15 +14,22 @@ module OrigenAppGenerators
14
14
  klass = self.class
15
15
 
16
16
  until klass == OrigenAppGenerators::Base
17
- names = klass.to_s.split('::')
18
- names.shift
19
- dir = names.map(&:underscore).join('/')
20
- if OrigenAppGenerators.template_dirs[klass]
21
- dir = File.expand_path("#{OrigenAppGenerators.template_dirs[klass]}/#{dir}", __FILE__)
17
+ if template_dir = OrigenAppGenerators.template_dirs[klass]
18
+ dir = []
19
+ last_class = nil
20
+ until klass.to_s =~ /^OrigenAppGenerators/
21
+ dir << "#{template_dir}/#{class_dir(klass)}"
22
+ last_class = klass
23
+ klass = klass.superclass
24
+ end
25
+ dir << "#{template_dir}/base"
26
+ klass = last_class
22
27
  else
23
- dir = File.expand_path("#{Origen.root!}/templates/app_generators/#{dir}", __FILE__)
28
+ dir = "#{Origen.root!}/templates/app_generators/#{class_dir(klass)}"
29
+ end
30
+ Array(dir).each do |dir|
31
+ self.class.source_paths << dir if File.exist?(dir) && !self.class.source_paths.include?(dir)
24
32
  end
25
- self.class.source_paths << dir if File.exist?(dir) && !self.class.source_paths.include?(dir)
26
33
  klass = klass.superclass
27
34
  end
28
35
  end
@@ -42,6 +49,16 @@ module OrigenAppGenerators
42
49
 
43
50
  protected
44
51
 
52
+ def class_dir(klass)
53
+ names = klass.to_s.split('::')
54
+ names.shift
55
+ names.map(&:underscore).join('/')
56
+ end
57
+
58
+ # def application_class?(klass)
59
+ # until klass == OrigenAppGenerators::Base
60
+ # end
61
+
45
62
  def debugger
46
63
  require 'byebug'
47
64
  byebug # rubocop:disable Lint/Debugger
@@ -74,7 +91,11 @@ module OrigenAppGenerators
74
91
  create_link file[:dest], file[:source]
75
92
  end
76
93
  elsif file[:type] == :dir || file[:type] == :directory
77
- empty_directory(file[:dest] || file[:source])
94
+ if file[:nokeep]
95
+ empty_directory(file[:dest] || file[:source])
96
+ else
97
+ copy_file('dot_keep', "#{file[:dest]}/.keep")
98
+ end
78
99
  else
79
100
  dest = file[:dest] || file[:source]
80
101
  if file[:copy] || dest =~ /.erb$/
@@ -62,7 +62,7 @@ module OrigenAppGenerators
62
62
  inputs += " ['#{first}', '#{second}', :default, :default, :default]"
63
63
  end
64
64
  inputs = ",#{inputs}" unless test_inputs.empty?
65
- end_of_test_inputs = /\n\s*]\s*#\s*END_OF_TEST_INPUTS/
65
+ end_of_test_inputs = /\n\s*\]\s*#\s*END_OF_TEST_INPUTS/
66
66
  inject_into_file "lib/#{Origen.app.name}.rb", inputs, before: end_of_test_inputs
67
67
  end
68
68
 
@@ -79,17 +79,23 @@ module OrigenAppGenerators
79
79
  # list.delete(:web_doc_layout)
80
80
  list.delete(:lib_readme)
81
81
  list.delete(:lib_readme_dev)
82
+ list.delete(:templates_shared)
82
83
  # Example of how to add a file, in this case the file will be compiled and copied to
83
84
  # the same location in the new app
84
85
  # list[:config_shared_commands] = { source: 'config/shared_commands.rb' }
85
86
  list[:config_load_generators] = { source: 'config/load_generators.rb' }
87
+ list[:lib_base] = { source: 'lib/base.rb', dest: "lib/#{@name}/base.rb" }
86
88
  list[:lib_plugin] = { source: 'lib/plugin.rb', dest: "lib/#{@name}/plugin.rb" }
87
89
  list[:lib_application] = { source: 'lib/application.rb', dest: "lib/#{@name}/application.rb" }
88
90
  # Alternatively specifying a different destination, typically you would do this when
89
91
  # the final location is dynamic
90
92
  # list[:gemspec] = { source: 'gemspec.rb', dest: "#{@name}.gemspec" }
91
93
  # Example of how to create a directory
92
- # list[:pattern_dir] = { dest: "pattern", type: :directory }
94
+ list[:templates_app] = { dest: 'templates/app_generators/application', type: :directory }
95
+ list[:templates_plugin] = { dest: 'templates/app_generators/plugin', type: :directory }
96
+ list[:templates_base] = { dest: 'templates/app_generators/base', type: :directory }
97
+ # By default, directories created in this way will contain a .keep file, to inhibit this:
98
+ # list[:pattern_dir] = { dest: "pattern", type: :directory, nokeep: true }
93
99
  # Example of how to create a symlink
94
100
  # list[:target_default] = { source: 'debug.rb', # Relative to the file being linked to
95
101
  # dest: 'target/default.rb', # Relative to destination_root
File without changes
@@ -86,6 +86,8 @@ module <%= @namespace %>
86
86
  # list[:gemspec] = { source: 'gemspec.rb', dest: "#{@name}.gemspec" }
87
87
  # Example of how to create a directory
88
88
  # list[:pattern_dir] = { dest: "pattern", type: :directory }
89
+ # By default, directories created in this way will contain a .keep file, to inhibit this:
90
+ # list[:pattern_dir] = { dest: "pattern", type: :directory, nokeep: true }
89
91
  # Example of how to create a symlink
90
92
  # list[:target_default] = { source: 'debug.rb', # Relative to the file being linked to
91
93
  # dest: 'target/default.rb', # Relative to destination_root
@@ -2,6 +2,8 @@ module <%= @namespace %>
2
2
  # This will be the parent class of all of your application generators, it provides a place
3
3
  # to add anything that you want to be added to all of your applications
4
4
  class Application < OrigenAppGenerators::Application
5
+ include Base
6
+
5
7
  # Any methods added above the protected line will get automatically invoked
6
8
  # at the start of *all* of your application generators.
7
9
 
@@ -36,6 +38,8 @@ module <%= @namespace %>
36
38
  # list[:gemspec] = { source: 'gemspec.rb', dest: "#{@name}.gemspec" }
37
39
  # Example of how to create a directory
38
40
  # list[:pattern_dir] = { dest: "pattern", type: :directory }
41
+ # By default, directories created in this way will contain a .keep file, to inhibit this:
42
+ # list[:pattern_dir] = { dest: "pattern", type: :directory, nokeep: true }
39
43
  # Example of how to create a symlink
40
44
  # list[:target_default] = { source: 'debug.rb', # Relative to the file being linked to
41
45
  # dest: 'target/default.rb', # Relative to destination_root
@@ -0,0 +1,53 @@
1
+ module <%= @namespace %>
2
+ # This is a mixin that is included in both the application and plugin
3
+ # generators, it provides a place to add things that should apply to
4
+ # all of your applications and plugins
5
+ module Base
6
+ # Any helper methods added to this base module will not be automatically invoked,
7
+ # you must call them from either the top-level application or plugin generators,
8
+ # or from a child generator.
9
+
10
+ protected
11
+
12
+ # Here you can modify the default list of files that are included in all of your
13
+ # applications AND plugins.
14
+ #
15
+ # See here for the default list of files:
16
+ # https://github.com/Origen-SDK/origen_app_generators/blob/master/lib/origen_app_generators/application.rb
17
+ # If the child generator is a plugin, then this list is then modified by the base plugin generator which
18
+ # you can see here:
19
+ # https://github.com/Origen-SDK/origen_app_generators/blob/master/lib/origen_app_generators/plugin.rb
20
+ #
21
+ # The filelist can contain references to generate files, directories or symlinks in the
22
+ # new application.
23
+ #
24
+ # To make your generators more maintainable, try and re-use as much as possible
25
+ # from the parent generators, this means that your generator will automatically stay up
26
+ # to date with the latest conventions.
27
+ #
28
+ # Additional files can be added or removed from the filelist as shown below.
29
+ def filelist
30
+ @filelist ||= begin
31
+ list = super # Always pick up the parent list
32
+ # Example of how to remove a file from the parent list
33
+ # list.delete(:web_doc_layout)
34
+ # Example of how to add a file, in this case the file will be compiled and copied to
35
+ # the same location in the new app
36
+ # list[:config_shared_commands] = { source: 'config/shared_commands.rb' }
37
+ # Alternatively specifying a different destination, typically you would do this when
38
+ # the final location is dynamic
39
+ # list[:gemspec] = { source: 'gemspec.rb', dest: "#{@name}.gemspec" }
40
+ # Example of how to create a directory
41
+ # list[:pattern_dir] = { dest: "pattern", type: :directory }
42
+ # By default, directories created in this way will contain a .keep file, to inhibit this:
43
+ # list[:pattern_dir] = { dest: "pattern", type: :directory, nokeep: true }
44
+ # Example of how to create a symlink
45
+ # list[:target_default] = { source: 'debug.rb', # Relative to the file being linked to
46
+ # dest: 'target/default.rb', # Relative to destination_root
47
+ # type: :symlink }
48
+ # Remember to return the final list
49
+ list
50
+ end
51
+ end
52
+ end
53
+ end
@@ -1,4 +1,5 @@
1
1
  require 'origen_app_generators'
2
+ require '<%= @name %>/base'
2
3
  require '<%= @name %>/application'
3
4
  require '<%= @name %>/plugin'
4
5
 
@@ -2,6 +2,8 @@ module <%= @namespace %>
2
2
  # This will be the parent class of all of your plugin generators, it provides a place
3
3
  # to add anything that you want to be added to all of your plugins
4
4
  class Plugin < OrigenAppGenerators::Plugin
5
+ include Base
6
+
5
7
  def initialize(*args)
6
8
  # This makes all of your plugins be configured for internal distribution, i.e. rather
7
9
  # than via rubygems.org
@@ -19,7 +21,7 @@ module <%= @namespace %>
19
21
 
20
22
  # Here you can modify the default list of files that are included in all of your plugins.
21
23
  #
22
- # Since this is a plugin genrator, the default list of files comprises the application list,
24
+ # Since this is a plugin generator, the default list of files comprises the application list,
23
25
  # which you can see here:
24
26
  # https://github.com/Origen-SDK/origen_app_generators/blob/master/lib/origen_app_generators/application.rb
25
27
  # And this is then modified by the base plugin generator which you can see here:
@@ -46,6 +48,8 @@ module <%= @namespace %>
46
48
  # list[:gemspec] = { source: 'gemspec.rb', dest: "#{@name}.gemspec" }
47
49
  # Example of how to create a directory
48
50
  # list[:pattern_dir] = { dest: "pattern", type: :directory }
51
+ # By default, directories created in this way will contain a .keep file, to inhibit this:
52
+ # list[:pattern_dir] = { dest: "pattern", type: :directory, nokeep: true }
49
53
  # Example of how to create a symlink
50
54
  # list[:target_default] = { source: 'debug.rb', # Relative to the file being linked to
51
55
  # dest: 'target/default.rb', # Relative to destination_root
@@ -10,7 +10,7 @@ source '<%= Origen.site_config.gem_server %>'
10
10
  # your application's test coverage
11
11
  gem 'coveralls', require: false
12
12
  <% end -%>
13
- gem 'byebug'
13
+ gem 'byebug', '<9.1.0' # This version restriction required if you need Ruby < 2.2, otherwise you can remove it
14
14
  gem 'ripper-tags'
15
15
  gem 'origen_doc_helpers'
16
16
  gem 'origen_updater'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: origen_app_generators
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stephen McGinty
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-08-18 00:00:00.000000000 Z
11
+ date: 2017-08-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: origen
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 0.22.0
19
+ version: 0.23.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: 0.22.0
26
+ version: 0.23.0
27
27
  description:
28
28
  email:
29
29
  - stephen.f.mcginty@gmail.com
@@ -64,6 +64,7 @@ files:
64
64
  - templates/app_generators/application/config/maillist_prod.txt
65
65
  - templates/app_generators/application/config/version.rb
66
66
  - templates/app_generators/application/doc/history
67
+ - templates/app_generators/application/dot_keep
67
68
  - templates/app_generators/application/lib/app.rake
68
69
  - templates/app_generators/application/lib/module.rb
69
70
  - templates/app_generators/application/lib/top_level.rb
@@ -80,6 +81,7 @@ files:
80
81
  - templates/app_generators/new/info.md.erb
81
82
  - templates/app_generators/origen_infrastructure/app_generator_plugin/config/load_generators.rb
82
83
  - templates/app_generators/origen_infrastructure/app_generator_plugin/lib/application.rb
84
+ - templates/app_generators/origen_infrastructure/app_generator_plugin/lib/base.rb
83
85
  - templates/app_generators/origen_infrastructure/app_generator_plugin/lib/module.rb
84
86
  - templates/app_generators/origen_infrastructure/app_generator_plugin/lib/plugin.rb
85
87
  - templates/app_generators/plugin/Gemfile
@@ -133,7 +135,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
133
135
  version: 1.8.11
134
136
  requirements: []
135
137
  rubyforge_project:
136
- rubygems_version: 2.5.2
138
+ rubygems_version: 2.6.7
137
139
  signing_key:
138
140
  specification_version: 4
139
141
  summary: Origen application generators