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.
- checksums.yaml +4 -4
- data/bin/origen +3 -1
- data/config/boot.rb +1 -7
- data/config/commands.rb +0 -1
- data/config/version.rb +2 -2
- data/lib/c99/{j750_interface.rb → ate_interface.rb} +3 -11
- data/lib/c99/doc_interface.rb +1 -1
- data/lib/origen.rb +9 -30
- data/lib/origen/application.rb +10 -8
- data/lib/origen/application/configuration.rb +13 -26
- data/lib/origen/application/plugins.rb +122 -0
- data/lib/origen/application/plugins_manager.rb +16 -254
- data/lib/origen/application/release.rb +2 -2
- data/lib/origen/application/runner.rb +2 -4
- data/lib/origen/chips.rb +0 -0
- data/lib/origen/chips/chip.rb +0 -0
- data/lib/origen/chips/design_entry.rb +0 -0
- data/lib/origen/chips/doc_entry.rb +0 -0
- data/lib/origen/chips/note.rb +0 -0
- data/lib/origen/commands.rb +4 -44
- data/lib/origen/commands/compile.rb +1 -2
- data/lib/origen/commands/generate.rb +1 -1
- data/lib/origen/commands/interactive.rb +1 -2
- data/lib/origen/commands/plugin.rb +49 -56
- data/lib/origen/commands/program.rb +1 -1
- data/lib/origen/commands/rc.rb +2 -2
- data/lib/origen/commands/version.rb +2 -17
- data/lib/origen/commands_global.rb +3 -0
- data/lib/origen/file_handler.rb +10 -10
- data/lib/origen/generator.rb +1 -1
- data/lib/origen/generator/job.rb +1 -1
- data/lib/origen/generator/pattern.rb +2 -2
- data/lib/origen/generator/pattern_finder.rb +10 -9
- data/lib/origen/pins/pin.rb +0 -0
- data/lib/origen/regression_manager.rb +0 -0
- data/lib/origen/remote_manager.rb +2 -8
- data/lib/origen/revision_control/design_sync.rb +0 -0
- data/lib/origen/revision_control/git.rb +0 -0
- data/lib/origen/specs.rb +0 -0
- data/lib/origen/specs/checkers.rb +0 -0
- data/lib/origen/specs/creation_info.rb +0 -0
- data/lib/origen/specs/exhibit.rb +0 -0
- data/lib/origen/specs/spec.rb +0 -0
- data/lib/origen/utility.rb +0 -1
- data/lib/origen/utility/diff.rb +0 -0
- metadata +42 -119
- data/lib/origen/import_manager.rb +0 -596
- data/lib/origen/nvm.rb +0 -6
- data/lib/origen/nvm/block_array.rb +0 -72
- data/lib/origen/tester.rb +0 -56
- data/lib/origen/tester/api.rb +0 -277
- data/lib/origen/tester/bdm/bdm.rb +0 -25
- data/lib/origen/tester/doc/doc.rb +0 -226
- data/lib/origen/tester/doc/generator.rb +0 -126
- data/lib/origen/tester/doc/generator/flow.rb +0 -71
- data/lib/origen/tester/doc/generator/flow_line.rb +0 -203
- data/lib/origen/tester/doc/generator/test.rb +0 -68
- data/lib/origen/tester/doc/generator/test_group.rb +0 -66
- data/lib/origen/tester/doc/generator/tests.rb +0 -47
- data/lib/origen/tester/doc/model.rb +0 -162
- data/lib/origen/tester/generator.rb +0 -271
- data/lib/origen/tester/generator/flow_control_api.rb +0 -606
- data/lib/origen/tester/generator/identity_map.rb +0 -25
- data/lib/origen/tester/generator/placeholder.rb +0 -13
- data/lib/origen/tester/generator/test_numberer.rb +0 -25
- data/lib/origen/tester/interface.rb +0 -154
- data/lib/origen/tester/j750/files.rb +0 -45
- data/lib/origen/tester/j750/generator.rb +0 -203
- data/lib/origen/tester/j750/generator/flow.rb +0 -123
- data/lib/origen/tester/j750/generator/flow_line.rb +0 -288
- data/lib/origen/tester/j750/generator/patgroup.rb +0 -111
- data/lib/origen/tester/j750/generator/patgroups.rb +0 -41
- data/lib/origen/tester/j750/generator/patset.rb +0 -111
- data/lib/origen/tester/j750/generator/patsets.rb +0 -41
- data/lib/origen/tester/j750/generator/templates/flow.txt.erb +0 -9
- data/lib/origen/tester/j750/generator/templates/instances.txt.erb +0 -16
- data/lib/origen/tester/j750/generator/templates/patgroups.txt.erb +0 -8
- data/lib/origen/tester/j750/generator/templates/patsets.txt.erb +0 -10
- data/lib/origen/tester/j750/generator/test_instance.rb +0 -846
- data/lib/origen/tester/j750/generator/test_instance_group.rb +0 -60
- data/lib/origen/tester/j750/generator/test_instances.rb +0 -182
- data/lib/origen/tester/j750/j750.rb +0 -845
- data/lib/origen/tester/j750/j750_hpt.rb +0 -35
- data/lib/origen/tester/j750/parser.rb +0 -104
- data/lib/origen/tester/j750/parser/ac_spec.rb +0 -11
- data/lib/origen/tester/j750/parser/ac_specs.rb +0 -0
- data/lib/origen/tester/j750/parser/dc_spec.rb +0 -36
- data/lib/origen/tester/j750/parser/dc_specs.rb +0 -50
- data/lib/origen/tester/j750/parser/descriptions.rb +0 -340
- data/lib/origen/tester/j750/parser/flow.rb +0 -111
- data/lib/origen/tester/j750/parser/flow_line.rb +0 -207
- data/lib/origen/tester/j750/parser/flows.rb +0 -23
- data/lib/origen/tester/j750/parser/pattern_set.rb +0 -94
- data/lib/origen/tester/j750/parser/pattern_sets.rb +0 -33
- data/lib/origen/tester/j750/parser/test_instance.rb +0 -322
- data/lib/origen/tester/j750/parser/test_instances.rb +0 -26
- data/lib/origen/tester/j750/parser/timeset.rb +0 -15
- data/lib/origen/tester/j750/parser/timesets.rb +0 -0
- data/lib/origen/tester/jlink/jlink.rb +0 -33
- data/lib/origen/tester/parser.rb +0 -24
- data/lib/origen/tester/parser/description_lookup.rb +0 -64
- data/lib/origen/tester/parser/searchable_array.rb +0 -32
- data/lib/origen/tester/parser/searchable_hash.rb +0 -32
- data/lib/origen/tester/time.rb +0 -338
- data/lib/origen/tester/timing.rb +0 -253
- data/lib/origen/tester/ultraflex/files.rb +0 -45
- data/lib/origen/tester/ultraflex/generator.rb +0 -200
- data/lib/origen/tester/ultraflex/generator/flow.rb +0 -119
- data/lib/origen/tester/ultraflex/generator/flow_line.rb +0 -269
- data/lib/origen/tester/ultraflex/generator/patgroup.rb +0 -111
- data/lib/origen/tester/ultraflex/generator/patgroups.rb +0 -41
- data/lib/origen/tester/ultraflex/generator/patset.rb +0 -111
- data/lib/origen/tester/ultraflex/generator/patsets.rb +0 -41
- data/lib/origen/tester/ultraflex/generator/templates/flow.txt.erb +0 -9
- data/lib/origen/tester/ultraflex/generator/templates/instances.txt.erb +0 -16
- data/lib/origen/tester/ultraflex/generator/templates/patgroups.txt.erb +0 -8
- data/lib/origen/tester/ultraflex/generator/templates/patsets.txt.erb +0 -10
- data/lib/origen/tester/ultraflex/generator/test_instance.rb +0 -622
- data/lib/origen/tester/ultraflex/generator/test_instance_group.rb +0 -60
- data/lib/origen/tester/ultraflex/generator/test_instances.rb +0 -174
- data/lib/origen/tester/ultraflex/parser.rb +0 -104
- data/lib/origen/tester/ultraflex/parser/ac_spec.rb +0 -11
- data/lib/origen/tester/ultraflex/parser/ac_specs.rb +0 -0
- data/lib/origen/tester/ultraflex/parser/dc_spec.rb +0 -36
- data/lib/origen/tester/ultraflex/parser/dc_specs.rb +0 -50
- data/lib/origen/tester/ultraflex/parser/descriptions.rb +0 -342
- data/lib/origen/tester/ultraflex/parser/flow.rb +0 -111
- data/lib/origen/tester/ultraflex/parser/flow_line.rb +0 -207
- data/lib/origen/tester/ultraflex/parser/flows.rb +0 -23
- data/lib/origen/tester/ultraflex/parser/pattern_set.rb +0 -94
- data/lib/origen/tester/ultraflex/parser/pattern_sets.rb +0 -33
- data/lib/origen/tester/ultraflex/parser/test_instance.rb +0 -262
- data/lib/origen/tester/ultraflex/parser/test_instances.rb +0 -26
- data/lib/origen/tester/ultraflex/parser/timeset.rb +0 -15
- data/lib/origen/tester/ultraflex/parser/timesets.rb +0 -0
- data/lib/origen/tester/ultraflex/ultraflex.rb +0 -759
- data/lib/origen/tester/v93k/generator.rb +0 -80
- data/lib/origen/tester/v93k/generator/flow.rb +0 -63
- data/lib/origen/tester/v93k/generator/flow_node.rb +0 -17
- data/lib/origen/tester/v93k/generator/flow_node/print.rb +0 -10
- data/lib/origen/tester/v93k/generator/pattern.rb +0 -16
- data/lib/origen/tester/v93k/generator/pattern_master.rb +0 -54
- data/lib/origen/tester/v93k/generator/templates/_test_method.txt.erb +0 -6
- data/lib/origen/tester/v93k/generator/templates/_test_suite.txt.erb +0 -11
- data/lib/origen/tester/v93k/generator/templates/template.flow.erb +0 -121
- data/lib/origen/tester/v93k/generator/templates/template.pmfl.erb +0 -9
- data/lib/origen/tester/v93k/generator/test_function.rb +0 -103
- data/lib/origen/tester/v93k/generator/test_functions.rb +0 -79
- data/lib/origen/tester/v93k/generator/test_method.rb +0 -46
- data/lib/origen/tester/v93k/generator/test_methods.rb +0 -75
- data/lib/origen/tester/v93k/generator/test_suite.rb +0 -54
- data/lib/origen/tester/v93k/generator/test_suites.rb +0 -65
- data/lib/origen/tester/v93k/v93k.rb +0 -420
- data/lib/origen/tester/vector.rb +0 -86
- data/lib/origen/tester/vector_generator.rb +0 -637
- data/lib/origen/tester/vector_pipeline.rb +0 -150
- data/lib/origen/utility/design_sync.rb +0 -494
- data/lib/origen/version_checker.rb +0 -117
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 2cf3140f29f89f5990d3fd1d9280f7ee8d3f807a
|
|
4
|
+
data.tar.gz: 53d58d539aa2f2469f90f93a9964a01f77564ec4
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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
|
-
|
|
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/
|
|
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
data/config/version.rb
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
module C99
|
|
2
|
-
|
|
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
|
data/lib/c99/doc_interface.rb
CHANGED
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
|
-
|
|
101
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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(
|
|
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.
|
|
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
|
data/lib/origen/application.rb
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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.
|
|
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.
|
|
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,
|
|
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,
|
|
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, :
|
|
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
|
-
|
|
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
|
|
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
|
|
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.
|
|
140
|
-
var = Origen.
|
|
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.
|
|
164
|
-
var = Origen.
|
|
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
|
-
|
|
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
|