origen_app_generators 0.4.0 → 1.0.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: c72ec7c295367269fb14603d3d5e0685e27c1302
4
- data.tar.gz: 2b017360b1a782945a2bd950c07667eb4f12951f
3
+ metadata.gz: 6bd751932ba648a39c5f1b2d8cd61d1cc224d739
4
+ data.tar.gz: a71ffc595f1da44df412126be1bcaf68e5f369e7
5
5
  SHA512:
6
- metadata.gz: 4b8a4fafa1c1f106b10dcc34311277e7fe986dcc5d65c485e4e0a9135b69bd0d41a5ee2e54a20619687b23fbb68be0047c8e599d97402ad096c7024dc6fa5463
7
- data.tar.gz: 7575ca6ad90c50c62fc4561cf608f2c7c36423dd3d8d29a73a8206ab064346a4ab55d01c2ef205002a7b6da5f8c0b8952e2dd717535b5a9a64600292f23eac58
6
+ metadata.gz: 3990cdbb27929fb3fe39665776ddd6ad2d559ff8ba65c158e9761fe47aa8f004b1bd9ba8142a8721d4103c4e4e6c0f492ed23671a3cd105e5ae03d479160699b
7
+ data.tar.gz: 442e825f3e580a2edb99c5c32584f69c6665fc5db5015812ed5ece72bf7353ce7a10576554ecb6fef7c8f6f5440ac4402ce0d36b3f46024d07cf018b4b9db3e5
@@ -5,34 +5,34 @@
5
5
  # that any unintended dependencies on a real app environment will
6
6
  # be highlighted during test.
7
7
 
8
- # Path to Origen lib dir must be supplied as first arg
9
- $LOAD_PATH.unshift ARGV[0]
10
- $LOAD_PATH.unshift "#{File.expand_path(File.dirname(__FILE__))}/../"
8
+ $LOAD_PATH.unshift ARGV.shift
9
+ $LOAD_PATH.unshift ARGV.shift
10
+ $LOAD_PATH.unshift ARGV.shift
11
11
 
12
12
  require 'fileutils'
13
+ require 'origen'
13
14
 
14
15
  # Prevent the bundle from loading by running this outside of the
15
- if RUBY_PLATFORM == 'i386-mingw32'
16
- tmp_dir = 'C:/tmp/origen_app_generators/new_app'
16
+ if Origen.os.windows?
17
+ tmp_dir = 'C:/tmp/my_app_generators/new_app'
17
18
  else
18
- tmp_dir = '/tmp/origen_app_generators/new_app'
19
+ tmp_dir = '/tmp/my_app_generators/new_app'
19
20
  end
20
21
  FileUtils.rm_rf tmp_dir if File.exist?(tmp_dir)
21
22
  FileUtils.mkdir_p tmp_dir
22
23
 
23
24
  begin
24
- require 'origen'
25
25
  Dir.chdir tmp_dir do
26
- # For some reason this is not being defined by required origen anymore
26
+ # For some reason this is not being defined by require origen anymore
27
27
  User = Origen::Users::User unless defined? User
28
- gem 'byebug'
28
+ require 'byebug'
29
29
  require 'origen_app_generators'
30
- if ARGV[1] == 'invoke'
31
- OrigenAppGenerators.invoke('tmp')
32
- else
33
- eval(ARGV[1]).start ['tmp']
34
- end
30
+ load_generators = ARGV.shift
31
+ OrigenAppGenerators.unload_generators unless ARGV[0]
32
+ require load_generators if File.exist?(load_generators)
33
+
34
+ OrigenAppGenerators.invoke('tmp')
35
35
  end
36
36
  ensure
37
- system "mv #{tmp_dir}/tmp tmp"
37
+ FileUtils.mv "#{tmp_dir}/tmp", 'tmp' if File.exist?("#{tmp_dir}/tmp")
38
38
  end
data/bin/fix_my_workspace CHANGED
@@ -2,9 +2,17 @@
2
2
  $VERBOSE = nil # Don't care about world writable dir warnings and the like
3
3
 
4
4
  if $_fix_my_workspace_version_check
5
- $_fix_my_workspace_version = '0.6.0'
5
+ $_fix_my_workspace_version = '0.7.0'
6
6
  else
7
- require 'origen'
7
+ if File.exist?(File.expand_path('../../lib/origen.rb', __FILE__))
8
+ # If this script is being run from within an origen-core workspace, use that Origen-core,
9
+ # not the system-installed origen-core version.
10
+ $LOAD_PATH.unshift(File.expand_path('../../lib', __FILE__))
11
+ require 'origen'
12
+ else
13
+ # Use system-installed Origen (the gem in system Ruby)
14
+ require 'origen'
15
+ end
8
16
 
9
17
  if !Origen.site_config.gem_manage_bundler
10
18
  puts 'Sorry but you have opted to manage Bundler yourself via your Origen site config, and this means'
@@ -37,6 +37,13 @@ class OrigenAppGeneratorsApplication < Origen::Application
37
37
  # In parallel go and edit config/version.rb to enable the semantic version code.
38
38
  config.semantically_version = true
39
39
 
40
+ config.shared = {
41
+ #patterns: "pattern",
42
+ #templates: "templates",
43
+ #programs: "program",
44
+ command_launcher: "config/shared_commands.rb"
45
+ }
46
+
40
47
  # An example of how to set application specific LSF parameters
41
48
  #config.lsf.project = "msg.te"
42
49
 
@@ -0,0 +1,170 @@
1
+ # The requested command is passed in here as @command
2
+ case @command
3
+
4
+ when "app_gen:test"
5
+ options = {}
6
+
7
+ opt_parser = OptionParser.new do |opts|
8
+ opts.banner = <<-END
9
+ Test the generators by emulating the 'origen new' command execution and building the new
10
+ application into the tmp directory.
11
+
12
+ Usage: origen app_gen:test [options]
13
+ END
14
+ opts.on('-d', '--debugger', 'Enable the debugger') { options[:debugger] = true }
15
+ opts.on('-i', '--inputs INDEX', Integer, "Apply the set of test inputs defined in #{Origen.app.namespace}::TEST_INPUTS[INDEX]") { |f| options[:inputs] = f }
16
+ opts.on('-r', '--regression', "Run all sets of test inputs defined in #{Origen.app.namespace}::TEST_INPUTS[INDEX]") { options[:regression] = true }
17
+ opts.on('-a', '--all_generators', "Include the generators from Origen core") { options[:all_generators] = true }
18
+ opts.separator ''
19
+ opts.on('-h', '--help', 'Show this message') { puts opts; exit }
20
+ end
21
+
22
+ opt_parser.orig_parse! ARGV
23
+
24
+ FileUtils.rm_rf "#{Origen.root}/tmp" if File.exist?("#{Origen.root}/tmp")
25
+
26
+ if options[:inputs] || options[:regression]
27
+ if options[:regression]
28
+ inputs = Origen.app.namespace.constantize::TEST_INPUTS
29
+ else
30
+ inputs = [Origen.app.namespace.constantize::TEST_INPUTS[options[:inputs].to_i]]
31
+ end
32
+
33
+ prefix = 'bundle exec ' unless Origen.site_config.gem_manage_bundler
34
+
35
+ overall_fail = false
36
+
37
+ inputs.each do |vals|
38
+ test_failed = false
39
+ post_build_operations = Array(vals.pop)
40
+ target_load_test_required = false
41
+ post_build_operations = post_build_operations.map do |op|
42
+ if op.to_s == 'default'
43
+ target_load_test_required = true
44
+ ['origen -v',
45
+ 'origen lint --no-correct',
46
+ 'bundle exec rake new_app_tests:load_target',
47
+ 'origen web compile --no-serve'
48
+ ]
49
+ elsif op.to_s == 'load_target'
50
+ target_load_test_required = true
51
+ 'rake new_app_tests:load_target'
52
+ else
53
+ op
54
+ end
55
+ end.flatten
56
+
57
+ str = vals.map { |i| i == :default ? "\n" : "#{i}\n" }.join('')
58
+ cmd = "#{prefix} origen app_gen:test"
59
+ cmd += ' --debugger' if options[:debugger]
60
+ cmd += ' --all_generators' if options[:all_generators]
61
+ passed = false
62
+ Bundler.with_clean_env do
63
+ passed = system "echo '#{str}' | #{cmd}"
64
+ end
65
+
66
+ if passed
67
+ # The app is successfully built, now see if it works...
68
+ unless post_build_operations.empty?
69
+ if target_load_test_required
70
+ FileUtils.cp "#{Origen.root!}/lib/tasks/new_app_tests.rake", 'tmp/lib/tasks'
71
+ end
72
+
73
+ operation_failed = false
74
+ Bundler.with_clean_env do
75
+ Dir.chdir "#{Origen.root}/tmp" do
76
+ post_build_operations.each_with_index do |op, i|
77
+ if i == 0 && !Origen.site_config.gem_manage_bundler
78
+ system('bundle')
79
+ end
80
+ Origen.log.info "Running command: #{op}"
81
+ if system("#{prefix}#{op}")
82
+ Origen.log.success "Command passed: #{op}"
83
+ else
84
+ Origen.log.error "Command failed: #{op}"
85
+ operation_failed = true
86
+ end
87
+ end
88
+ end
89
+ end
90
+
91
+ if operation_failed
92
+ if options[:regression]
93
+ overall_fail = true
94
+ else
95
+ Origen.app.stats.report_fail
96
+ exit 1
97
+ end
98
+ end
99
+ end
100
+ else
101
+ Origen.log.error "The generator failed to build!"
102
+ if options[:regression]
103
+ overall_fail = true
104
+ else
105
+ Origen.app.stats.report_fail
106
+ exit 1
107
+ end
108
+ end
109
+ end
110
+
111
+ if options[:regression] && overall_fail
112
+ Origen.app.stats.report_fail
113
+ exit 1
114
+ else
115
+ Origen.app.stats.report_pass
116
+ exit 0
117
+ end
118
+
119
+ else
120
+
121
+ # Launch the generator in a standalone shell,
122
+ # this is to emulate how it will run in real life and cause it to fail if there are
123
+ # any dependencies on running within an Origen app environment
124
+ boot = "#{Origen.root!}/bin/boot.rb"
125
+ origen_lib = "#{Origen.top}/lib"
126
+ app_gen_lib = "#{Origen.root!}/lib"
127
+ app_lib = "#{Origen.root}/lib"
128
+ load_generators = "#{Origen.root}/config/load_generators.rb"
129
+ cmd = "#{boot} #{origen_lib} #{app_gen_lib} #{app_lib} #{load_generators}"
130
+ cmd = "#{cmd} true" if options[:all_generators] || Origen.app.name == :origen_app_generators
131
+ cmd = "ruby #{cmd}" if Origen.os.windows?
132
+ cmd = "bundle exec #{cmd}" unless Origen.site_config.gem_manage_bundler
133
+ # puts cmd
134
+ passed = false
135
+ Bundler.with_clean_env do
136
+ passed = system cmd
137
+ end
138
+ exit passed ? 0 : 1
139
+ end
140
+
141
+ when "app_gen:new"
142
+ options = {}
143
+
144
+ opt_parser = OptionParser.new do |opts|
145
+ opts.banner = <<-END
146
+ Create a new application generator.
147
+
148
+ Usage: origen app_gen:new [options]
149
+ END
150
+ opts.on('-d', '--debugger', 'Enable the debugger') { options[:debugger] = true }
151
+ opts.separator ''
152
+ opts.on('-h', '--help', 'Show this message') { puts opts; exit }
153
+ end
154
+
155
+ opt_parser.orig_parse! ARGV
156
+
157
+ OrigenAppGenerators::New.start []
158
+ exit 0
159
+
160
+ # Always leave an else clause to allow control to fall back through to the Origen command handler.
161
+ # You probably want to also add the command details to the help shown via 'origen -h',
162
+ # you can do this bb adding the required text to @plugin_commands before handing control back to
163
+ # Origen.
164
+ else
165
+ @plugin_commands << <<-EOT
166
+ app_gen:test Test run the 'origen new' command operation using your latest generators
167
+ app_gen:new Create a new application or plugin generator
168
+ EOT
169
+
170
+ end
data/config/version.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  module OrigenAppGenerators
2
- MAJOR = 0
3
- MINOR = 4
2
+ MAJOR = 1
3
+ MINOR = 0
4
4
  BUGFIX = 0
5
5
  DEV = nil
6
6
 
@@ -1,4 +1,5 @@
1
1
  require 'origen'
2
+ require_relative '../config/application.rb'
2
3
  require 'colored'
3
4
  require 'origen_app_generators/base'
4
5
  require 'origen_app_generators/application'
@@ -8,40 +9,71 @@ require 'origen_app_generators/empty_plugin'
8
9
  require 'origen_app_generators/new'
9
10
  require 'origen_app_generators/test_engineering/test_block'
10
11
  require 'origen_app_generators/test_engineering/stand_alone_application'
12
+ require 'origen_app_generators/origen_infrastructure/app_generator_plugin'
11
13
 
12
14
  module OrigenAppGenerators
13
15
  extend Origen::Utility::InputCapture
14
16
 
15
17
  TEST_INPUTS = [
16
- # Empty app
17
- ['0', '0', :default, :default, []],
18
- # Empty plugin
19
- ['0', '1', :default, :default, 'A test block', 'yes', []],
20
- # Stand alone test engineering app
21
- ['1', '0', :default, :default, 'Falcon, Eagle', 'Falcon[ram, atd(2), comm[ram(2), osc](3)], Eagle[ram(2), atd(4)]', ['origen g example']],
22
- # Test module
23
- ['1', '1', :default, :default, 'Test module for all flash IPs', 'FLASH_512K, FLASH_1024K', 'flash', ['origen g example']]
24
- ]
18
+ # 0 - Empty app
19
+ ['0', '0', :default, :default, :default],
20
+ # 1 - Empty plugin
21
+ ['0', '1', :default, :default, 'A test block', 'yes', :default],
22
+ # 2 - Stand alone test engineering app
23
+ ['2', '0', :default, :default, 'Falcon, Eagle', 'Falcon[ram, atd(2), comm[ram(2), osc](3)], Eagle[ram(2), atd(4)]', [:default, 'origen g example']],
24
+ # 3 - Test module
25
+ ['2', '1', :default, :default, 'Test module for all flash IPs', 'FLASH_512K, FLASH_1024K', 'flash', [:default, 'origen g example']],
26
+ # 4 - An app generators plugin
27
+ ['1', '0', :default, :default, 'My application generators', :default]
28
+ ] # END_OF_TEST_INPUTS Don't remove this comment, it is used by the app_gen:new command!
25
29
 
26
- # If adding any new generators manually always add them at the top, but
27
- # generally speaking don't, use 'rake new' to create a new generator instead
30
+ # As you add new generators to this app they will be entered here, this enables the
31
+ # mechanism to register them with the 'origen new' command.
32
+ # You should generally not modify this by hand, instead use the 'origen app_gen:new'
33
+ # command every time you want to create a new generator, and this will be filled in
34
+ # for you.
28
35
  AVAILABLE = {
29
- 'Test Engineering' => [
36
+ 'Test Engineering' => [
30
37
  OrigenAppGenerators::TestEngineering::TestBlock,
31
38
  OrigenAppGenerators::TestEngineering::StandAloneApplication
39
+ ],
40
+ 'Origen Infrastructure' => [
41
+ OrigenAppGenerators::OrigenInfrastructure::AppGeneratorPlugin
32
42
  ]
33
43
  }
34
44
 
45
+ # @api private
46
+ def self.add_generators(new_generators)
47
+ new_generators.each do |domain, gens|
48
+ if generators[domain]
49
+ gens.each { |g| generators[domain].unshift(g) }
50
+ new_generators.delete(domain)
51
+ end
52
+ end
53
+ @generators = new_generators.merge(generators)
54
+ end
55
+
56
+ # @api private
57
+ def self.unload_generators
58
+ @generators = {}
59
+ end
60
+
61
+ # @api private
62
+ def self.generators
63
+ @generators ||= AVAILABLE
64
+ end
65
+
66
+ # @api private
35
67
  def self.invoke(path)
36
68
  puts
37
- puts 'CHOOSE AN ENGINEERING DOMAIN'
69
+ puts 'CHOOSE AN APPLICATION DOMAIN'
38
70
  puts
39
71
  puts "Domain-specific application templates are available for the following areas (enter '0' to build an empty generic one)"
40
72
  puts
41
73
  i = 0
42
74
  accept = [0]
43
75
  puts '0 - Empty / Not listed'
44
- AVAILABLE.reverse_each do |domain, _generators|
76
+ generators.reverse_each do |domain, _generators|
45
77
  i += 1
46
78
  accept << i
47
79
  puts "#{i} - #{domain}"
@@ -65,7 +97,7 @@ module OrigenAppGenerators
65
97
  OrigenAppGenerators::EmptyPlugin.start [path]
66
98
  end
67
99
  else
68
- domain = AVAILABLE.to_a
100
+ domain = generators.to_a
69
101
  domain = domain[domain.size - selection]
70
102
  puts
71
103
  puts "CHOOSE FROM THE FOLLOWING #{domain[0].upcase} APPLICATION TEMPLATES"
@@ -11,6 +11,7 @@ module OrigenAppGenerators
11
11
  get_name
12
12
  get_type
13
13
  get_summary
14
+ @namespace = Origen.app.namespace
14
15
  end
15
16
 
16
17
  def set_type
@@ -22,56 +23,73 @@ module OrigenAppGenerators
22
23
  end
23
24
 
24
25
  def enable
25
- # Add require line
26
- module_declaration = /\nmodule OrigenAppGenerators/
27
- inject_into_file 'lib/origen_app_generators.rb', "require 'origen_app_generators/#{@domain_namespace.underscore}/#{@classname.underscore}'\n",
26
+ available = Origen.app.namespace.constantize::AVAILABLE
27
+ test_inputs = Origen.app.namespace.constantize::TEST_INPUTS
28
+
29
+ # **** Add require line ****
30
+ module_declaration = /\nmodule #{Origen.app.namespace}/
31
+ inject_into_file "lib/#{Origen.app.name}.rb", "require '#{Origen.app.name}/#{@domain_namespace.underscore}/#{@classname.underscore}'\n",
28
32
  before: module_declaration
29
33
 
30
- # Add to the AVAILABLE hash
31
- if OrigenAppGenerators::AVAILABLE[@domain_summary]
34
+ # **** Add to the AVAILABLE hash ****
35
+ if available[@domain_summary]
32
36
  existing_domain = /\s*('|")#{@domain_summary}('|") => \[\s*\n/
33
- inject_into_file 'lib/origen_app_generators.rb', " OrigenAppGenerators::#{@domain_namespace}::#{@classname},\n",
37
+ inject_into_file "lib/#{Origen.app.name}.rb", " #{Origen.app.namespace}::#{@domain_namespace}::#{@classname},\n",
34
38
  after: existing_domain
35
39
  else
36
40
  new_domain = <<-END
37
41
  '#{@domain_summary}' => [
38
- OrigenAppGenerators::#{@domain_namespace}::#{@classname},
42
+ #{Origen.app.namespace}::#{@domain_namespace}::#{@classname},
39
43
  ],
40
44
  END
41
45
  available_hash = /AVAILABLE = {\s*\n/
42
- inject_into_file 'lib/origen_app_generators.rb', new_domain, after: available_hash
46
+ inject_into_file "lib/#{Origen.app.name}.rb", new_domain, after: available_hash
43
47
  end
44
- end
45
48
 
46
- # Can't compile this as contains some final ERB, so substitute instead
47
- def customize_doc_page
48
- file = filelist[:doc_info][:dest]
49
- gsub_file file, 'TITLE_GOES_HERE', @title
50
- if @type == :plugin
51
- gsub_file file, 'INTRO_GOES_HERE', "This generates a customized version of the [Generic Plugin](<%= path 'origen_app_generators/plugin' %>)."
49
+ # **** Add a starter set of test inputs ****
50
+ # First work out what the selection numbers will be for the new generator
51
+ if available[@domain_summary]
52
+ first = available.size - available.find_index { |k, _| k == @domain_summary }
53
+ second = available[@domain_summary].size
52
54
  else
53
- gsub_file file, 'INTRO_GOES_HERE', "This generates a customized version of the [Generic Application](<%= path 'origen_app_generators/application' %>)."
55
+ first = available.size + 1
56
+ second = 0
54
57
  end
58
+ inputs = "\n # #{test_inputs.size} - #{@domain_namespace}::#{@classname}\n"
59
+ if @parentclass == 'Plugin'
60
+ inputs += " ['#{first}', '#{second}', :default, :default, 'A cool plugin', 'yes', :default]"
61
+ else
62
+ inputs += " ['#{first}', '#{second}', :default, :default, :default]"
63
+ end
64
+ inputs = ",#{inputs}" unless test_inputs.empty?
65
+ end_of_test_inputs = /\n\s*]\s*#\s*END_OF_TEST_INPUTS/
66
+ inject_into_file "lib/#{Origen.app.name}.rb", inputs, before: end_of_test_inputs
55
67
  end
56
68
 
69
+ # Can't compile this as contains some final ERB, so substitute instead
70
+ # def customize_doc_page
71
+ # file = filelist[:doc_info][:dest]
72
+ # gsub_file file, 'TITLE_GOES_HERE', @title
73
+ # if @type == :plugin
74
+ # gsub_file file, 'INTRO_GOES_HERE', "This generates a customized version of the [Generic Plugin](<%= path 'origen_app_generators/plugin' %>)."
75
+ # else
76
+ # gsub_file file, 'INTRO_GOES_HERE', "This generates a customized version of the [Generic Application](<%= path 'origen_app_generators/application' %>)."
77
+ # end
78
+ # end
79
+
57
80
  def conclude
81
+ system "origen lint #{Origen.root}/lib/#{Origen.app.name}.rb"
58
82
  puts
59
83
  puts "New generator created at: #{filelist[:generator][:dest]}"
60
84
  puts
61
85
  puts "Create any template files you need for this generator in: #{filelist[:templates_dir][:dest]}"
62
86
  puts
63
- puts "Before you go add some documentation about what this generates to: templates/web/origen_app_generators/origen_app_generators/#{@domain_namespace.underscore}/#{@classname.underscore}.md.erb"
64
- puts
87
+ # puts "Before you go add some documentation about what this generates to: templates/web/origen_app_generators/origen_app_generators/#{@domain_namespace.underscore}/#{@classname.underscore}.md.erb"
88
+ # puts
65
89
  end
66
90
 
67
91
  protected
68
92
 
69
- def existing_domains
70
- OrigenAppGenerators::AVAILABLE.keys.map do |key|
71
- key.sub(/ Engineering$/, '')
72
- end
73
- end
74
-
75
93
  def get_summary
76
94
  puts
77
95
  puts 'DESCRIBE YOUR NEW GENERATOR IN A FEW WORDS'
@@ -100,7 +118,7 @@ module OrigenAppGenerators
100
118
  @classname = get_text(single: true).split('::').last
101
119
  unless @classname.empty?
102
120
  if @classname.length >= 3
103
- valid = valid_constant?("OrigenAppGenerators::#{@domain_namespace}::#{@classname}")
121
+ valid = valid_constant?("#{Origen.app.namespace}::#{@domain_namespace}::#{@classname}")
104
122
  end
105
123
  unless valid
106
124
  puts 'That class name is not valid :-('
@@ -113,24 +131,24 @@ module OrigenAppGenerators
113
131
 
114
132
  def get_domain
115
133
  puts
116
- puts 'WHAT ENGINEERING DOMAIN WILL YOUR NEW APP TEMPLATE APPLY TO?'
134
+ puts 'WHAT APPLICATION DOMAIN WILL YOUR NEW APP TEMPLATE APPLY TO?'
117
135
  puts
118
- puts "Enter something like 'Test', 'Design', 'Product', etc."
136
+ puts "Enter something like 'Test Engineering', 'Design', etc."
119
137
  puts
120
138
  domain = get_text(single: true)
121
- domain = domain.sub(/ Engineering$/i, '').titleize
122
- @domain_summary = "#{domain} Engineering"
139
+ domain = domain.titleize
140
+ @domain_summary = domain
123
141
  @domain_namespace = @domain_summary.gsub(' ', '')
124
142
  end
125
143
 
126
144
  def filelist
127
145
  @filelist ||= {
128
146
  generator: { source: 'generator.rb',
129
- dest: "lib/origen_app_generators/#{@domain_namespace.underscore}/#{@classname.underscore}.rb" },
147
+ dest: "lib/#{Origen.app.name}/#{@domain_namespace.underscore}/#{@classname.underscore}.rb" },
130
148
  templates_dir: { dest: "templates/app_generators/#{@domain_namespace.underscore}/#{@classname.underscore}",
131
149
  type: :directory },
132
- doc_info: { source: 'info.md.erb',
133
- dest: "templates/web/origen_app_generators/#{@domain_namespace.underscore}/#{@classname.underscore}.md.erb" }
150
+ # doc_info: { source: 'info.md.erb',
151
+ # dest: "templates/web/#{Origen.app.name}/#{@domain_namespace.underscore}/#{@classname.underscore}.md.erb" }
134
152
  }
135
153
  end
136
154
  end
@@ -0,0 +1,103 @@
1
+ module OrigenAppGenerators
2
+ module OrigenInfrastructure
3
+ # Generates a generic application shell
4
+ class AppGeneratorPlugin < Plugin
5
+ desc "A plugin to make your own application templates available through the 'origen new' command"
6
+
7
+ def initialize(*args)
8
+ @audience = :internal
9
+ @validate_release_tests = ['origen app_gen:test --regression']
10
+ super
11
+ end
12
+
13
+ # Any methods that are not protected will get invoked in the order that they are
14
+ # defined when the generator is run, method naming is irrelevant unless you want
15
+ # to override a method that is defined by the parent class
16
+
17
+ def get_user_input
18
+ # The methods to get the common user input that applies to all applications will
19
+ # get called at the start automatically, you have a chance here to ask any additional
20
+ # questions that are specific to the type of application being generated
21
+ end
22
+
23
+ def generate_files
24
+ @runtime_dependencies = [
25
+ ['origen_app_generators', ">= #{Origen.app!.version}"]
26
+ ]
27
+ @post_runtime_dependency_comments = [
28
+ 'DO NOT ADD ANY ADDITIONAL RUNTIME DEPENDENCIES HERE, WHEN THESE GENERATORS',
29
+ 'ARE INVOKED TO GENERATE A NEW APPLICATION IT WILL NOT BE LAUNCHED FROM WITHIN',
30
+ 'A BUNDLED ENVIRONMENT.',
31
+ '',
32
+ 'THEREFORE GENERATORS MUST NOT RELY ON ANY 3RD PARTY GEMS THAT ARE NOT',
33
+ 'PRESENT AS PART OF A STANDARD ORIGEN INSTALLATION - I.E. YOU CAN ONLY RELY',
34
+ 'ON THE GEMS THAT ORIGEN ITSELF DEPENDS ON.'
35
+ ]
36
+ # Calling this will build all files, directories and symlinks contained in the
37
+ # hash returned by the filelist method
38
+ build_filelist
39
+ end
40
+
41
+ def modify_files
42
+ # If you want to modify any of the generated files you can do so now, you have access
43
+ # to all of the Thor Action methods described here:
44
+ # http://www.rubydoc.info/github/wycats/thor/Thor/Actions
45
+ # See the enable method in lib/app_generators/new.rb for some examples of using these.
46
+ end
47
+
48
+ def conclude
49
+ # Print out anything you think the user should know about their new application at the end
50
+ puts "New app created at: #{destination_root}"
51
+ puts
52
+ puts 'Create your first generator by running this command within your new app:'
53
+ puts ' origen app_gen:new'
54
+ puts
55
+ end
56
+
57
+ protected
58
+
59
+ # Defines the filelist for the generator, the default list is inherited from the
60
+ # parent class (Plugin).
61
+ # The filelist can contain references to generate files, directories or symlinks in the
62
+ # new application.
63
+ #
64
+ # Generally to make your generator more maintainable try and re-use as much as possible
65
+ # from the parent generator, this means that your generator will automatically stay up
66
+ # to date with the latest conventions
67
+ #
68
+ # The master templates live in templates/app_generators/plugin, but
69
+ # DO NOT MODIFY THESE FILES DIRECTLY.
70
+ # Either add or remove things post-generation in the modify_files method or copy the
71
+ # master file to the equivalent sub-directory of templates/app_generators/origen_infrastructure_engineering/app_generator_plugin
72
+ # which will override the version in the master directory.
73
+ #
74
+ # Additional files can be added or removed from the filelist as shown below.
75
+ def filelist
76
+ @filelist ||= begin
77
+ list = super # Always pick up the parent list
78
+ # Example of how to remove a file from the parent list
79
+ # list.delete(:web_doc_layout)
80
+ list.delete(:lib_readme)
81
+ list.delete(:lib_readme_dev)
82
+ # Example of how to add a file, in this case the file will be compiled and copied to
83
+ # the same location in the new app
84
+ # list[:config_shared_commands] = { source: 'config/shared_commands.rb' }
85
+ list[:config_load_generators] = { source: 'config/load_generators.rb' }
86
+ list[:lib_plugin] = { source: 'lib/plugin.rb', dest: "lib/#{@name}/plugin.rb" }
87
+ list[:lib_application] = { source: 'lib/application.rb', dest: "lib/#{@name}/application.rb" }
88
+ # Alternatively specifying a different destination, typically you would do this when
89
+ # the final location is dynamic
90
+ # list[:gemspec] = { source: 'gemspec.rb', dest: "#{@name}.gemspec" }
91
+ # Example of how to create a directory
92
+ # list[:pattern_dir] = { dest: "pattern", type: :directory }
93
+ # Example of how to create a symlink
94
+ # list[:target_default] = { source: 'debug.rb', # Relative to the file being linked to
95
+ # dest: 'target/default.rb', # Relative to destination_root
96
+ # type: :symlink }
97
+ # Remember to return the final list
98
+ list
99
+ end
100
+ end
101
+ end
102
+ end
103
+ end
@@ -27,7 +27,7 @@ module OrigenAppGenerators
27
27
  list[:web_navbar] = { source: 'templates/web/partials/_navbar_internal.html.erb', dest: 'templates/web/partials/_navbar.html.erb' }
28
28
  end
29
29
  list[:lib_readme] = { source: 'lib/README', dest: "lib/#{@name}/README" }
30
- list[:lib_reame_dev] = { source: 'lib_dev/README', dest: "lib/#{@name}_dev/README" }
30
+ list[:lib_readme_dev] = { source: 'lib_dev/README', dest: "lib/#{@name}_dev/README" }
31
31
  list
32
32
  end
33
33
  end
@@ -1,98 +1,6 @@
1
- desc 'Create an application generator'
2
- task :new do
3
- OrigenAppGenerators::New.start []
4
- end
5
-
6
- desc 'Test run the new app process'
7
- task :test, [:set] do |t, args|
8
- _delete_tmp_dir
9
- if args[:set]
10
- vals = OrigenAppGenerators::TEST_INPUTS[args[:set].to_i]
11
- vals.pop # Throw away the test commands
12
- str = vals.map { |i| i == :default ? "\n" : "#{i}\n" }.join('')
13
- result = system "echo '#{str}' | rake test"
14
- else
15
- result = _execute_generator(:invoke)
16
- end
17
- exit 1 unless result
18
- end
19
-
20
- desc "Test run a specific generator: rake 'run[TestEngineering::GenericTestBlock]'"
21
- task :run, [:generator_class] do |_t, args|
22
- _delete_tmp_dir
23
- begin
24
- klass = eval(args[:generator_class])
25
- rescue
26
- klass = eval("OrigenAppGenerators::#{args[:generator_class]}")
27
- end
28
- _execute_generator(klass)
29
- end
30
-
31
- desc 'Test that all generators build'
32
- task :regression do
33
- OrigenAppGenerators::TEST_INPUTS.each do |inputs|
34
- # Default test that are run for all app builds
35
- commands = ['origen -v',
36
- 'origen lint',
37
- 'rake new_app_tests:load_target',
38
- 'origen web compile --no-serve'
39
- ] + inputs.pop
40
- if ENV['TRAVIS'] && ENV['CONTINUOUS_INTEGRATION']
41
- prefix = 'bundle && bundle exec '
42
- end
43
- str = inputs.map { |i| i == :default ? "\n" : "#{i}\n" }.join('')
44
- # Test the app can build
45
- unless system "echo '#{str}' | rake test"
46
- Origen.app.stats.report_fail
47
- exit 1
48
- end
49
- # Copy the new app test rake tasks to the new app
50
- t = File.expand_path('../new_app_tests.rake', Pathname.new(__FILE__).realpath)
51
- FileUtils.cp t, 'tmp/lib/tasks'
52
- # Test the app can boot
53
- Bundler.with_clean_env do
54
- Dir.chdir 'tmp' do
55
- commands.each do |command|
56
- Origen.log.info "Running command: #{command}"
57
- unless system("#{prefix}#{command}")
58
- Origen.app.stats.report_fail
59
- exit 1
60
- end
61
- Origen.log.success "Command passed: #{command}"
62
- end
63
- end
64
- end
65
- end
66
- Origen.app.stats.report_pass
67
- end
68
-
69
- def _execute_generator(klass)
70
- # With the generator identified this now launches it in a standalone shell
71
- # This is to emulate how it will run in real life and cause it to fail if there are
72
- # any dependencies on running within an Origen app environment
73
- boot = "#{File.expand_path(File.dirname(__FILE__))}/boot.rb"
74
- origen_lib = "#{Origen.top}/lib"
75
- origen_lib = '/proj/mem_c40tfs_testeng/r49409/origen/lib'
76
- cmd = "#{boot} #{origen_lib} #{klass}"
77
- cmd = "ruby #{cmd}" if Origen.running_on_windows?
78
- # puts cmd
79
- result = false
80
- Bundler.with_clean_env do
81
- result = system cmd
82
- end
83
- result
84
- end
85
-
86
- def _delete_tmp_dir
87
- sh "rm -rf #{Origen.root}/tmp", verbose: false do |ok, _res|
88
- # Sometimes vim can lock a dir if the file is being viewed, trying again will
89
- # usually finish the job
90
- unless ok
91
- sh "rm -rf #{Origen.root}/tmp", verbose: false do |ok, _res|
92
- unless ok
93
- # I did my best!
94
- end
95
- end
96
- end
97
- end
98
- end
1
+ # You can define any Rake tasks to support your application here (or in any file
2
+ # ending in .rake in this directory).
3
+ #
4
+ # Rake (Ruby Make) is very useful for creating build scripts, see this short video
5
+ # for a quick introduction:
6
+ # http://railscasts.com/episodes/66-custom-rake-tasks
@@ -1,5 +1,7 @@
1
+ # This file has been added by origen_app_generators to test that the target can be
2
+ # loaded within this application, it will not be included in your final application
3
+ # builds once your generator has been released.
1
4
  namespace :new_app_tests do
2
- desc 'Test that the app and default target can load'
3
5
  task :load_target do
4
6
  Origen.app.target.load!
5
7
  end
@@ -80,7 +80,17 @@ class <%= @namespace %>Application < Origen::Application
80
80
  # system command
81
81
  # end
82
82
  #end
83
-
83
+ <% if @validate_release_tests %>
84
+ # Ensure that all tests pass before allowing a release to continue
85
+ def validate_release
86
+ if <%= Array(@validate_release_tests).map { |t| "!system('#{t}')" }.join(' || ') %>
87
+ puts "Sorry but you can't release with failing tests, please fix them and try again."
88
+ exit 1
89
+ else
90
+ puts "All tests passing, proceeding with release process!"
91
+ end
92
+ end
93
+ <% else %>
84
94
  # Ensure that all tests pass before allowing a release to continue
85
95
  #def validate_release
86
96
  # if !system("origen specs") || !system("origen examples")
@@ -90,6 +100,7 @@ class <%= @namespace %>Application < Origen::Application
90
100
  # puts "All tests passing, proceeding with release process!"
91
101
  # end
92
102
  #end
103
+ <% end -%>
93
104
 
94
105
  # To enabled source-less pattern generation create a class (for example PatternDispatcher)
95
106
  # to generate the pattern. This should return false if the requested pattern has been
@@ -1,4 +1,4 @@
1
- module OrigenAppGenerators
1
+ module <%= @namespace %>
2
2
  module <%= @domain_namespace %>
3
3
  # Generates a generic application shell
4
4
  class <%= @classname %> < <%= @parentclass %>
@@ -12,20 +12,33 @@ module OrigenAppGenerators
12
12
  def get_user_input
13
13
  # The methods to get the common user input that applies to all applications will
14
14
  # get called at the start automatically, you have a chance here to ask any additional
15
- # questions that are specific to the type of application being generated
15
+ # questions that are specific to the type of application being generated.
16
+ # See the following links for some examples of how to ask questions:
17
+ # https://github.com/Origen-SDK/origen_app_generators/blob/master/lib/origen_app_generators/base.rb#L94
18
+ # https://github.com/Origen-SDK/origen_app_generators/blob/master/lib/origen_app_generators/plugin.rb#L44
16
19
  end
17
20
 
18
21
  def generate_files
19
22
  # Calling this will build all files, directories and symlinks contained in the
20
- # hash returned by the filelist method
23
+ # hash returned by the filelist method below
21
24
  build_filelist
22
25
  end
23
26
 
24
27
  def modify_files
25
- # If you want to modify any of the generated files you can do so now, you have access
26
- # to all of the Thor Action methods described here:
28
+ # Here you can add or remove things post-generation.
29
+ # Alternatively, you can copy any master file to the equivalent sub-directory of
30
+ # templates/app_generators/<%= @domain_namespace.underscore %>/<%= @classname.underscore %>
31
+ # and this will override the version in the master directory.
32
+ #
33
+ # However, post generation modification is recommended when possible since it means that your
34
+ # generated applications will automatically stay up to date with any improvements made to the
35
+ # master file.
36
+ # The downside is that creating a post-generation modification takes a bit more effort to create
37
+ # compared to simply copying and modifying the file manually.
38
+ # To help with creating modifications, you have access to all of the Thor Action methods described here:
27
39
  # http://www.rubydoc.info/github/wycats/thor/Thor/Actions
28
- # See the enable method in lib/app_generators/new.rb for some examples of using these.
40
+ # See the enable method for an example of using these here:
41
+ # https://github.com/Origen-SDK/origen_app_generators/blob/master/lib/origen_app_generators/new.rb#L25
29
42
  end
30
43
 
31
44
  def conclude
@@ -36,38 +49,47 @@ module OrigenAppGenerators
36
49
  protected
37
50
 
38
51
  # Defines the filelist for the generator, the default list is inherited from the
39
- # parent class (<%= @parentclass %>).
52
+ # parent class (<%= @namespace %>::<%= @parentclass %>).
53
+ # <% if @parentclass == 'Plugin' -%>
54
+ # Since this is a plugin generator, the default list of files comprises the application list,
55
+ # which you can see here:
56
+ # https://github.com/Origen-SDK/origen_app_generators/blob/master/lib/origen_app_generators/application.rb
57
+ # And this is then modified by the base plugin generator which you can see here:
58
+ # https://github.com/Origen-SDK/origen_app_generators/blob/master/lib/origen_app_generators/plugin.rb
59
+ # Additionally, this application could have made further modifications to the default list
60
+ # within lib/<%= @namespace.underscore %>/plugin.rb
61
+ <% else %>
62
+ # See here for the default list of files included in an application:
63
+ # https://github.com/Origen-SDK/origen_app_generators/blob/master/lib/origen_app_generators/application.rb
64
+ # Additionally, this application could have made further modifications to the default list
65
+ # within lib/<%= @namespace.underscore %>/application.rb
66
+ <% end -%>
67
+ #
40
68
  # The filelist can contain references to generate files, directories or symlinks in the
41
69
  # new application.
42
70
  #
43
- # Generally to make your generator more maintainable try and re-use as much as possible
44
- # from the parent generator, this means that your generator will automatically stay up
45
- # to date with the latest conventions
46
- #
47
- # The master templates live in templates/app_generators/<%= @parentclass.downcase %>, but
48
- # DO NOT MODIFY THESE FILES DIRECTLY.
49
- # Either add or remove things post-generation in the modify_files method or copy the
50
- # master file to the equivalent sub-directory of templates/app_generators/<%= @domain_namespace.underscore %>/<%= @classname.underscore %>
51
- # which will override the version in the master directory.
71
+ # To make your generator more maintainable, try and re-use as much as possible
72
+ # from the parent generator, this means that your generators will automatically stay up
73
+ # to date with the latest conventions.
52
74
  #
53
75
  # Additional files can be added or removed from the filelist as shown below.
54
76
  def filelist
55
77
  @filelist ||= begin
56
78
  list = super # Always pick up the parent list
57
79
  # Example of how to remove a file from the parent list
58
- #list.delete(:web_doc_layout)
80
+ # list.delete(:web_doc_layout)
59
81
  # Example of how to add a file, in this case the file will be compiled and copied to
60
82
  # the same location in the new app
61
- #list[:config_shared_commands] = { source: 'config/shared_commands.rb' }
83
+ # list[:config_shared_commands] = { source: 'config/shared_commands.rb' }
62
84
  # Alternatively specifying a different destination, typically you would do this when
63
85
  # the final location is dynamic
64
- #list[:gemspec] = { source: 'gemspec.rb', dest: "#{@name}.gemspec" }
86
+ # list[:gemspec] = { source: 'gemspec.rb', dest: "#{@name}.gemspec" }
65
87
  # Example of how to create a directory
66
- #list[:pattern_dir] = { dest: "pattern", type: :directory }
88
+ # list[:pattern_dir] = { dest: "pattern", type: :directory }
67
89
  # Example of how to create a symlink
68
- #list[:target_default] = { source: 'debug.rb', # Relative to the file being linked to
69
- # dest: 'target/default.rb', # Relative to destination_root
70
- # type: :symlink }
90
+ # list[:target_default] = { source: 'debug.rb', # Relative to the file being linked to
91
+ # dest: 'target/default.rb', # Relative to destination_root
92
+ # type: :symlink }
71
93
  # Remember to return the final list
72
94
  list
73
95
  end
@@ -0,0 +1,7 @@
1
+ # This file is used to hook the generators defined in this plugin into the
2
+ # 'origen new' command, it must not be removed or modified
3
+
4
+ require 'origen_app_generators'
5
+ require "<%= @name %>"
6
+
7
+ OrigenAppGenerators.add_generators(<%= @namespace %>::AVAILABLE)
@@ -0,0 +1,48 @@
1
+ module <%= @namespace %>
2
+ # This will be the parent class of all of your application generators, it provides a place
3
+ # to add anything that you want to be added to all of your applications
4
+ class Application < OrigenAppGenerators::Application
5
+ # Any methods added above the protected line will get automatically invoked
6
+ # at the start of *all* of your application generators.
7
+
8
+ protected
9
+
10
+ # You can add helper methods that you want to make available to all of your application
11
+ # generators here, these will not get called unless a child generator calls them.
12
+
13
+ # Here you can modify the default list of files that are included in all of your applications.
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
+ #
18
+ # The filelist can contain references to generate files, directories or symlinks in the
19
+ # new application.
20
+ #
21
+ # To make your generators more maintainable, try and re-use as much as possible
22
+ # from the parent generator, this means that your generator will automatically stay up
23
+ # to date with the latest conventions.
24
+ #
25
+ # Additional files can be added or removed from the filelist as shown below.
26
+ def filelist
27
+ @filelist ||= begin
28
+ list = super # Always pick up the parent list
29
+ # Example of how to remove a file from the parent list
30
+ # list.delete(:web_doc_layout)
31
+ # Example of how to add a file, in this case the file will be compiled and copied to
32
+ # the same location in the new app
33
+ # list[:config_shared_commands] = { source: 'config/shared_commands.rb' }
34
+ # Alternatively specifying a different destination, typically you would do this when
35
+ # the final location is dynamic
36
+ # list[:gemspec] = { source: 'gemspec.rb', dest: "#{@name}.gemspec" }
37
+ # Example of how to create a directory
38
+ # list[:pattern_dir] = { dest: "pattern", type: :directory }
39
+ # Example of how to create a symlink
40
+ # list[:target_default] = { source: 'debug.rb', # Relative to the file being linked to
41
+ # dest: 'target/default.rb', # Relative to destination_root
42
+ # type: :symlink }
43
+ # Remember to return the final list
44
+ list
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,27 @@
1
+ require 'origen_app_generators'
2
+ require '<%= @name %>/application'
3
+ require '<%= @name %>/plugin'
4
+
5
+ module <%= @namespace %>
6
+ # Define test sets of inputs to test your generators. The last item in each array is
7
+ # required and always indicates what action should be taken once the application has
8
+ # been built. nil means take no action, :default means to run a default set of test
9
+ # operations, and an array of Origen command strings gives you control of exactly
10
+ # what to run.
11
+ #
12
+ # These inputs can be executed individually by running 'origen app_gen:test -i INDEX',
13
+ # where INDEX is the index number of the set you want to execute from the TEST_INPUTS
14
+ # array.
15
+ #
16
+ # You can also execute all sets of test inputs by running: 'origen app_gen:test -r'
17
+ TEST_INPUTS = [
18
+ ] # END_OF_TEST_INPUTS Don't remove this comment, it is used by the app_gen:new command!
19
+
20
+ # As you add new generators to this app they will be entered here, this enables the
21
+ # mechanism to register them with the 'origen new' command.
22
+ # You should generally not modify this by hand, instead use the 'origen app_gen:new'
23
+ # command every time you want to create a new generator, and this will be filled in
24
+ # for you.
25
+ AVAILABLE = {
26
+ }
27
+ end
@@ -0,0 +1,58 @@
1
+ module <%= @namespace %>
2
+ # This will be the parent class of all of your plugin generators, it provides a place
3
+ # to add anything that you want to be added to all of your plugins
4
+ class Plugin < OrigenAppGenerators::Plugin
5
+ def initialize(*args)
6
+ # This makes all of your plugins be configured for internal distribution, i.e. rather
7
+ # than via rubygems.org
8
+ @audience = :internal
9
+ super
10
+ end
11
+
12
+ # Any methods added above the protected line will get automatically invoked
13
+ # at the start of *all* of your plugin generators.
14
+
15
+ protected
16
+
17
+ # You can add helper methods that you want to make available to all of your plugin
18
+ # generators here, these will not get called unless a child generator calls them.
19
+
20
+ # Here you can modify the default list of files that are included in all of your plugins.
21
+ #
22
+ # Since this is a plugin genrator, the default list of files comprises the application list,
23
+ # which you can see here:
24
+ # https://github.com/Origen-SDK/origen_app_generators/blob/master/lib/origen_app_generators/application.rb
25
+ # And this is then modified by the base plugin generator which you can see here:
26
+ # https://github.com/Origen-SDK/origen_app_generators/blob/master/lib/origen_app_generators/plugin.rb
27
+ #
28
+ # The filelist can contain references to generate files, directories or symlinks in the
29
+ # new plugin.
30
+ #
31
+ # To make your generators more maintainable, try and re-use as much as possible
32
+ # from the parent generator, this means that your generators will automatically stay up
33
+ # to date with the latest conventions.
34
+ #
35
+ # Additional files can be added or removed from the filelist as shown below.
36
+ def filelist
37
+ @filelist ||= begin
38
+ list = super # Always pick up the parent list
39
+ # Example of how to remove a file from the parent list
40
+ # list.delete(:web_doc_layout)
41
+ # Example of how to add a file, in this case the file will be compiled and copied to
42
+ # the same location in the new app
43
+ # list[:config_shared_commands] = { source: 'config/shared_commands.rb' }
44
+ # Alternatively specifying a different destination, typically you would do this when
45
+ # the final location is dynamic
46
+ # list[:gemspec] = { source: 'gemspec.rb', dest: "#{@name}.gemspec" }
47
+ # Example of how to create a directory
48
+ # list[:pattern_dir] = { dest: "pattern", type: :directory }
49
+ # Example of how to create a symlink
50
+ # list[:target_default] = { source: 'debug.rb', # Relative to the file being linked to
51
+ # dest: 'target/default.rb', # Relative to destination_root
52
+ # type: :symlink }
53
+ # Remember to return the final list
54
+ list
55
+ end
56
+ end
57
+ end
58
+ end
@@ -3,8 +3,8 @@ source 'https://rubygems.org'
3
3
  source '<%= Origen.site_config.gem_server %>'
4
4
  <% end -%>
5
5
 
6
- # Only development dependencies (things your only plugin needs when running in its own workspace) should
7
- # be listed here in the Gemfile
6
+ # Only development dependencies (things your plugin needs only when it is running in its own workspace)
7
+ # should be listed here in the Gemfile
8
8
  <% if @audience == :external -%>
9
9
  # This gem provides integration with https://coveralls.io/ to monitor
10
10
  # your application's test coverage
@@ -31,7 +31,12 @@ Gem::Specification.new do |spec|
31
31
  spec.add_runtime_dependency "origen", ">= <%= @latest_origen_version %>"
32
32
  <% if @runtime_dependencies -%>
33
33
  <% @runtime_dependencies.each do |dep| -%>
34
- spec.add_runtime_dependency <%= dep.map{ |d| "\"#{d}\"" }.join(', ') %>
34
+ spec.add_runtime_dependency <%= dep.map{ |d| "\"#{d}\"" }.join(', ') %>
35
+ <% end -%>
36
+ <% end -%>
37
+ <% if @post_runtime_dependency_comments -%>
38
+ <% @post_runtime_dependency_comments.each do |line| -%>
39
+ # <%= line %>
35
40
  <% end -%>
36
41
  <% end -%>
37
42
  end
@@ -11,4 +11,10 @@ gem 'origen_debuggers'
11
11
 
12
12
  gem 'origen_doc_helpers'
13
13
 
14
- gem 'byebug', '~>3.5'
14
+ gem 'byebug'
15
+
16
+ gem 'origen_updater'
17
+
18
+ # Uncomment these if you want to use a visual debugger (e.g. Visual Studio Code) to debug your app
19
+ #gem 'ruby-debug-ide'
20
+ #gem 'debase'
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: 0.4.0
4
+ version: 1.0.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-05-24 00:00:00.000000000 Z
11
+ date: 2017-08-17 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.4.1
19
+ version: 0.22.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.4.1
26
+ version: 0.22.0
27
27
  description:
28
28
  email:
29
29
  - stephen.f.mcginty@gmail.com
@@ -31,10 +31,12 @@ executables: []
31
31
  extensions: []
32
32
  extra_rdoc_files: []
33
33
  files:
34
+ - bin/boot.rb
34
35
  - bin/fix_my_workspace
35
36
  - config/application.rb
36
37
  - config/boot.rb
37
38
  - config/commands.rb
39
+ - config/shared_commands.rb
38
40
  - config/version.rb
39
41
  - lib/origen_app_generators.rb
40
42
  - lib/origen_app_generators/application.rb
@@ -42,12 +44,12 @@ files:
42
44
  - lib/origen_app_generators/empty_application.rb
43
45
  - lib/origen_app_generators/empty_plugin.rb
44
46
  - lib/origen_app_generators/new.rb
47
+ - lib/origen_app_generators/origen_infrastructure/app_generator_plugin.rb
45
48
  - lib/origen_app_generators/plugin.rb
46
49
  - lib/origen_app_generators/sub_block_parser.rb
47
50
  - lib/origen_app_generators/test_engineering/stand_alone_application.rb
48
51
  - lib/origen_app_generators/test_engineering/test_block.rb
49
52
  - lib/tasks/app_generators.rake
50
- - lib/tasks/boot.rb
51
53
  - lib/tasks/new_app_tests.rake
52
54
  - templates/app_generators/application/.gitignore
53
55
  - templates/app_generators/application/.irbrc
@@ -76,6 +78,10 @@ files:
76
78
  - templates/app_generators/application/templates/web/release_notes.md.erb
77
79
  - templates/app_generators/new/generator.rb
78
80
  - templates/app_generators/new/info.md.erb
81
+ - templates/app_generators/origen_infrastructure/app_generator_plugin/config/load_generators.rb
82
+ - templates/app_generators/origen_infrastructure/app_generator_plugin/lib/application.rb
83
+ - templates/app_generators/origen_infrastructure/app_generator_plugin/lib/module.rb
84
+ - templates/app_generators/origen_infrastructure/app_generator_plugin/lib/plugin.rb
79
85
  - templates/app_generators/plugin/Gemfile
80
86
  - templates/app_generators/plugin/Rakefile
81
87
  - templates/app_generators/plugin/config/boot.rb
@@ -109,7 +115,7 @@ files:
109
115
  - templates/app_generators/test_engineering/test_block/target/default.rb
110
116
  homepage: http://origen-sdk.org/origen_app_generators
111
117
  licenses:
112
- - LGPL-3
118
+ - MIT
113
119
  metadata: {}
114
120
  post_install_message:
115
121
  rdoc_options: []