origen 0.2.6 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
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