origen 0.2.6 → 0.3.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.
Files changed (158) hide show
  1. checksums.yaml +4 -4
  2. data/bin/origen +3 -1
  3. data/config/boot.rb +1 -7
  4. data/config/commands.rb +0 -1
  5. data/config/version.rb +2 -2
  6. data/lib/c99/{j750_interface.rb → ate_interface.rb} +3 -11
  7. data/lib/c99/doc_interface.rb +1 -1
  8. data/lib/origen.rb +9 -30
  9. data/lib/origen/application.rb +10 -8
  10. data/lib/origen/application/configuration.rb +13 -26
  11. data/lib/origen/application/plugins.rb +122 -0
  12. data/lib/origen/application/plugins_manager.rb +16 -254
  13. data/lib/origen/application/release.rb +2 -2
  14. data/lib/origen/application/runner.rb +2 -4
  15. data/lib/origen/chips.rb +0 -0
  16. data/lib/origen/chips/chip.rb +0 -0
  17. data/lib/origen/chips/design_entry.rb +0 -0
  18. data/lib/origen/chips/doc_entry.rb +0 -0
  19. data/lib/origen/chips/note.rb +0 -0
  20. data/lib/origen/commands.rb +4 -44
  21. data/lib/origen/commands/compile.rb +1 -2
  22. data/lib/origen/commands/generate.rb +1 -1
  23. data/lib/origen/commands/interactive.rb +1 -2
  24. data/lib/origen/commands/plugin.rb +49 -56
  25. data/lib/origen/commands/program.rb +1 -1
  26. data/lib/origen/commands/rc.rb +2 -2
  27. data/lib/origen/commands/version.rb +2 -17
  28. data/lib/origen/commands_global.rb +3 -0
  29. data/lib/origen/file_handler.rb +10 -10
  30. data/lib/origen/generator.rb +1 -1
  31. data/lib/origen/generator/job.rb +1 -1
  32. data/lib/origen/generator/pattern.rb +2 -2
  33. data/lib/origen/generator/pattern_finder.rb +10 -9
  34. data/lib/origen/pins/pin.rb +0 -0
  35. data/lib/origen/regression_manager.rb +0 -0
  36. data/lib/origen/remote_manager.rb +2 -8
  37. data/lib/origen/revision_control/design_sync.rb +0 -0
  38. data/lib/origen/revision_control/git.rb +0 -0
  39. data/lib/origen/specs.rb +0 -0
  40. data/lib/origen/specs/checkers.rb +0 -0
  41. data/lib/origen/specs/creation_info.rb +0 -0
  42. data/lib/origen/specs/exhibit.rb +0 -0
  43. data/lib/origen/specs/spec.rb +0 -0
  44. data/lib/origen/utility.rb +0 -1
  45. data/lib/origen/utility/diff.rb +0 -0
  46. metadata +42 -119
  47. data/lib/origen/import_manager.rb +0 -596
  48. data/lib/origen/nvm.rb +0 -6
  49. data/lib/origen/nvm/block_array.rb +0 -72
  50. data/lib/origen/tester.rb +0 -56
  51. data/lib/origen/tester/api.rb +0 -277
  52. data/lib/origen/tester/bdm/bdm.rb +0 -25
  53. data/lib/origen/tester/doc/doc.rb +0 -226
  54. data/lib/origen/tester/doc/generator.rb +0 -126
  55. data/lib/origen/tester/doc/generator/flow.rb +0 -71
  56. data/lib/origen/tester/doc/generator/flow_line.rb +0 -203
  57. data/lib/origen/tester/doc/generator/test.rb +0 -68
  58. data/lib/origen/tester/doc/generator/test_group.rb +0 -66
  59. data/lib/origen/tester/doc/generator/tests.rb +0 -47
  60. data/lib/origen/tester/doc/model.rb +0 -162
  61. data/lib/origen/tester/generator.rb +0 -271
  62. data/lib/origen/tester/generator/flow_control_api.rb +0 -606
  63. data/lib/origen/tester/generator/identity_map.rb +0 -25
  64. data/lib/origen/tester/generator/placeholder.rb +0 -13
  65. data/lib/origen/tester/generator/test_numberer.rb +0 -25
  66. data/lib/origen/tester/interface.rb +0 -154
  67. data/lib/origen/tester/j750/files.rb +0 -45
  68. data/lib/origen/tester/j750/generator.rb +0 -203
  69. data/lib/origen/tester/j750/generator/flow.rb +0 -123
  70. data/lib/origen/tester/j750/generator/flow_line.rb +0 -288
  71. data/lib/origen/tester/j750/generator/patgroup.rb +0 -111
  72. data/lib/origen/tester/j750/generator/patgroups.rb +0 -41
  73. data/lib/origen/tester/j750/generator/patset.rb +0 -111
  74. data/lib/origen/tester/j750/generator/patsets.rb +0 -41
  75. data/lib/origen/tester/j750/generator/templates/flow.txt.erb +0 -9
  76. data/lib/origen/tester/j750/generator/templates/instances.txt.erb +0 -16
  77. data/lib/origen/tester/j750/generator/templates/patgroups.txt.erb +0 -8
  78. data/lib/origen/tester/j750/generator/templates/patsets.txt.erb +0 -10
  79. data/lib/origen/tester/j750/generator/test_instance.rb +0 -846
  80. data/lib/origen/tester/j750/generator/test_instance_group.rb +0 -60
  81. data/lib/origen/tester/j750/generator/test_instances.rb +0 -182
  82. data/lib/origen/tester/j750/j750.rb +0 -845
  83. data/lib/origen/tester/j750/j750_hpt.rb +0 -35
  84. data/lib/origen/tester/j750/parser.rb +0 -104
  85. data/lib/origen/tester/j750/parser/ac_spec.rb +0 -11
  86. data/lib/origen/tester/j750/parser/ac_specs.rb +0 -0
  87. data/lib/origen/tester/j750/parser/dc_spec.rb +0 -36
  88. data/lib/origen/tester/j750/parser/dc_specs.rb +0 -50
  89. data/lib/origen/tester/j750/parser/descriptions.rb +0 -340
  90. data/lib/origen/tester/j750/parser/flow.rb +0 -111
  91. data/lib/origen/tester/j750/parser/flow_line.rb +0 -207
  92. data/lib/origen/tester/j750/parser/flows.rb +0 -23
  93. data/lib/origen/tester/j750/parser/pattern_set.rb +0 -94
  94. data/lib/origen/tester/j750/parser/pattern_sets.rb +0 -33
  95. data/lib/origen/tester/j750/parser/test_instance.rb +0 -322
  96. data/lib/origen/tester/j750/parser/test_instances.rb +0 -26
  97. data/lib/origen/tester/j750/parser/timeset.rb +0 -15
  98. data/lib/origen/tester/j750/parser/timesets.rb +0 -0
  99. data/lib/origen/tester/jlink/jlink.rb +0 -33
  100. data/lib/origen/tester/parser.rb +0 -24
  101. data/lib/origen/tester/parser/description_lookup.rb +0 -64
  102. data/lib/origen/tester/parser/searchable_array.rb +0 -32
  103. data/lib/origen/tester/parser/searchable_hash.rb +0 -32
  104. data/lib/origen/tester/time.rb +0 -338
  105. data/lib/origen/tester/timing.rb +0 -253
  106. data/lib/origen/tester/ultraflex/files.rb +0 -45
  107. data/lib/origen/tester/ultraflex/generator.rb +0 -200
  108. data/lib/origen/tester/ultraflex/generator/flow.rb +0 -119
  109. data/lib/origen/tester/ultraflex/generator/flow_line.rb +0 -269
  110. data/lib/origen/tester/ultraflex/generator/patgroup.rb +0 -111
  111. data/lib/origen/tester/ultraflex/generator/patgroups.rb +0 -41
  112. data/lib/origen/tester/ultraflex/generator/patset.rb +0 -111
  113. data/lib/origen/tester/ultraflex/generator/patsets.rb +0 -41
  114. data/lib/origen/tester/ultraflex/generator/templates/flow.txt.erb +0 -9
  115. data/lib/origen/tester/ultraflex/generator/templates/instances.txt.erb +0 -16
  116. data/lib/origen/tester/ultraflex/generator/templates/patgroups.txt.erb +0 -8
  117. data/lib/origen/tester/ultraflex/generator/templates/patsets.txt.erb +0 -10
  118. data/lib/origen/tester/ultraflex/generator/test_instance.rb +0 -622
  119. data/lib/origen/tester/ultraflex/generator/test_instance_group.rb +0 -60
  120. data/lib/origen/tester/ultraflex/generator/test_instances.rb +0 -174
  121. data/lib/origen/tester/ultraflex/parser.rb +0 -104
  122. data/lib/origen/tester/ultraflex/parser/ac_spec.rb +0 -11
  123. data/lib/origen/tester/ultraflex/parser/ac_specs.rb +0 -0
  124. data/lib/origen/tester/ultraflex/parser/dc_spec.rb +0 -36
  125. data/lib/origen/tester/ultraflex/parser/dc_specs.rb +0 -50
  126. data/lib/origen/tester/ultraflex/parser/descriptions.rb +0 -342
  127. data/lib/origen/tester/ultraflex/parser/flow.rb +0 -111
  128. data/lib/origen/tester/ultraflex/parser/flow_line.rb +0 -207
  129. data/lib/origen/tester/ultraflex/parser/flows.rb +0 -23
  130. data/lib/origen/tester/ultraflex/parser/pattern_set.rb +0 -94
  131. data/lib/origen/tester/ultraflex/parser/pattern_sets.rb +0 -33
  132. data/lib/origen/tester/ultraflex/parser/test_instance.rb +0 -262
  133. data/lib/origen/tester/ultraflex/parser/test_instances.rb +0 -26
  134. data/lib/origen/tester/ultraflex/parser/timeset.rb +0 -15
  135. data/lib/origen/tester/ultraflex/parser/timesets.rb +0 -0
  136. data/lib/origen/tester/ultraflex/ultraflex.rb +0 -759
  137. data/lib/origen/tester/v93k/generator.rb +0 -80
  138. data/lib/origen/tester/v93k/generator/flow.rb +0 -63
  139. data/lib/origen/tester/v93k/generator/flow_node.rb +0 -17
  140. data/lib/origen/tester/v93k/generator/flow_node/print.rb +0 -10
  141. data/lib/origen/tester/v93k/generator/pattern.rb +0 -16
  142. data/lib/origen/tester/v93k/generator/pattern_master.rb +0 -54
  143. data/lib/origen/tester/v93k/generator/templates/_test_method.txt.erb +0 -6
  144. data/lib/origen/tester/v93k/generator/templates/_test_suite.txt.erb +0 -11
  145. data/lib/origen/tester/v93k/generator/templates/template.flow.erb +0 -121
  146. data/lib/origen/tester/v93k/generator/templates/template.pmfl.erb +0 -9
  147. data/lib/origen/tester/v93k/generator/test_function.rb +0 -103
  148. data/lib/origen/tester/v93k/generator/test_functions.rb +0 -79
  149. data/lib/origen/tester/v93k/generator/test_method.rb +0 -46
  150. data/lib/origen/tester/v93k/generator/test_methods.rb +0 -75
  151. data/lib/origen/tester/v93k/generator/test_suite.rb +0 -54
  152. data/lib/origen/tester/v93k/generator/test_suites.rb +0 -65
  153. data/lib/origen/tester/v93k/v93k.rb +0 -420
  154. data/lib/origen/tester/vector.rb +0 -86
  155. data/lib/origen/tester/vector_generator.rb +0 -637
  156. data/lib/origen/tester/vector_pipeline.rb +0 -150
  157. data/lib/origen/utility/design_sync.rb +0 -494
  158. data/lib/origen/version_checker.rb +0 -117
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9d09a212e8865158fd2d74d8b4beae1aa6a606f3
4
- data.tar.gz: 33f72cc29a3a8959f70b05dd7011a66ae4d407b0
3
+ metadata.gz: 2cf3140f29f89f5990d3fd1d9280f7ee8d3f807a
4
+ data.tar.gz: 53d58d539aa2f2469f90f93a9964a01f77564ec4
5
5
  SHA512:
6
- metadata.gz: 0550fa8d8582b7630472fb0a3916e886513b97a3457269d5d307cf0047ef66e102d263575d832dde51a53ac96b721a9b9d591e29be0198980759ddd69a3923f7
7
- data.tar.gz: ee057ec1cebfeceff81bfec1ad893b095baf4d79d53997cf173dbee46e982448d788cb71fba914dd6ea86521f23f4dbb5bf85849cff06520ae8e2e025c0d3a82
6
+ metadata.gz: 2e6de38d9c7d045398861ca6cc6ce313ed97808677ce92d49657f1eee7ffdf8e563dcc9a97ce17f9c4c7327dc0476c734f5b195e4692629ab2ff2af438d8e505
7
+ data.tar.gz: 8a1e4ea8472fbc7bd32fe9b3b92c6baf0b1e1800101cb775955e40953fc8062abe7580eaf128c9be1f8fc9598a1a55d57b2e50c96791d59ad0941af6660784e2
data/bin/origen CHANGED
@@ -207,7 +207,9 @@ rescue Exception => e
207
207
  e.backtrace.each do |line|
208
208
  path = Pathname.new(line)
209
209
  if path.absolute?
210
- puts line if Origen.log.level == :verbose
210
+ if Origen.log.level == :verbose || (line =~ /^#{Origen.root}/ && line !~ /^#{Origen.root}\/lbin/)
211
+ puts line
212
+ end
211
213
  else
212
214
  if Origen.log.level == :verbose
213
215
  puts line
data/config/boot.rb CHANGED
@@ -1,13 +1,7 @@
1
1
  # Interfaces must be required, can't autoload
2
- require "c99/j750_interface"
2
+ require "c99/ate_interface"
3
3
  require "c99/doc_interface"
4
4
  # The majority of this class is defined in the support application,
5
5
  # this is to test that the importing application can override and
6
6
  # extend imported classes.
7
7
  require_relative "../lib/c99/nvm"
8
-
9
- # Dummy definition to allow Origen tests to run until the Testers plugin is available
10
- module Testers
11
- class J750
12
- end
13
- end
data/config/commands.rb CHANGED
@@ -13,7 +13,6 @@ when "specs"
13
13
  exit RSpec::Core::Runner.run(['spec'])
14
14
 
15
15
  when "examples", "test"
16
- $enable_testers = true if ARGV.delete("--testers")
17
16
  Origen.load_application
18
17
  status = 0
19
18
  Dir["#{Origen.root}/examples/*.rb"].each do |example|
data/config/version.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  module Origen
2
2
  MAJOR = 0
3
- MINOR = 2
4
- BUGFIX = 6
3
+ MINOR = 3
4
+ BUGFIX = 0
5
5
  DEV = nil
6
6
 
7
7
  VERSION = [MAJOR, MINOR, BUGFIX].join(".") + (DEV ? ".pre#{DEV}" : '')
@@ -1,5 +1,7 @@
1
1
  module C99
2
- module J750BaseInterface
2
+ class ATEInterface
3
+ include OrigenTesters::ProgramGenerators
4
+
3
5
  # Options passed to Flow.create and Library.create will be passed in here, use as
4
6
  # desired to configure your interface
5
7
  def initialize(_options = {})
@@ -72,14 +74,4 @@ module C99
72
74
  patsets.add("#{name}_pset", pattern: "#{name}.PAT")
73
75
  end
74
76
  end
75
-
76
- class J750Interface
77
- include J750BaseInterface
78
- include Origen::Tester::J750::Generator
79
- end
80
-
81
- # class TestersJ750Interface
82
- # include J750BaseInterface
83
- # include Testers::J750::Generator
84
- # end
85
77
  end
@@ -1,6 +1,6 @@
1
1
  module C99
2
2
  class DocInterface
3
- include Origen::Tester::Doc::Generator
3
+ include OrigenTesters::Doc::Generator
4
4
 
5
5
  # Options passed to Flow.create and Library.create will be passed in here, use as
6
6
  # desired to configure your interface
data/lib/origen.rb CHANGED
@@ -13,10 +13,8 @@ require 'origen/top_level'
13
13
  require 'origen/model'
14
14
  require 'origen/ruby_version_check'
15
15
  require 'origen/application'
16
- require 'origen/import_manager'
17
16
  require 'origen/remote_manager'
18
17
  require 'origen/utility'
19
- require 'origen/version_checker'
20
18
  require 'origen/logger_methods'
21
19
  require 'option_parser/optparse'
22
20
  require 'bundler'
@@ -27,11 +25,9 @@ module Origen
27
25
  autoload :Generator, 'origen/generator'
28
26
  autoload :Pins, 'origen/pins'
29
27
  autoload :Registers, 'origen/registers'
30
- autoload :Tester, 'origen/tester'
31
28
  autoload :Users, 'origen/users'
32
29
  autoload :FileHandler, 'origen/file_handler'
33
30
  autoload :RegressionManager, 'origen/regression_manager'
34
- autoload :NVM, 'origen/nvm'
35
31
  autoload :Location, 'origen/location'
36
32
  autoload :VersionString, 'origen/version_string'
37
33
  autoload :Mode, 'origen/mode'
@@ -95,16 +91,9 @@ module Origen
95
91
  @plugins = nil
96
92
  end
97
93
 
98
- # Returns an array containing the application instances of all plugins
99
94
  def plugins
100
- @plugins ||= begin
101
- top = Origen.app
102
- plugins = []
103
- Origen._applications_lookup[:name].each do |_name, app|
104
- plugins << app unless app == top
105
- end
106
- plugins
107
- end
95
+ Origen.deprecate 'Origen.plugins is deprecated, use Origen.app.plugins instead'
96
+ Origen.app.plugins
108
97
  end
109
98
 
110
99
  def app_loaded?
@@ -317,11 +306,6 @@ module Origen
317
306
  @with_boot_environment = false
318
307
  end
319
308
 
320
- def with_disable_origen_version_check(*args, &block)
321
- version_checker.with_disable_origen_version_check(*args, &block)
322
- end
323
- alias_method :disable_origen_version_check, :with_disable_origen_version_check
324
-
325
309
  # This is the application-facing API for implementing custom callbacks,
326
310
  # the top-level application, all plugin application instances, and any
327
311
  # application objects that include the Origen::Callbacks module will be
@@ -367,12 +351,14 @@ module Origen
367
351
  end
368
352
 
369
353
  def import_manager
370
- @import_manager ||= ImportManager.new
354
+ Origen.deprecated 'Origen.import_manager is deprecated, use Origen.app.plugins instead'
355
+ app.plugins
371
356
  end
372
357
  alias_method :imports_manager, :import_manager
373
358
 
374
359
  def plugins_manager
375
- application.plugins_manager
360
+ Origen.deprecated 'Origen.plugins_manager and Origen.current_plugin are deprecated, use Origen.app.plugins instead'
361
+ app.plugins
376
362
  end
377
363
  alias_method :plugin_manager, :plugins_manager
378
364
  alias_method :current_plugin, :plugins_manager
@@ -415,7 +401,7 @@ module Origen
415
401
  #
416
402
  # In most cases this should never need to be called directly and will be called
417
403
  # automatically the first time the application is referenced via Origen.app
418
- def load_application(check_version = true)
404
+ def load_application(options = {})
419
405
  @application ||= begin
420
406
  # This flag is set so that when a thread starts with no app it remains with no app. This
421
407
  # was an issue when building a new app with the fetch command and when the thread did a
@@ -434,9 +420,8 @@ module Origen
434
420
  Bundler.require(:default)
435
421
  end
436
422
  if @with_boot_environment
437
- @application.current_plugin.disable
423
+ @application.plugins.disable_current
438
424
  else
439
- Origen.import_manager.require!
440
425
  Origen.remote_manager.require!
441
426
  end
442
427
  boot = File.join(root, 'config', 'boot.rb')
@@ -445,9 +430,8 @@ module Origen
445
430
  require env if File.exist?(env)
446
431
  dev = File.join(root, 'config', 'development.rb')
447
432
  require dev if File.exist?(dev)
448
- version_checker.check! if check_version
449
433
  validate_origen_dev_configuration!
450
- ([@application] + Origen.plugins).each(&:on_loaded)
434
+ ([@application] + Origen.app.plugins).each(&:on_loaded)
451
435
  @application_loaded = true
452
436
  @application
453
437
  end
@@ -457,11 +441,6 @@ module Origen
457
441
  @launch_time ||= time_now
458
442
  end
459
443
 
460
- # Returns an instance of Origen::VersionChecker
461
- def version_checker
462
- @version_checker ||= VersionChecker.new
463
- end
464
-
465
444
  # Returns the full path to the Origen core top-level directory
466
445
  def top
467
446
  @origen_top ||= Pathname.new(File.dirname(__FILE__)).parent
@@ -10,6 +10,7 @@ module Origen
10
10
  autoload :Target, 'origen/application/target'
11
11
  autoload :Environment, 'origen/application/environment'
12
12
  autoload :PluginsManager, 'origen/application/plugins_manager'
13
+ autoload :Plugins, 'origen/application/plugins'
13
14
  autoload :LSF, 'origen/application/lsf'
14
15
  autoload :Runner, 'origen/application/runner'
15
16
  autoload :ConfigurationManager, 'origen/application/configuration_manager'
@@ -201,11 +202,7 @@ module Origen
201
202
  # Returns true if the given application instance is
202
203
  # the current plugin
203
204
  def current_plugin?
204
- if Origen.current_plugin.name
205
- Origen.current_plugin.instance == self
206
- else
207
- false
208
- end
205
+ Origen.app.plugins.current == self
209
206
  end
210
207
 
211
208
  # Returns the current top-level object (the DUT)
@@ -420,8 +417,13 @@ module Origen
420
417
  (Origen.app.config.gem_name || name).to_s.underscore.symbolize
421
418
  end
422
419
 
420
+ def plugins
421
+ @plugins ||= Plugins.new
422
+ end
423
+
423
424
  def plugins_manager
424
- @plugins_manager ||= PluginsManager.new
425
+ Origen.deprecated 'Origen.app.plugins_manager and Origen.app.current_plugin are deprecated, use Origen.app.plugins instead'
426
+ plugins
425
427
  end
426
428
  alias_method :plugin_manager, :plugins_manager
427
429
  alias_method :current_plugin, :plugins_manager
@@ -505,7 +507,7 @@ module Origen
505
507
  end
506
508
 
507
509
  def callback_listeners
508
- current = Origen.current_plugin.instance
510
+ current = Origen.app.plugins.current
509
511
  applications = [self]
510
512
  applications << current if current
511
513
  applications + instantiated_callback_listeners
@@ -664,7 +666,7 @@ module Origen
664
666
  listeners_for(:on_load_target).each(&:on_load_target)
665
667
  end
666
668
  listeners_for(:after_load_target).each(&:after_load_target)
667
- Origen.import_manager.validate_production_status
669
+ Origen.app.plugins.validate_production_status
668
670
  # @target_instantiated = true
669
671
  end
670
672
 
@@ -6,8 +6,7 @@ module Origen
6
6
  # Returns the configuration's application instance
7
7
  attr_reader :app
8
8
 
9
- attr_accessor :name, :initials, :instructions, :required_origen_version,
10
- :min_required_origen_version, :max_required_origen_version,
9
+ attr_accessor :name, :initials, :instructions,
11
10
  :history_file, :release_directory, :release_email_subject,
12
11
  :production_targets, :mode,
13
12
  :vault, :output_directory, :reference_directory,
@@ -17,7 +16,7 @@ module Origen
17
16
  :test_program_output_directory, :erb_trim_mode, :test_program_source_directory,
18
17
  :test_program_template_directory, :referenced_pattern_list, :program_prefix,
19
18
  :copy_command, :diff_command, :compile_only_dot_erb_files, :web_directory,
20
- :web_domain, :imports, :imports_dev,
19
+ :web_domain,
21
20
  :strict_errors, :unmanaged_dirs, :unmanaged_files, :remotes,
22
21
  :external_app_dirs, :lint_test, :shared, :yammer_group, :rc_url, :rc_workflow,
23
22
  :user_aliases, :release_externally, :gem_name, :disqus_shortname
@@ -40,7 +39,7 @@ module Origen
40
39
  # can be added here
41
40
  ATTRS_THAT_ACCEPT_A_BLOCK = ATTRS_THAT_DEPEND_ON_TARGET +
42
41
  [:release_instructions, :history_file, :log_directory, :copy_command,
43
- :diff_command, :imports, :imports_dev, :remotes,
42
+ :diff_command, :remotes,
44
43
  :external_app_dirs
45
44
  ]
46
45
 
@@ -53,21 +52,9 @@ module Origen
53
52
  ]
54
53
 
55
54
  def log_deprecations
56
- unless imports.empty?
57
- Origen.deprecate "App #{app.name} uses config.imports this will be removed in Origen V3 and a Gemfile/.gemspec should be used instead"
58
- end
59
- unless imports_dev.empty?
60
- Origen.deprecate "App #{app.name} uses config.imports_dev this will be removed in Origen V3 and a Gemfile/.gemspec should be used instead"
61
- end
62
- if required_origen_version
63
- Origen.deprecate "App #{app.name} uses config.required_origen_version this will be removed in Origen V3 and a Gemfile/.gemspec should be used instead"
64
- end
65
- if min_required_origen_version
66
- Origen.deprecate "App #{app.name} uses config.min_required_origen_version this will be removed in Origen V3 and a Gemfile/.gemspec should be used instead"
67
- end
68
- if max_required_origen_version
69
- Origen.deprecate "App #{app.name} uses config.max_required_origen_version this will be removed in Origen V3 and a Gemfile/.gemspec should be used instead"
70
- end
55
+ # unless imports.empty?
56
+ # Origen.deprecate "App #{app.name} uses config.imports this will be removed in Origen V3 and a Gemfile/.gemspec should be used instead"
57
+ # end
71
58
  end
72
59
 
73
60
  def initialize(app)
@@ -104,10 +91,10 @@ module Origen
104
91
  end
105
92
 
106
93
  # This defines an enhanced accessor for these attributes that allows them to be assigned
107
- # to an annonymous function to calculate the value based on some property of the target
94
+ # to an anonymous function to calculate the value based on some property of the target
108
95
  # objects.
109
96
  #
110
- # Without this the objects frome the target could not be referenced in config/application.rb
97
+ # Without this the objects from the target could not be referenced in config/application.rb
111
98
  # because they don't exist yet, for example this will not work because $dut has not yet
112
99
  # been instantiated:
113
100
  # # config/application.rb
@@ -136,8 +123,8 @@ module Origen
136
123
  instance_variable_set("@#{name}".to_sym, block)
137
124
  else
138
125
  if override && ATTRS_THAT_CURRENT_PLUGIN_CAN_OVERRIDE.include?(name) &&
139
- app.current? && Origen.current_plugin.name
140
- var = Origen.current_plugin.instance.config.send(name, override: false)
126
+ app.current? && Origen.app.plugins.current
127
+ var = Origen.app.plugins.current.config.send(name, override: false)
141
128
  end
142
129
  var ||= instance_variable_get("@#{name}".to_sym)
143
130
  if var.respond_to?('call')
@@ -160,8 +147,8 @@ module Origen
160
147
 
161
148
  (ATTRS_THAT_CURRENT_PLUGIN_CAN_OVERRIDE - ATTRS_THAT_ACCEPT_A_BLOCK).each do |name|
162
149
  if override && ATTRS_THAT_CURRENT_PLUGIN_CAN_OVERRIDE.include?(name) &&
163
- app.current? && Origen.current_plugin.name
164
- var = Origen.current_plugin.instance.config.send(name, override: false)
150
+ app.current? && Origen.app.plugins.current
151
+ var = Origen.app.plugins.current.config.send(name, override: false)
165
152
  end
166
153
  var || instance_variable_get("@#{name}".to_sym)
167
154
  end
@@ -199,7 +186,7 @@ module Origen
199
186
  # user can be prompted to upgrade
200
187
  def method_missing(method, *_args, &_block)
201
188
  method = method.to_s.sub('=', '')
202
- puts "WARNING - unknown configuration attribute: #{method}"
189
+ Origen.log.warning "WARNING - unknown configuration attribute: #{method}"
203
190
  end
204
191
  end
205
192
  end
@@ -0,0 +1,122 @@
1
+ module Origen
2
+ class Application
3
+ # Provides an API for working with the application's plugins
4
+ #
5
+ # An instance of this class is instantiated as Origen.app.plugins
6
+ class Plugins < ::Array
7
+ def initialize
8
+ @plugins ||= begin
9
+ top = Origen.app
10
+ Origen._applications_lookup[:name].each do |_name, app|
11
+ self << app unless app == top
12
+ end
13
+ end
14
+ end
15
+
16
+ # Will raise an error if any plugins are currently imported from a path reference
17
+ # in the Gemfile
18
+ def validate_production_status(force = false)
19
+ if Origen.mode.production? || force
20
+ if File.exist?("#{Origen.root}/Gemfile")
21
+ File.readlines("#{Origen.root}/Gemfile").each do |line|
22
+ # http://rubular.com/r/yNGDGB6M2r
23
+ if line =~ /^\s*gem\s+(("|')\w+("|')),.*(:path\s*=>|path:)/
24
+ fail "The following gem is defined as a path in your Gemfile, but that is not allowed in production: #{Regexp.last_match[1]}"
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
30
+
31
+ # Returns an array of symbols that represent the names of all plugins
32
+ def names
33
+ map(&:name)
34
+ end
35
+
36
+ # Returns the current plugin's application instance
37
+ def current
38
+ return nil if @disabled
39
+ name = @temporary || @current ||= Origen.app.session.origen_core[:default_plugin]
40
+ find { |p| p.name.to_sym == name } if name
41
+ end
42
+
43
+ def current=(name)
44
+ name = name.to_sym if name
45
+ Origen.app.session.origen_core[:default_plugin] = name
46
+ if name == :none
47
+ @current = nil
48
+ else
49
+ @current = name
50
+ end
51
+ end
52
+
53
+ def temporary=(name)
54
+ name = name.to_sym if name
55
+ if name == :none
56
+ @temporary = nil
57
+ else
58
+ @temporary = name
59
+ end
60
+ end
61
+
62
+ # Temporarily set the current plugin to nil
63
+ def disable_current
64
+ @disabled = true
65
+ if block_given?
66
+ yield
67
+ @disabled = false
68
+ end
69
+ end
70
+
71
+ # Restore the current plugin after an earlier disable
72
+ def enable_current
73
+ @disabled = false
74
+ end
75
+
76
+ # @deprecated
77
+ def default=(name)
78
+ Origen.deprecated 'Origen.current_plugin.default= is deprecated, use Origen.app.plugins.current= instead'
79
+ self.current = name
80
+ end
81
+
82
+ # @deprecated
83
+ def name
84
+ Origen.deprecated 'Origen.current_plugin.name is deprecated, use Origen.app.plugins.current.name instead'
85
+ current.name if current
86
+ end
87
+
88
+ # @deprecated
89
+ def instance
90
+ Origen.deprecated 'Origen.current_plugin.instance is deprecated, use Origen.app.plugins.current instead'
91
+ current
92
+ end
93
+
94
+ # @deprecated
95
+ def default
96
+ Origen.deprecated 'Origen.current_plugin.default is deprecated, use Origen.app.plugins.current instead'
97
+ current
98
+ end
99
+
100
+ def shared_commands
101
+ [Origen.app, self].flatten.map do |plugin|
102
+ shared = plugin.config.shared || {}
103
+ if shared[:command_launcher]
104
+ "#{plugin.root}/#{shared[:command_launcher]}"
105
+ end
106
+ end.compact
107
+ end
108
+
109
+ # Return the plugin name if the path specified is from that plugin
110
+ def plugin_name_from_path(path)
111
+ path = Pathname.new(path).expand_path.cleanpath
112
+ each do |plugin|
113
+ if path.to_s =~ /^#{plugin.root}/
114
+ return plugin.name
115
+ end
116
+ end
117
+ nil
118
+ end
119
+ alias_method :path_within_a_plugin, :plugin_name_from_path
120
+ end
121
+ end
122
+ end