origen 0.55.5 → 0.58.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
  SHA256:
3
- metadata.gz: dfa42e7386a88300a4c615ccbfff6fadbab0ba6a705baa0ed3125963e53badac
4
- data.tar.gz: e6b18773bde78595c6f785539c425fb5ac342b45b1b5195404ce0ffc336d3724
3
+ metadata.gz: 4e328347b1a702ec37c86bbf6dbc0d65c9bf9376479fca31e4adc5208043f749
4
+ data.tar.gz: c72f5d3bbddbe4d4374450a828db82b14c3af5ea1177366e3cb62b2051037115
5
5
  SHA512:
6
- metadata.gz: bc51bc8d568ab2d520e59dae431eb48bb2c9378b497d695ed95bdf97b4d19b824e95ecfbb07122dcd696b493a3fc627100f58c1e9990c6504b4804ac3a1d156e
7
- data.tar.gz: fb01b860bff1024bc8fc5838012607440ffb069ae6e78757e01b6680c3600449c409f503a71730dac00eeab3d156a746e39cebf42b217f38fb9cef6bfbd8b6b2
6
+ metadata.gz: 441978473ed06d1df7f8ba36cd6734e5057de398846b7be6856c14e1d8a4973cc8d896958ab70dc69dccb44dea85012264006069afb50ec5406324c016841554
7
+ data.tar.gz: 21a81041aa01df9774cb94303e016460b070c7c9f296a5297148018c9d314a995ade0aa3432b959232bb70c524fe4249eb7912ecdf7798f273f46cfe3f493a4f
@@ -240,7 +240,7 @@ Style/InfiniteLoop:
240
240
  Style/Lambda:
241
241
  Description: 'Use the new lambda literal syntax for single-line blocks.'
242
242
  StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#lambda-multi-line'
243
- Enabled: true
243
+ Enabled: false
244
244
 
245
245
  Style/LambdaCall:
246
246
  Description: 'Use lambda.call(...) instead of lambda.(...).'
@@ -1,7 +1,7 @@
1
1
  module Origen
2
2
  MAJOR = 0
3
- MINOR = 55
4
- BUGFIX = 5
3
+ MINOR = 58
4
+ BUGFIX = 0
5
5
  DEV = nil
6
6
  VERSION = [MAJOR, MINOR, BUGFIX].join(".") + (DEV ? ".pre#{DEV}" : '')
7
7
  end
@@ -610,6 +610,9 @@ unless defined? RGen::ORIGENTRANSITION
610
610
  else
611
611
  @interface.reset_globals if @interface.respond_to?(:reset_globals)
612
612
  end
613
+ if @interface.respond_to?(:on_interface_reset)
614
+ @interface.on_interface_reset
615
+ end
613
616
  @interface
614
617
  end
615
618
 
@@ -252,8 +252,9 @@ module Origen
252
252
  end
253
253
 
254
254
  # Build the log file from the completed jobs
255
- def build_log(_options = {})
256
- Origen.log.info '*' * 70
255
+ def build_log(options = {})
256
+ log_method = options[:log_file] ? options[:log_file] : :info
257
+ Origen.log.send(log_method, '*' * 70)
257
258
  completed_jobs.each do |job|
258
259
  File.open(log_file(job[:id])) do |f|
259
260
  last_line_blank = false
@@ -291,12 +292,12 @@ module Origen
291
292
  stats.failed_files += Regexp.last_match[1].to_i
292
293
  elsif line =~ /ERROR!/
293
294
  stats.errors += 1
294
- Origen.log.send :relog, line
295
+ Origen.log.send :relog, line, options
295
296
  else
296
297
  # Compress multiple blank lines
297
298
  if line =~ /^\s*$/ || line =~ /.*\|\|\s*$/
298
299
  unless last_line_blank
299
- Origen.log.info
300
+ Origen.log.send(log_method, nil)
300
301
  last_line_blank = true
301
302
  end
302
303
  else
@@ -305,8 +306,7 @@ module Origen
305
306
  line =~ /Insecure world writable dir/ ||
306
307
  line =~ /To save all of/
307
308
  line.strip!
308
- # line.sub!(/.*\|\| /, '')
309
- Origen.log.send :relog, line
309
+ Origen.log.send :relog, line, options
310
310
  last_line_blank = false
311
311
  end
312
312
  end
@@ -319,7 +319,7 @@ module Origen
319
319
  end
320
320
  end
321
321
  end
322
- Origen.log.info '*' * 70
322
+ Origen.log.send(log_method, '*' * 70)
323
323
  stats.print_summary
324
324
  end
325
325
 
@@ -409,7 +409,7 @@ module Origen
409
409
  end
410
410
 
411
411
  str = "#{action} #{cmd}".strip
412
- str.sub('origen ', '') if str =~ /^origen /
412
+ str.sub!('origen ', '') if str =~ /^origen /
413
413
 
414
414
  # Append the --exec_remote switch to all Origen commands, this allows command
415
415
  # processing to be altered based on whether it is running locally or
@@ -114,7 +114,7 @@ module Origen
114
114
  fail "Sorry but #{path} already exists!"
115
115
  end
116
116
  FileUtils.rm_rf(path.to_s) if File.exist?(path.to_s)
117
- rc = RevisionControl.new remote: options[:rc_url], local: path.to_s
117
+ rc = RevisionControl.new options.merge(remote: options[:rc_url], local: path.to_s)
118
118
  rc.build
119
119
  end
120
120
 
@@ -54,27 +54,27 @@ class Numeric
54
54
  end
55
55
 
56
56
  def as_units(units)
57
- if self >= 1_000_000_000_000_000
57
+ if abs >= 1_000_000_000_000_000
58
58
  "#{self / 1_000_000_000_000_000.0}P#{units}"
59
- elsif self >= 1_000_000_000_000
59
+ elsif abs >= 1_000_000_000_000
60
60
  "#{self / 1_000_000_000_000.0}T#{units}"
61
- elsif self >= 1_000_000_000
61
+ elsif abs >= 1_000_000_000
62
62
  "#{self / 1_000_000_000.0}G#{units}"
63
- elsif self >= 1_000_000
63
+ elsif abs >= 1_000_000
64
64
  "#{self / 1_000_000.0}M#{units}"
65
- elsif self >= 1_000
65
+ elsif abs >= 1_000
66
66
  "#{self / 1_000.0}k#{units}"
67
- elsif self >= 1
67
+ elsif abs >= 1
68
68
  "#{self}#{units}"
69
- elsif self >= 1e-3
69
+ elsif abs >= 1e-3
70
70
  "#{self * 1_000}m#{units}"
71
- elsif self >= 1e-6
71
+ elsif abs >= 1e-6
72
72
  "#{self * 1_000_000}u#{units}"
73
- elsif self >= 1e-9
73
+ elsif abs >= 1e-9
74
74
  "#{self * 1_000_000_000}n#{units}"
75
- elsif self >= 1e-12
75
+ elsif abs >= 1e-12
76
76
  "#{self * 1_000_000_000_000}p#{units}"
77
- elsif self >= 1e-15
77
+ elsif abs >= 1e-15
78
78
  "#{self * 1_000_000_000_000_000}a#{units}"
79
79
  else
80
80
  "%.3e#{units}" % self
@@ -91,9 +91,23 @@ module Origen
91
91
  # end
92
92
 
93
93
  @pattern_sequence = true
94
- pattern_wrapper([], [], options) do
94
+
95
+ # The startup callbacks need to be skipped for now until the main thread is open for business
96
+ pattern_wrapper([], [], options.merge(call_startup_callbacks: false)) do
97
+ # The startup callbacks, if required, need to be wrapped up in a closure for calling
98
+ # later by the main thread
99
+ if (options.key?(:call_startup_callbacks) && !options[:call_startup_callbacks]) || options[:skip_startup]
100
+ pre_block = nil
101
+ else
102
+ pre_block = proc do
103
+ # Call startup callbacks
104
+ Origen.app.listeners_for(:startup).each do |listener|
105
+ listener.startup(options)
106
+ end
107
+ end
108
+ end
95
109
  PatternSequencer.send(:active=, true)
96
- @pattern_sequence = PatternSequence.new(job.output_pattern_filename, block)
110
+ @pattern_sequence = PatternSequence.new(job.output_pattern_filename, block, pre_block)
97
111
  @pattern_sequence.send(:execute)
98
112
  PatternSequencer.send(:active=, false)
99
113
  end
@@ -5,15 +5,17 @@ module Origen
5
5
  # Manages a single pattern sequence, i.e. an instance of PatternSequence is
6
6
  # created for every Pattern.sequence do ... end block
7
7
  class PatternSequence
8
- def initialize(name, block)
8
+ def initialize(name, block, pre_block = nil)
9
9
  @number_of_threads = 1
10
10
  @name = name
11
11
  @running_thread_ids = { main: true }
12
12
  # The contents of the main Pattern.sequence block will be executed as a thread and treated
13
13
  # like any other parallel block
14
- thread = PatternThread.new(:main, self, block, true)
14
+ thread = PatternThread.new(:main, self, block, true, pre_block)
15
15
  threads << thread
16
16
  active_threads << thread
17
+ PatSeq.send(:current_sequence=, self)
18
+ @sync_ups = {}
17
19
  end
18
20
 
19
21
  # Execute the given pattern
@@ -45,7 +47,7 @@ module Origen
45
47
  end
46
48
  alias_method :in_parallel, :thread
47
49
 
48
- def wait_for_threads(*ids)
50
+ def wait_for_threads_to_complete(*ids)
49
51
  completed = false
50
52
  blocked = false
51
53
  ids = ids.map(&:to_sym)
@@ -71,10 +73,48 @@ module Origen
71
73
  end
72
74
  end
73
75
  end
74
- alias_method :wait_for_thread, :wait_for_threads
76
+ alias_method :wait_for_thread, :wait_for_threads_to_complete
77
+ alias_method :wait_for_threads, :wait_for_threads_to_complete
78
+ alias_method :wait_for_thread_to_complete, :wait_for_threads_to_complete
75
79
 
76
80
  private
77
81
 
82
+ def sync_up(location, *ids)
83
+ options = ids.pop if ids.last.is_a?(Hash)
84
+ options ||= {}
85
+ ids = ids.map(&:to_sym)
86
+ if ids.empty? || ids.include?(:all)
87
+ ids = @running_thread_ids.keys
88
+ ids.delete(:main) unless options[:include_main]
89
+ end
90
+ # Just continue if this thread is not in the list
91
+ return unless ids.include?(current_thread.id)
92
+ # If we have entered the same sync up point after having previously completed it,
93
+ # then clear it and start again
94
+ if @sync_ups[location] && @sync_ups[location][:completed]
95
+ @sync_ups[location] = nil
96
+ end
97
+ # Don't need to worry about race conditions here as Origen only allows 1 thread
98
+ # to be active at a time
99
+ if @sync_ups[location]
100
+ @sync_ups[location][:arrived] << current_thread.id
101
+ else
102
+ @sync_ups[location] = { required: Set.new, arrived: Set.new, completed: false }
103
+ ids.each { |id| @sync_ups[location][:required] << id }
104
+ @sync_ups[location][:arrived] << current_thread.id
105
+ end
106
+ if @sync_ups[location][:required] == @sync_ups[location][:arrived]
107
+ @sync_ups[location][:completed] = true
108
+ end
109
+ blocked = false
110
+ until @sync_ups[location][:completed]
111
+ current_thread.waiting_for_thread(blocked)
112
+ blocked = true
113
+ Origen.log.debug "Waiting for sync_up: #{@sync_ups}"
114
+ end
115
+ current_thread.record_active if blocked
116
+ end
117
+
78
118
  def thread_running?(id)
79
119
  @running_thread_ids[id]
80
120
  end
@@ -86,7 +126,11 @@ module Origen
86
126
  def log_execution_profile
87
127
  if threads.size > 1
88
128
  thread_id_size = threads.map { |t| t.id.to_s.size }.max
89
- line_size = IO.console.winsize[1] - 35 - thread_id_size
129
+ begin
130
+ line_size = IO.console.winsize[1] - 35 - thread_id_size
131
+ rescue
132
+ line_size = 150
133
+ end
90
134
  line_size -= 16 if tester.try(:sim?)
91
135
  cycles_per_tick = (@cycle_count_stop / (line_size * 1.0)).ceil
92
136
  if tester.try(:sim?)
@@ -81,8 +81,27 @@ module Origen
81
81
  str
82
82
  end
83
83
 
84
+ # Wait for the given threads to complete. If no IDs given it will wait for all currently running
85
+ # threads (except for the one who called this) to complete.
86
+ def wait_for_threads_to_complete(*ids)
87
+ @current_sequence.wait_for_threads_to_complete(*ids)
88
+ end
89
+ alias_method :wait_for_thread, :wait_for_threads_to_complete
90
+ alias_method :wait_for_threads, :wait_for_threads_to_complete
91
+ alias_method :wait_for_thread_to_complete, :wait_for_threads_to_complete
92
+
93
+ def sync_up(*ids)
94
+ if @current_sequence
95
+ @current_sequence.send(:sync_up, caller[0], *ids)
96
+ end
97
+ end
98
+
84
99
  private
85
100
 
101
+ def current_sequence=(seq)
102
+ @current_sequence = seq
103
+ end
104
+
86
105
  def active=(val)
87
106
  @active = val
88
107
  end
@@ -14,7 +14,7 @@ module Origen
14
14
  # A record of when the thread is active to construct the execution profile
15
15
  attr_reader :events
16
16
 
17
- def initialize(id, sequence, block, primary = false)
17
+ def initialize(id, sequence, block, primary = false, pre_block = nil)
18
18
  if primary
19
19
  @cycle_count_start = 0
20
20
  else
@@ -24,6 +24,7 @@ module Origen
24
24
  @id = id.to_sym
25
25
  @sequence = sequence
26
26
  @block = block
27
+ @pre_block = pre_block
27
28
  @primary = primary
28
29
  @running = Concurrent::Event.new
29
30
  @waiting = Concurrent::Event.new
@@ -46,6 +47,7 @@ module Origen
46
47
  @thread = Thread.new do
47
48
  PatSeq.send(:thread=, self)
48
49
  wait
50
+ @pre_block.call if @pre_block
49
51
  @block.call(sequence)
50
52
  sequence.send(:thread_completed, self)
51
53
  record_cycle_count_stop
@@ -274,6 +274,7 @@ module Origen
274
274
  else
275
275
  msg = format_msg(method.to_s.upcase, msg)
276
276
  end
277
+ console.info msg if options[:verbose]
277
278
  @custom_logs[method.to_sym].info(msg)
278
279
  end
279
280
 
@@ -364,8 +365,10 @@ module Origen
364
365
  end
365
366
  end
366
367
 
367
- def relog(msg)
368
- if msg =~ /^\[(\w+)\] .*/
368
+ def relog(msg, options = {})
369
+ if options[:log_file]
370
+ send options[:log_file], msg.sub(/.*\|\|\s*/, ''), options
371
+ elsif msg =~ /^\[(\w+)\] .*/
369
372
  method = Regexp.last_match(1).downcase
370
373
  if respond_to?(method)
371
374
  send method, msg.sub(/.*\|\|\s*/, '')
@@ -443,6 +443,24 @@ module Origen
443
443
  end
444
444
  alias_method :add_locn, :add_location
445
445
 
446
+ # Add a way to update packages for the pins after the pins have been added.
447
+ #
448
+ # @example Updating a package after the pin has been added
449
+ # dut.add_pin :p1
450
+ # dut.add_package: package1
451
+ # dut.add_package: package2
452
+ # dut.pin(:p1).packages # => {}
453
+ # dut.pin(:p1).update_packages :packages # => [:package1, :package2]
454
+ # dut.pin(:p1).packages # => {:package1=>{}, :package2=>{}}
455
+ def update_packages(options = {})
456
+ packages = resolve_packages(options)
457
+ packages.each do |package_id|
458
+ package_id = package_id.respond_to?(:id) ? package_id.id : package_id
459
+ myself.packages[package_id] ||= {}
460
+ end
461
+ end
462
+ alias_method :update_package, :update_packages
463
+
446
464
  # Add a Device Interface Board (e.g. probecard at wafer probe or loadboard at final package test)
447
465
  # assignment to the pin. Some refer to this as a channel but API name is meant to be generic.
448
466
  def add_dib_assignment(str, options = {})
@@ -27,6 +27,7 @@ module Origen
27
27
  # @param [Hash] options Options to customize the run instance
28
28
  # @option options [Array] :target String Array of target names on which to run regression
29
29
  # @option options [Boolean] :build_reference (true) Build reference workspace automatically
30
+ # @option options [Symbol] :build_method (:init) whether to use a git init or git clone method to build the workspace
30
31
  # @option options [Boolean] :send_email (false) Send results email when regression complete
31
32
  # @option options [Boolean] :email_all_developers (false) If sending email, whether to email all developers or just user
32
33
  # @option options [Boolean] :report_results (false) Whether to report results inline to console
@@ -35,6 +36,7 @@ module Origen
35
36
  def run(options = {})
36
37
  options = {
37
38
  build_reference: true,
39
+ build_method: :init,
38
40
  send_email: false,
39
41
  email_all_developers: false,
40
42
  report_results: false,
@@ -46,7 +48,7 @@ module Origen
46
48
  Origen.lsf.clear_all
47
49
  yield options
48
50
  wait_for_completion(options) if options[:uses_lsf]
49
- save_and_delete_output
51
+ save_and_delete_output(options)
50
52
  else
51
53
  if options[:build_reference]
52
54
  @reference_tag = version_to_tag(options[:version] || get_version(options))
@@ -58,7 +60,8 @@ module Origen
58
60
  disable_origen_version_check do
59
61
  Dir.chdir reference_origen_root do
60
62
  Bundler.with_clean_env do
61
- system 'rm -rf lbin'
63
+ # Origen 0.40.0 started using origen-owned binstubs
64
+ system 'rm -rf lbin' if Gem::Version.new(Origen.version) < Gem::Version.new('0.40.0')
62
65
  # If regression is run using a service account, we need to setup the path/bundler manually
63
66
  # The regression manager needs to be passed a --service_account option when initiated.
64
67
  if options[:service_account]
@@ -125,7 +128,7 @@ module Origen
125
128
  end
126
129
 
127
130
  def summarize_results(options = {})
128
- Origen.lsf.build_log
131
+ Origen.lsf.build_log(options)
129
132
  stats = Origen.app.stats
130
133
  if options[:report_results]
131
134
  puts "Regression results: \n"
@@ -144,12 +147,16 @@ module Origen
144
147
 
145
148
  # Saves all generated output (to the reference dir) and then
146
149
  # deletes the output directory to save space
147
- def save_and_delete_output
148
- Origen.lsf.build_log
150
+ def save_and_delete_output(options = {})
151
+ Origen.lsf.build_log(options)
149
152
  Origen.log.flush
150
153
  Dir.chdir reference_origen_root do
151
154
  Bundler.with_clean_env do
152
- system 'bundle exec origen save all'
155
+ if options[:log_file]
156
+ system "bundle exec origen save all -f log/#{options[:log_file]}.txt"
157
+ else
158
+ system 'bundle exec origen save all'
159
+ end
153
160
  end
154
161
  end
155
162
  FileUtils.rm_rf "#{reference_origen_root}/output"
@@ -214,7 +221,7 @@ module Origen
214
221
  # Build the new reference workspace now.
215
222
  unless File.exist?(@reference_workspace)
216
223
  highlight { Origen.log.info 'Building reference workspace...' }
217
- ws.build(@reference_workspace)
224
+ ws.build(@reference_workspace, options)
218
225
  end
219
226
  ws.set_reference_workspace(@reference_workspace)
220
227
  else
@@ -229,7 +236,7 @@ module Origen
229
236
  end
230
237
  unless File.exist?(@reference_workspace)
231
238
  highlight { Origen.log.info 'Building reference workspace...' }
232
- ws.build(@reference_workspace)
239
+ ws.build(@reference_workspace, options)
233
240
  end
234
241
  ws.set_reference_workspace(@reference_workspace)
235
242
  end
@@ -345,6 +345,7 @@ module Origen
345
345
  end
346
346
 
347
347
  def initialize_local_dir(options = {})
348
+ return if options[:build_method] == :clone
348
349
  super
349
350
  unless initialized?(options)
350
351
  Origen.log.debug "Initializing Git workspace at #{local}"
@@ -8,7 +8,7 @@ Gem::Specification.new do |s|
8
8
  s.required_rubygems_version = Gem::Requirement.new(">= 1.8.11".freeze) if s.respond_to? :required_rubygems_version=
9
9
  s.require_paths = ["lib".freeze]
10
10
  s.authors = ["Stephen McGinty".freeze]
11
- s.date = "2020-05-08"
11
+ s.date = "2020-09-01"
12
12
  s.email = ["stephen.f.mcginty@gmail.com".freeze]
13
13
  s.files = ["bin/boot.rb".freeze, "config/application.rb".freeze, "config/boot.rb".freeze, "config/commands.rb".freeze, "config/shared_commands.rb".freeze, "config/version.rb".freeze, "lib/origen_app_generators.rb".freeze, "lib/origen_app_generators/application.rb".freeze, "lib/origen_app_generators/base.rb".freeze, "lib/origen_app_generators/empty_application.rb".freeze, "lib/origen_app_generators/empty_plugin.rb".freeze, "lib/origen_app_generators/new.rb".freeze, "lib/origen_app_generators/new_app_tests.rb".freeze, "lib/origen_app_generators/origen_infrastructure/app_generator_plugin.rb".freeze, "lib/origen_app_generators/plugin.rb".freeze, "lib/origen_app_generators/test_engineering/common.rb".freeze, "lib/origen_app_generators/test_engineering/stand_alone_application.rb".freeze, "lib/origen_app_generators/test_engineering/test_block.rb".freeze, "templates/app_generators".freeze, "templates/app_generators/application".freeze, "templates/app_generators/application/.gitignore".freeze, "templates/app_generators/application/.irbrc".freeze, "templates/app_generators/application/.rspec".freeze, "templates/app_generators/application/.travis.yml".freeze, "templates/app_generators/application/Gemfile".freeze, "templates/app_generators/application/Rakefile".freeze, "templates/app_generators/application/app".freeze, "templates/app_generators/application/app/blocks".freeze, "templates/app_generators/application/app/blocks/top_level.rb".freeze, "templates/app_generators/application/app/lib".freeze, "templates/app_generators/application/app/lib/module.rb".freeze, "templates/app_generators/application/app/templates".freeze, "templates/app_generators/application/app/templates/web".freeze, "templates/app_generators/application/app/templates/web/index.md.erb".freeze, "templates/app_generators/application/app/templates/web/layouts".freeze, "templates/app_generators/application/app/templates/web/layouts/_basic.html.erb".freeze, "templates/app_generators/application/app/templates/web/partials".freeze, "templates/app_generators/application/app/templates/web/partials/_navbar.html.erb".freeze, "templates/app_generators/application/app/templates/web/release_notes.md.erb".freeze, "templates/app_generators/application/config".freeze, "templates/app_generators/application/config/application.rb".freeze, "templates/app_generators/application/config/boot.rb".freeze, "templates/app_generators/application/config/commands.rb".freeze, "templates/app_generators/application/config/maillist_dev.txt".freeze, "templates/app_generators/application/config/maillist_prod.txt".freeze, "templates/app_generators/application/config/version.rb".freeze, "templates/app_generators/application/doc".freeze, "templates/app_generators/application/doc/history".freeze, "templates/app_generators/application/dot_keep".freeze, "templates/app_generators/application/origen_core_session".freeze, "templates/app_generators/application/spec".freeze, "templates/app_generators/application/spec/spec_helper.rb".freeze, "templates/app_generators/application/target".freeze, "templates/app_generators/application/target/debug.rb".freeze, "templates/app_generators/application/target/default.rb".freeze, "templates/app_generators/application/target/production.rb".freeze, "templates/app_generators/new".freeze, "templates/app_generators/new/generator.rb".freeze, "templates/app_generators/new/info.md.erb".freeze, "templates/app_generators/origen_infrastructure".freeze, "templates/app_generators/origen_infrastructure/app_generator_plugin".freeze, "templates/app_generators/origen_infrastructure/app_generator_plugin/app".freeze, "templates/app_generators/origen_infrastructure/app_generator_plugin/app/lib".freeze, "templates/app_generators/origen_infrastructure/app_generator_plugin/app/lib/application.rb".freeze, "templates/app_generators/origen_infrastructure/app_generator_plugin/app/lib/base.rb".freeze, "templates/app_generators/origen_infrastructure/app_generator_plugin/app/lib/module.rb".freeze, "templates/app_generators/origen_infrastructure/app_generator_plugin/app/lib/plugin.rb".freeze, "templates/app_generators/origen_infrastructure/app_generator_plugin/config".freeze, "templates/app_generators/origen_infrastructure/app_generator_plugin/config/load_generators.rb".freeze, "templates/app_generators/plugin".freeze, "templates/app_generators/plugin/Gemfile".freeze, "templates/app_generators/plugin/Rakefile".freeze, "templates/app_generators/plugin/app".freeze, "templates/app_generators/plugin/app/templates".freeze, "templates/app_generators/plugin/app/templates/web".freeze, "templates/app_generators/plugin/app/templates/web/index.md.erb".freeze, "templates/app_generators/plugin/app/templates/web/partials".freeze, "templates/app_generators/plugin/app/templates/web/partials/_navbar_external.html.erb".freeze, "templates/app_generators/plugin/app/templates/web/partials/_navbar_internal.html.erb".freeze, "templates/app_generators/plugin/config".freeze, "templates/app_generators/plugin/config/boot.rb".freeze, "templates/app_generators/plugin/gemspec.rb".freeze, "templates/app_generators/test_engineering".freeze, "templates/app_generators/test_engineering/environment".freeze, "templates/app_generators/test_engineering/environment/j750.rb".freeze, "templates/app_generators/test_engineering/environment/uflex.rb".freeze, "templates/app_generators/test_engineering/environment/v93k.rb".freeze, "templates/app_generators/test_engineering/stand_alone_application".freeze, "templates/app_generators/test_engineering/stand_alone_application/.keep".freeze, "templates/app_generators/test_engineering/test_block".freeze, "templates/app_generators/test_engineering/test_block/.keep".freeze]
14
14
  s.homepage = "http://origen-sdk.org/origen_app_generators".freeze
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: origen
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.55.5
4
+ version: 0.58.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: 2020-05-08 00:00:00.000000000 Z
11
+ date: 2020-09-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport