origen 0.60.7 → 0.60.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (128) hide show
  1. checksums.yaml +4 -4
  2. data/config/rubocop/easy.yml +4875 -308
  3. data/config/rubocop/strict.yml +4875 -308
  4. data/config/version.rb +1 -1
  5. data/lib/origen/application/configuration.rb +6 -3
  6. data/lib/origen/application/deployer.rb +4 -4
  7. data/lib/origen/application/environment.rb +4 -2
  8. data/lib/origen/application/lsf.rb +23 -4
  9. data/lib/origen/application/lsf_manager.rb +48 -52
  10. data/lib/origen/application/plugins.rb +7 -7
  11. data/lib/origen/application/release.rb +5 -3
  12. data/lib/origen/application/runner.rb +5 -6
  13. data/lib/origen/application/statistics.rb +1 -0
  14. data/lib/origen/application/target.rb +9 -6
  15. data/lib/origen/application/version_tracker.rb +4 -5
  16. data/lib/origen/application/workspace_manager.rb +5 -2
  17. data/lib/origen/application.rb +9 -9
  18. data/lib/origen/boot/api.rb +3 -0
  19. data/lib/origen/boot/app.rb +28 -30
  20. data/lib/origen/boot.rb +1 -0
  21. data/lib/origen/bugs.rb +2 -2
  22. data/lib/origen/chip_mode.rb +7 -4
  23. data/lib/origen/chip_package.rb +50 -53
  24. data/lib/origen/chips/chip.rb +8 -4
  25. data/lib/origen/chips.rb +16 -12
  26. data/lib/origen/client.rb +1 -0
  27. data/lib/origen/clocks/clock.rb +8 -7
  28. data/lib/origen/clocks/clocks_collection.rb +2 -1
  29. data/lib/origen/code_generators/actions.rb +1 -1
  30. data/lib/origen/code_generators/base.rb +1 -1
  31. data/lib/origen/code_generators.rb +3 -0
  32. data/lib/origen/commands/archive.rb +1 -1
  33. data/lib/origen/commands/compile.rb +2 -2
  34. data/lib/origen/commands/fetch.rb +1 -1
  35. data/lib/origen/commands/generate.rb +3 -3
  36. data/lib/origen/commands/interactive.rb +6 -7
  37. data/lib/origen/commands/lint.rb +1 -1
  38. data/lib/origen/commands/lsf.rb +2 -2
  39. data/lib/origen/commands/new.rb +1 -1
  40. data/lib/origen/commands/plugin.rb +2 -2
  41. data/lib/origen/commands/program.rb +3 -3
  42. data/lib/origen/commands/rc.rb +4 -4
  43. data/lib/origen/commands/save.rb +1 -1
  44. data/lib/origen/commands/time.rb +4 -6
  45. data/lib/origen/commands/web.rb +5 -2
  46. data/lib/origen/commands.rb +1 -1
  47. data/lib/origen/componentable.rb +1 -0
  48. data/lib/origen/controller.rb +11 -13
  49. data/lib/origen/core_ext/array.rb +2 -1
  50. data/lib/origen/core_ext/enumerable.rb +4 -2
  51. data/lib/origen/core_ext/hash.rb +5 -6
  52. data/lib/origen/core_ext/integer.rb +2 -4
  53. data/lib/origen/core_ext/object.rb +2 -2
  54. data/lib/origen/core_ext/option_parser/optparse.rb +1 -1
  55. data/lib/origen/core_ext/string.rb +8 -8
  56. data/lib/origen/database/key_value_store.rb +12 -14
  57. data/lib/origen/database/key_value_stores.rb +1 -0
  58. data/lib/origen/errata/hw_erratum.rb +1 -1
  59. data/lib/origen/errata.rb +7 -8
  60. data/lib/origen/features/feature.rb +1 -0
  61. data/lib/origen/features.rb +4 -6
  62. data/lib/origen/file_handler.rb +8 -7
  63. data/lib/origen/fuses/fuse_field.rb +2 -2
  64. data/lib/origen/generator/compiler.rb +2 -4
  65. data/lib/origen/generator/job.rb +3 -2
  66. data/lib/origen/generator/pattern.rb +3 -3
  67. data/lib/origen/generator/pattern_finder.rb +6 -5
  68. data/lib/origen/generator/pattern_sequence.rb +3 -0
  69. data/lib/origen/generator/renderer.rb +3 -4
  70. data/lib/origen/generator/resources.rb +1 -1
  71. data/lib/origen/generator/stage.rb +3 -0
  72. data/lib/origen/limits/limit.rb +14 -11
  73. data/lib/origen/limits/limit_set.rb +2 -1
  74. data/lib/origen/loader.rb +4 -2
  75. data/lib/origen/log.rb +3 -2
  76. data/lib/origen/memory.rb +1 -0
  77. data/lib/origen/model.rb +10 -4
  78. data/lib/origen/models.rb +2 -2
  79. data/lib/origen/netlist/list.rb +1 -0
  80. data/lib/origen/netlist.rb +5 -7
  81. data/lib/origen/org_file/interceptor.rb +1 -1
  82. data/lib/origen/org_file.rb +4 -1
  83. data/lib/origen/parameters/set.rb +1 -0
  84. data/lib/origen/parameters.rb +3 -1
  85. data/lib/origen/pins/pin.rb +18 -12
  86. data/lib/origen/pins/pin_bank.rb +3 -0
  87. data/lib/origen/pins/pin_clock.rb +3 -2
  88. data/lib/origen/pins/pin_collection.rb +3 -0
  89. data/lib/origen/pins/timing/wave.rb +5 -0
  90. data/lib/origen/pins.rb +7 -1
  91. data/lib/origen/ports.rb +1 -1
  92. data/lib/origen/power_domains/power_domain.rb +5 -2
  93. data/lib/origen/power_domains/power_domains_collection.rb +2 -1
  94. data/lib/origen/registers/bit.rb +21 -17
  95. data/lib/origen/registers/bit_collection.rb +15 -6
  96. data/lib/origen/registers/reg.rb +34 -28
  97. data/lib/origen/registers.rb +25 -24
  98. data/lib/origen/remote_manager.rb +3 -2
  99. data/lib/origen/revision_control/base.rb +1 -4
  100. data/lib/origen/revision_control/design_sync.rb +10 -10
  101. data/lib/origen/revision_control/git.rb +4 -2
  102. data/lib/origen/site_config/config.rb +3 -1
  103. data/lib/origen/site_config.rb +3 -0
  104. data/lib/origen/specs/checkers.rb +12 -8
  105. data/lib/origen/specs/doc_resource.rb +3 -4
  106. data/lib/origen/specs/spec.rb +5 -1
  107. data/lib/origen/specs/version_history.rb +1 -1
  108. data/lib/origen/specs.rb +52 -37
  109. data/lib/origen/sub_blocks.rb +20 -14
  110. data/lib/origen/top_level.rb +2 -1
  111. data/lib/origen/users/user.rb +4 -5
  112. data/lib/origen/utility/csv_data.rb +6 -4
  113. data/lib/origen/utility/diff.rb +9 -9
  114. data/lib/origen/utility/file_diff.rb +4 -0
  115. data/lib/origen/utility/input_capture.rb +6 -6
  116. data/lib/origen/utility/mailer.rb +8 -11
  117. data/lib/origen/utility/time_and_date.rb +1 -2
  118. data/lib/origen/utility.rb +2 -2
  119. data/lib/origen/value.rb +2 -1
  120. data/lib/origen/version_string.rb +33 -41
  121. data/lib/origen.rb +62 -64
  122. data/origen_app_generators/origen_app_generators.gemspec +1 -1
  123. data/origen_site_config.yml +2 -0
  124. metadata +9 -27
  125. data/config/rubocop/easy_disabled.yml +0 -275
  126. data/config/rubocop/easy_enabled.yml +0 -727
  127. data/config/rubocop/strict_disabled.yml +0 -251
  128. data/config/rubocop/strict_enabled.yml +0 -751
@@ -127,6 +127,7 @@ module Origen
127
127
  unless live_parameter.respond_to?(:is_a_live_parameter?) && live_parameter.is_a_live_parameter?
128
128
  fail 'Only live updating parameters should be bound, make sure you have not missed .live in the path to the parameter!'
129
129
  end
130
+
130
131
  @parameter_bound_bits ||= {}
131
132
  @parameter_bound_bits[bitname] = live_parameter
132
133
  end
@@ -381,7 +382,8 @@ module Origen
381
382
  # this register specifically however, use the meta method to get that.
382
383
  def default_reg_metadata
383
384
  Origen::Registers.default_reg_metadata.merge(
384
- Origen::Registers.reg_metadata[owner.class] || {})
385
+ Origen::Registers.reg_metadata[owner.class] || {}
386
+ )
385
387
  end
386
388
 
387
389
  def bit_value_descriptions(bitname, options = {})
@@ -479,6 +481,7 @@ module Origen
479
481
  unless File.exist?(define_file)
480
482
  return desc
481
483
  end
484
+
482
485
  File.readlines(define_file).each do |line|
483
486
  if line =~ /^\s*#(.*)/
484
487
  desc << Regexp.last_match[1].strip
@@ -527,7 +530,7 @@ module Origen
527
530
  bit_params[:res] = bit_params[:data] if bit_params[:data]
528
531
  bit_params[:res] = bit_params[:reset] if bit_params[:reset]
529
532
  if num_bits == 1
530
- add_bit(bit_id, position, bit_params) # and add the new one
533
+ add_bit(bit_id, position, bit_params) # and add the new one
531
534
  else
532
535
  add_bus(bit_id, position, num_bits, bit_params)
533
536
  end
@@ -975,14 +978,16 @@ module Origen
975
978
  alias_method :has_bit, :has_bit?
976
979
  alias_method :has_bits, :has_bit?
977
980
 
981
+ # rubocop:disable Layout/MultilineHashBraceLayout
982
+
978
983
  # Add a bit to the register, should only be called internally
979
984
  def add_bit(id, position, options = {}) # :nodoc:
980
- options = { data: @bits[position].data, # If undefined preserve any data/reset value that has
981
- res: @bits[position].data, # already been applied at reg level
985
+ options = { data: @bits[position].data, # If undefined preserve any data/reset value that has
986
+ res: @bits[position].data # already been applied at reg level
982
987
  }.merge(options)
983
988
 
984
989
  @lookup[id] = { pos: position, bits: 1, feature: options[:feature] }
985
- @bits.delete_at(position) # Remove the initial bit from this position
990
+ @bits.delete_at(position) # Remove the initial bit from this position
986
991
 
987
992
  @bits.insert(position, Bit.new(self, position, options))
988
993
  self
@@ -994,8 +999,8 @@ module Origen
994
999
  size.times do |n|
995
1000
  default_data |= @bits[position + n].data << n
996
1001
  end
997
- options = { data: default_data, # If undefined preserve any data/reset value that has
998
- res: default_data, # already been applied at reg level
1002
+ options = { data: default_data, # If undefined preserve any data/reset value that has
1003
+ res: default_data # already been applied at reg level
999
1004
  }.merge(options)
1000
1005
 
1001
1006
  @lookup[id] = { pos: position, bits: size }
@@ -1025,8 +1030,8 @@ module Origen
1025
1030
  size.times do |n|
1026
1031
  default_data |= @bits[position + n].data << n
1027
1032
  end
1028
- options = { data: default_data, # If undefined preserve any data/reset value that has
1029
- res: default_data, # already been applied at reg level
1033
+ options = { data: default_data, # If undefined preserve any data/reset value that has
1034
+ res: default_data # already been applied at reg level
1030
1035
  }.merge(options)
1031
1036
 
1032
1037
  @lookup[id] = [] if @lookup[id].nil?
@@ -1038,9 +1043,10 @@ module Origen
1038
1043
  @bits.delete_at(position + n)
1039
1044
  @bits.insert(position + n, Bit.new(self, position + n, bit_options))
1040
1045
  end
1041
- self
1046
+ self # rubocop:disable Lint/Void
1042
1047
  end
1043
1048
  end
1049
+ # rubocop:enable Layout/MultilineHashBraceLayout
1044
1050
 
1045
1051
  # Delete the bits in the collection from the register
1046
1052
  def delete_bit(collection)
@@ -1048,7 +1054,7 @@ module Origen
1048
1054
  @lookup.delete(name)
1049
1055
  end
1050
1056
  collection.each do |bit|
1051
- @bits.delete_at(bit.position) # Remove the bit
1057
+ @bits.delete_at(bit.position) # Remove the bit
1052
1058
  @bits.insert(bit.position, Bit.new(self, bit.position, writable: @init_as_writable))
1053
1059
  end
1054
1060
  self
@@ -1163,6 +1169,7 @@ module Origen
1163
1169
  end
1164
1170
 
1165
1171
  return nil unless @bits[number]
1172
+
1166
1173
  if (params == :default || !params) && @bits[number].enabled?
1167
1174
  @bits[number]
1168
1175
  elsif params == :none && !@bits[number].has_feature_constraint?
@@ -1174,12 +1181,13 @@ module Origen
1174
1181
  unless @bits[number].enabled_by_feature?(param)
1175
1182
  return nil
1176
1183
  end
1184
+
1177
1185
  @bits[number]
1178
1186
  end
1179
1187
  elsif @bits[number].enabled_by_feature?(params)
1180
1188
  @bits[number]
1181
1189
  else
1182
- return Bit.new(self, number, writable: false)
1190
+ Bit.new(self, number, writable: false)
1183
1191
  end
1184
1192
  end
1185
1193
 
@@ -1211,19 +1219,19 @@ module Origen
1211
1219
  return collection
1212
1220
  end
1213
1221
  end
1214
- return BitCollection.dummy(self, bit_name, size: collection.size, pos: @lookup[bit_name][:pos])
1222
+ BitCollection.dummy(self, bit_name, size: collection.size, pos: @lookup[bit_name][:pos])
1215
1223
  else
1216
- return []
1224
+ []
1217
1225
  end
1218
1226
 
1219
1227
  elsif split_group_reg == true # if this registers has split bits in its range
1220
1228
  if @lookup.is_a?(Hash) # && @lookup.include?(bit_name)
1221
1229
  collection = false
1222
- @lookup.each do |k, v| # k is the bitname, v is the hash of bit data
1230
+ @lookup.each do |k, v| # k is the bitname, v is the hash of bit data
1223
1231
  if k == bit_name
1224
1232
  collection ||= BitCollection.new(self, k)
1225
1233
  if v.is_a?(Array)
1226
- v.reverse_each do |pb| # loop each piece of bit group data
1234
+ v.reverse_each do |pb| # loop each piece of bit group data
1227
1235
  (pb[:bits]).times do |i|
1228
1236
  collection << @bits[pb[:pos] + i]
1229
1237
  end
@@ -1255,12 +1263,12 @@ module Origen
1255
1263
  end
1256
1264
  end
1257
1265
  if @lookup.is_a?(Hash) && @lookup[bit_name].is_a?(Array)
1258
- return BitCollection.dummy(self, bit_name, size: collection.size, pos: @lookup[bit_name][0][:pos])
1266
+ BitCollection.dummy(self, bit_name, size: collection.size, pos: @lookup[bit_name][0][:pos])
1259
1267
  else
1260
- return BitCollection.dummy(self, bit_name, size: collection.size, pos: @lookup[bit_name[:pos]])
1268
+ BitCollection.dummy(self, bit_name, size: collection.size, pos: @lookup[bit_name[:pos]])
1261
1269
  end
1262
1270
  else
1263
- return []
1271
+ []
1264
1272
  end
1265
1273
  end
1266
1274
  end
@@ -1274,9 +1282,7 @@ module Origen
1274
1282
  end
1275
1283
 
1276
1284
  if params
1277
- return params[:enabled_features] || params[:enabled_feature]
1278
- else
1279
- return nil
1285
+ params[:enabled_features] || params[:enabled_feature]
1280
1286
  end
1281
1287
  end
1282
1288
 
@@ -1401,7 +1407,7 @@ module Origen
1401
1407
  # Cleans an input value, in some cases it could be a register object, or an explicit value.
1402
1408
  # This will return an explicit value in either case.
1403
1409
  def self.clean_value(value) # :nodoc:
1404
- value = value.val if value.respond_to?('val') # Pull out the data value if a reg object has been passed in
1410
+ value = value.val if value.respond_to?('val') # Pull out the data value if a reg object has been passed in
1405
1411
  value
1406
1412
  end
1407
1413
 
@@ -1439,9 +1445,9 @@ module Origen
1439
1445
  return true
1440
1446
  end
1441
1447
  end
1442
- return false
1448
+ false
1443
1449
  else
1444
- return feature == name
1450
+ feature == name
1445
1451
  end
1446
1452
  end
1447
1453
  end
@@ -1483,7 +1489,7 @@ module Origen
1483
1489
  break # break if feature not found and return false
1484
1490
  end
1485
1491
  end # iterated through all features in array
1486
- return value
1492
+ value
1487
1493
  else # if feature.class != Array
1488
1494
  loop do
1489
1495
  if current_owner.respond_to?(:owner)
@@ -1506,10 +1512,10 @@ module Origen
1506
1512
  value = true
1507
1513
  end
1508
1514
  end
1509
- return value
1515
+ value
1510
1516
  end
1511
1517
  else
1512
- return true
1518
+ true
1513
1519
  end
1514
1520
  end
1515
1521
 
@@ -20,7 +20,7 @@ module Origen
20
20
  included do
21
21
  include Origen::ModelInitializer
22
22
  include Origen::SubBlocks
23
- include Origen::Callbacks # Required for global register reset
23
+ include Origen::Callbacks # Required for global register reset
24
24
 
25
25
  attr_accessor :owner
26
26
  attr_accessor :name
@@ -31,13 +31,11 @@ module Origen
31
31
  # not explicitly defined on this model it will be inherited from the parent
32
32
  # and will default to :lsb0 at the top-level
33
33
  def bit_order
34
- @bit_order ||= begin
35
- if parent
36
- parent.bit_order
37
- else
38
- :lsb0
39
- end
40
- end
34
+ @bit_order ||= if parent
35
+ parent.bit_order
36
+ else
37
+ :lsb0
38
+ end
41
39
  end
42
40
 
43
41
  def method_missing(method, *args, &block) # :nodoc:
@@ -189,7 +187,7 @@ module Origen
189
187
  break # break if feature not found and return false
190
188
  end
191
189
  end # iterated through all features in array
192
- return value
190
+ value
193
191
  else # if feature.class != Array
194
192
  loop do
195
193
  if current_owner.respond_to?(:owner)
@@ -212,10 +210,10 @@ module Origen
212
210
  value = true
213
211
  end
214
212
  end
215
- return value
213
+ value
216
214
  end
217
215
  else
218
- return true
216
+ true
219
217
  end
220
218
  end
221
219
 
@@ -230,9 +228,9 @@ module Origen
230
228
  return true
231
229
  end
232
230
  end
233
- return false
231
+ false
234
232
  else
235
- return feature == name
233
+ feature == name
236
234
  end
237
235
  end
238
236
  end
@@ -311,6 +309,7 @@ module Origen
311
309
  if address.is_a?(Hash)
312
310
  fail 'add_reg requires the address to be supplied as the 2nd argument, e.g. add_reg :my_reg, 0x1000'
313
311
  end
312
+
314
313
  size, bit_info = nil, size if size.is_a?(Hash)
315
314
  size ||= bit_info.delete(:size) || 32
316
315
  description = bit_info.delete(:description)
@@ -328,7 +327,7 @@ module Origen
328
327
  @max_reg_address ||= address
329
328
  # Must set an initial value, otherwise max_address_reg_size will be nil if a sub_block contains only
330
329
  # a single register.
331
- @max_address_reg_size = size unless @max_address_reg_size
330
+ @max_address_reg_size ||= size
332
331
  @min_reg_address = address if address < @min_reg_address
333
332
  if address > @max_reg_address
334
333
  @max_address_reg_size = size
@@ -409,11 +408,11 @@ module Origen
409
408
  @new_reg_attrs[name] = attrs
410
409
  else
411
410
  if @new_reg_attrs[name].is_a? Hash
412
- temparray = temparray.push(@new_reg_attrs[name])
411
+ temparray.push(@new_reg_attrs[name])
413
412
  else
414
413
  temparray = @new_reg_attrs[name]
415
414
  end
416
- temparray = temparray.push(attrs)
415
+ temparray.push(attrs)
417
416
  # added the sort so that the order the registers bits is described is not important
418
417
  @new_reg_attrs[name] = temparray.sort { |a, b| b[:pos] <=> a[:pos] }
419
418
 
@@ -449,6 +448,7 @@ module Origen
449
448
  # @api private
450
449
  def instantiate_reg(id, attrs)
451
450
  return _registers[id] unless _registers[id].is_a?(Origen::Registers::Placeholder)
451
+
452
452
  attributes = {
453
453
  define_file: attrs[:define_file],
454
454
  description: attrs[:description]
@@ -493,10 +493,10 @@ module Origen
493
493
  test_for_true_false: true
494
494
  }.update(params)
495
495
  if params.key?(:enabled_features) || params.key?(:enabled_feature)
496
- return !!get_registers(params).include?(name)
496
+ !!get_registers(params).include?(name)
497
497
  else
498
498
  params[:enabled_features] = :default
499
- return !!get_registers(params).include?(name)
499
+ !!get_registers(params).include?(name)
500
500
  end
501
501
  end
502
502
  alias_method :has_reg, :has_reg?
@@ -520,13 +520,14 @@ module Origen
520
520
  if !args.empty? && args.size == 1 && (args[0].class != Hash || (args[0].key?(:name) && args[0].size == 1))
521
521
  if args[0].class == Hash
522
522
  name = args[0][:name]
523
- else name = args.first
523
+ else
524
+ name = args.first
524
525
  end
525
526
  if has_reg(name)
526
- return _registers[name]
527
+ _registers[name]
527
528
  elsif name =~ /\/(.+)\//
528
529
  regex = Regexp.last_match(1)
529
- return match_registers(regex)
530
+ match_registers(regex)
530
531
  else
531
532
  if Origen.config.strict_errors
532
533
  puts ''
@@ -560,7 +561,7 @@ module Origen
560
561
  # Example use case:
561
562
  # reg(:enabled_features =>[:fac, fac2])
562
563
  elsif params.size == 1 && params.key?(:enabled_features)
563
- return get_registers(enabled_features: params[:enabled_features])
564
+ get_registers(enabled_features: params[:enabled_features])
564
565
  end
565
566
 
566
567
  # Example use case:
@@ -578,9 +579,9 @@ module Origen
578
579
  end
579
580
  elsif args.empty?
580
581
  if _registers.empty?
581
- return _registers
582
+ _registers
582
583
  else
583
- return get_registers(enabled_features: :default)
584
+ get_registers(enabled_features: :default)
584
585
  end
585
586
  else
586
587
  if Origen.config.strict_errors
@@ -57,6 +57,7 @@ module Origen
57
57
  if remote[:path]
58
58
  fail "The following remote is defined as a path, but that is not allowed in production: #{remote}"
59
59
  end
60
+
60
61
  version = Origen::VersionString.new(remote[:version])
61
62
  unless version.valid?
62
63
  fail "The following remote version is not in a valid format: #{remote}"
@@ -269,7 +270,7 @@ module Origen
269
270
  end
270
271
 
271
272
  def top_level_remotes
272
- Origen.app.config.remotes #+ Origen.app.config.remotes_dev (there are no core remotes at this time)
273
+ Origen.app.config.remotes #+ Origen.app.config.remotes_dev (there are no core remotes at this time)
273
274
  end
274
275
 
275
276
  def remotes
@@ -353,7 +354,7 @@ module Origen
353
354
  f.write tag
354
355
  end
355
356
  end
356
- rescue Origen::GitError, Origen::DesignSyncError, Origen::PerforceError => e
357
+ rescue Origen::GitError, Origen::DesignSyncError, Origen::PerforceError => e
357
358
  # If Git failed in the remote, its usually easy to see what the problem is, but now *where* it is.
358
359
  # This will prepend the failing remote along with the error from the revision control system,
359
360
  # then rethrow the error
@@ -19,14 +19,13 @@ module Origen
19
19
  # Method to use by Origen::RemoteManager to handle fetching a remote file
20
20
  attr_reader :remotes_method
21
21
 
22
- # rubocop:disable Lint/UnusedMethodArgument
23
-
24
22
  # All revision control instances represent a remote server mapping
25
23
  # to a local directory, :remote and :local options are required
26
24
  def initialize(options = {})
27
25
  unless options[:remote] && options[:local]
28
26
  fail ':remote and :local options must be supplied when instantiating a new RevisionControl object'
29
27
  end
28
+
30
29
  @remote = Pathname.new(options[:remote])
31
30
  @local = Pathname.new(options[:local]).expand_path
32
31
  @remotes_method = :checkout
@@ -207,8 +206,6 @@ module Origen
207
206
  end
208
207
  alias_method :subversion?, :svn?
209
208
 
210
- # rubocop:enable Lint/UnusedMethodArgument
211
-
212
209
  private
213
210
 
214
211
  def clean_path(path = nil, options = {})
@@ -24,6 +24,7 @@ module Origen
24
24
  fail "Directory does not exist: #{dir}" unless dir.exist?
25
25
  fail "Only directories are supported by remote_check_in, this is not a directory: #{dir}" unless dir.directory?
26
26
  fail 'No vault option supplied to remote_check_in!' unless options[:vault]
27
+
27
28
  scratch = Pathname.new("#{Origen.app.workspace_manager.imports_directory}/design_sync/scratch")
28
29
  FileUtils.rm_rf(scratch) if scratch.exist?
29
30
  FileUtils.mkdir_p(scratch)
@@ -77,6 +78,7 @@ module Origen
77
78
  dir = Pathname.new(dir)
78
79
  fail "Directory does not exist: #{dir}" unless dir.exist?
79
80
  fail "Only directories are supported by remove_dot_syncs, this is not a directory: #{dir}" unless dir.directory?
81
+
80
82
  Dir.glob("#{dir}/**/.SYNC").sort.each do |dot_sync|
81
83
  FileUtils.rm_rf(dot_sync)
82
84
  end
@@ -180,10 +182,10 @@ module Origen
180
182
 
181
183
  files = dssc(cmd, options).reject do |item|
182
184
  item.strip.empty? ||
183
- item =~ /^(Name|Directory|---)/
185
+ item =~ /^(Name|Directory|---)/
184
186
  end
185
187
  files.map! do |file|
186
- file.strip! # Strip off any whitespace from all objects
188
+ file.strip! # Strip off any whitespace from all objects
187
189
  file.sub!(/^#{full_path_prefix}/, '')
188
190
  file.sub('|', ':')
189
191
  file.sub!(/^/, "#{paths.first}/")
@@ -202,7 +204,7 @@ module Origen
202
204
  item =~ /^(Name|Directory|---)/ || item.strip.empty?
203
205
  end
204
206
  files.map! do |file|
205
- file.strip! # Strip off any whitespace from all objects
207
+ file.strip! # Strip off any whitespace from all objects
206
208
  file.sub!(/^#{full_path_prefix}/, '')
207
209
  file.sub('|', ':')
208
210
  end
@@ -276,13 +278,11 @@ module Origen
276
278
  private
277
279
 
278
280
  def full_path_prefix
279
- @full_path_prefix ||= begin
280
- if Origen.running_on_windows?
281
- 'file:///'
282
- else
283
- 'file://'
284
- end
285
- end
281
+ @full_path_prefix ||= if Origen.running_on_windows?
282
+ 'file:///'
283
+ else
284
+ 'file://'
285
+ end
286
286
  end
287
287
 
288
288
  def initialize_local_dir(options = {})
@@ -66,6 +66,7 @@ module Origen
66
66
  if paths.size > 1 || paths.first != local.to_s
67
67
  fail 'The Git driver does not support partial merge checkout, it has to be the whole workspace'
68
68
  end
69
+
69
70
  git 'reset HEAD'
70
71
  res = git 'stash', options
71
72
  stashed = !res.any? { |l| l =~ /^No local changes to save/ }
@@ -122,11 +123,11 @@ module Origen
122
123
  if options[:comment] && !options[:comment].strip.empty?
123
124
  cmd += " -m \"#{options[:comment].strip}\""
124
125
  else
125
- cmd += " -m \"No comment!\""
126
+ cmd += ' -m "No comment!"'
126
127
  end
127
128
  if options[:author]
128
129
  if options[:author].respond_to?(:name_and_email)
129
- author = options[:author].name_and_email
130
+ author = options[:author].name_and_email
130
131
  else
131
132
  author = "#{options[:author]} <>"
132
133
  end
@@ -346,6 +347,7 @@ module Origen
346
347
 
347
348
  def initialize_local_dir(options = {})
348
349
  return if options[:build_method] == :clone
350
+
349
351
  super
350
352
  unless initialized?(options)
351
353
  Origen.log.debug "Initializing Git workspace at #{local}"
@@ -86,7 +86,6 @@ module Origen
86
86
  File.open(cached_file, 'w+') do |f|
87
87
  f.write(text)
88
88
  end
89
-
90
89
  rescue SocketError => e
91
90
  puts red("Origen: Site Config: Unable to connect to #{path}")
92
91
  puts red('Origen: Site Config: Failed to retrieve centralized site config!')
@@ -125,6 +124,8 @@ module Origen
125
124
  ERB.new(File.read(erb), 0, '%<>')
126
125
  end
127
126
 
127
+ # YAML.safe_load is prefered
128
+ # rubocop:disable Security/YAMLLoad
128
129
  if centralized?
129
130
  if !cached?
130
131
  if fetch
@@ -147,6 +148,7 @@ module Origen
147
148
  @values = (YAML.load_file(path) || {})
148
149
  end
149
150
  end
151
+ # rubocop:enable Security/YAMLLoad
150
152
 
151
153
  unless @values.is_a?(Hash)
152
154
  puts red("Origen: Site Config: The config at #{path} was not parsed as a Hash, but as a #{@values.class}")
@@ -243,11 +243,14 @@ module Origen
243
243
  ENV.key?(val)
244
244
  end
245
245
 
246
+ # rubocop:disable Lint/DuplicateMethods
247
+
246
248
  def env(val)
247
249
  if env_contains?(val)
248
250
  ENV[val]
249
251
  end
250
252
  end
253
+ # rubocop:enable Lint/DuplicateMethods
251
254
 
252
255
  def inspect_variable(*vars)
253
256
  vars.each do |var|
@@ -5,6 +5,7 @@ module Origen
5
5
  def name_audit(name)
6
6
  return name if name.nil?
7
7
  return nil unless name.is_a?(Symbol) || name.is_a?(String)
8
+
8
9
  if name == :inspect
9
10
  Origen.log.debug ':inspect is a reserved spec name'
10
11
  return nil
@@ -28,6 +29,7 @@ module Origen
28
29
  if (@min.exp.to_s.include? '/') || (@max.exp.to_s.include? '/')
29
30
  return status
30
31
  end
32
+
31
33
  if @min.exp.nil? ^ @max.exp.nil?
32
34
  @limit_type = :single_sided
33
35
  if @typ.exp
@@ -72,6 +74,7 @@ module Origen
72
74
  def evaluate_limit(limit)
73
75
  return limit if limit.is_a?(Numeric)
74
76
  return nil if limit.nil?
77
+
75
78
  if limit.is_a? Symbol
76
79
  limit = ':' + limit.to_s
77
80
  else
@@ -129,18 +132,19 @@ module Origen
129
132
  begin
130
133
  result = eval(limit)
131
134
  return result.round(4) if result.is_a? Numeric
132
- rescue ::SyntaxError, ::NameError, ::TypeError
133
- Origen.log.debug "Limit '#{limit}' had to be rescued, storing it as a #{limit.class}"
134
- if limit.is_a? Symbol
135
- return limit
136
- else
137
- return "#{limit}"
138
- end
135
+ rescue ::SyntaxError, ::NameError, ::TypeError
136
+ Origen.log.debug "Limit '#{limit}' had to be rescued, storing it as a #{limit.class}"
137
+ if limit.is_a? Symbol
138
+ limit
139
+ else
140
+ "#{limit}"
141
+ end
139
142
  end
140
143
  else
141
- return result
144
+ result
142
145
  end
143
146
  end
147
+ # rubocop:enable Style/RescueModifier:
144
148
  end
145
149
  end
146
150
  end
@@ -62,9 +62,8 @@ module Origen
62
62
  tmp['audience'] = @audience unless @audience.nil?
63
63
  doc_resource_ml = Nokogiri::XML::Builder.new do |xml|
64
64
  xml.doc_resource(tmp.each do |t, d|
65
- "#{t}=\"#{d}\""
66
- end
67
- ) do
65
+ "#{t}=\"#{d}\"" # rubocop:disable Lint/Void
66
+ end) do
68
67
  unless @table_title.nil? && @note_refs.size == 0 && @exhibit_refs.size == 0
69
68
  unless @note_refs.first.to_s.size == 0
70
69
  unless @exhibit_refs.first.to_s.size == 0
@@ -98,7 +97,7 @@ module Origen
98
97
  end # unless @exhibit_refs.size == 0
99
98
  end # xml.title.done
100
99
  end # unless @exhibit_refs.to_s.size == 0
101
- end # unless @note_refs.to_s.size == 0
100
+ end # unless @note_refs.to_s.size == 0
102
101
  end # unless @table_title.nil? && @note_refs.size == 0 && @exhibit_refs.size == 0
103
102
  unless @before_table.nil? && @after_table.nil?
104
103
  xml.paragraphs do
@@ -83,6 +83,7 @@ module Origen
83
83
  def initialize(name, type, mode, owner_name, &block)
84
84
  @name = name_audit(name)
85
85
  fail 'Specification names must be of types Symbol or String and cannot start with a number' if @name.nil?
86
+
86
87
  @type = type
87
88
  @sub_type = nil # not necessary to be able to find a unique spec, but required for some specs
88
89
  @mode = mode
@@ -98,6 +99,7 @@ module Origen
98
99
  @guardband = nil
99
100
  (block.arity < 1 ? (instance_eval(&block)) : block.call(self)) if block_given?
100
101
  fail "Spec type must be one of #{TYPES.join(', ')}" unless TYPES.include? type
102
+
101
103
  @min = Limit.new(@min)
102
104
  @max = Limit.new(@max)
103
105
  @typ = Limit.new(@typ)
@@ -206,6 +208,7 @@ module Origen
206
208
  instance_variables.each do |ivar|
207
209
  ivar_sym = ivar.to_s.gsub('@', '').to_sym
208
210
  next if ivar_sym == :notes # temporarily disable until notes diff method written
211
+
209
212
  ivar_str = ivar.to_s.gsub('@', '')
210
213
  if compare_spec.respond_to? ivar_sym
211
214
  # Check if the instance variable is a Limit and if so then find
@@ -261,6 +264,7 @@ module Origen
261
264
  # Returns a Note object from the notes hash
262
265
  def notes(id = nil)
263
266
  return nil if @notes.nil?
267
+
264
268
  @notes.filter(id)
265
269
  end
266
270
 
@@ -310,7 +314,7 @@ module Origen
310
314
  name_set += 4 unless @type.nil?
311
315
  name_set += 2 unless @sub_type.nil?
312
316
  unless @mode.nil?
313
- unless (@mode.to_s.include? 'local') || (@mode.to_s.include? 'global')
317
+ unless (@mode.to_s.include? 'local') || (@mode.to_s.include? 'global')
314
318
  name_set += 1
315
319
  end
316
320
  end
@@ -4,7 +4,7 @@ module Origen
4
4
  class Version_History
5
5
  attr_accessor :label, :date, :author, :changes, :external_changes_internal
6
6
 
7
- def initialize(date, author, changes, label = nil, external_changes_internal = nil)
7
+ def initialize(date, author, changes, label = nil, external_changes_internal = nil)
8
8
  @date = date
9
9
  @author = author
10
10
  @changes = changes