origen 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/ctags +0 -0
- data/bin/origen +165 -1
- data/bin/rgen +2 -0
- data/config/application.rb +141 -0
- data/config/commands.rb +72 -0
- data/config/development.rb +7 -0
- data/config/environment.rb +0 -0
- data/config/rgen.policy +7 -0
- data/config/rubocop/easy.yml +620 -0
- data/config/rubocop/easy_disabled.yml +271 -0
- data/config/rubocop/easy_enabled.yml +731 -0
- data/config/rubocop/strict.yml +620 -0
- data/config/rubocop/strict_disabled.yml +247 -0
- data/config/rubocop/strict_enabled.yml +755 -0
- data/config/users.rb +20 -0
- data/config/version.rb +1 -1
- data/helpers/url.rb +68 -0
- data/lib/c99/doc_interface.rb +56 -0
- data/lib/c99/j750_interface.rb +85 -0
- data/lib/c99/nvm.rb +89 -0
- data/lib/c99/target/mock2.rb +1 -0
- data/lib/c99/target/subdir/mock3.rb +1 -0
- data/lib/option_parser/optparse.rb +12 -0
- data/lib/origen/acronyms.rb +60 -0
- data/lib/origen/application/command_dispatcher.rb +12 -0
- data/lib/origen/application/configuration.rb +206 -0
- data/lib/origen/application/configuration_manager.rb +78 -0
- data/lib/origen/application/deployer.rb +367 -0
- data/lib/origen/application/environment.rb +186 -0
- data/lib/origen/application/lsf.rb +145 -0
- data/lib/origen/application/lsf_manager.rb +657 -0
- data/lib/origen/application/plugins_manager.rb +280 -0
- data/lib/origen/application/release.rb +359 -0
- data/lib/origen/application/runner.rb +246 -0
- data/lib/origen/application/statistics.rb +191 -0
- data/lib/origen/application/target.rb +374 -0
- data/lib/origen/application/version_tracker.rb +59 -0
- data/lib/origen/application/workspace_manager.rb +151 -0
- data/lib/origen/application.rb +746 -0
- data/lib/origen/bugs/bug.rb +36 -0
- data/lib/origen/bugs.rb +45 -0
- data/lib/origen/callbacks.rb +35 -0
- data/lib/origen/chip_mode.rb +118 -0
- data/lib/origen/chip_package.rb +461 -0
- data/lib/origen/client.rb +87 -0
- data/lib/origen/code_generators/actions.rb +258 -0
- data/lib/origen/code_generators/base.rb +57 -0
- data/lib/origen/code_generators/bundler.rb +17 -0
- data/lib/origen/code_generators/gem_setup.rb +49 -0
- data/lib/origen/code_generators/rake.rb +13 -0
- data/lib/origen/code_generators/rspec.rb +12 -0
- data/lib/origen/code_generators/semver.rb +39 -0
- data/lib/origen/code_generators/timever.rb +37 -0
- data/lib/origen/code_generators.rb +111 -0
- data/lib/origen/commands/add.rb +12 -0
- data/lib/origen/commands/compile.rb +62 -0
- data/lib/origen/commands/ctags.rb +9 -0
- data/lib/origen/commands/dispatch.rb +22 -0
- data/lib/origen/commands/environment.rb +11 -0
- data/lib/origen/commands/fetch.rb +63 -0
- data/lib/origen/commands/generate.rb +130 -0
- data/lib/origen/commands/interactive.rb +73 -0
- data/lib/origen/commands/lint.rb +82 -0
- data/lib/origen/commands/lsf.rb +93 -0
- data/lib/origen/commands/merge.rb +55 -0
- data/lib/origen/commands/modifications.rb +12 -0
- data/lib/origen/commands/new.rb +113 -0
- data/lib/origen/commands/plugin.rb +105 -0
- data/lib/origen/commands/program.rb +70 -0
- data/lib/origen/commands/rc.rb +442 -0
- data/lib/origen/commands/save.rb +56 -0
- data/lib/origen/commands/target.rb +27 -0
- data/lib/origen/commands/time.rb +127 -0
- data/lib/origen/commands/version.rb +17 -0
- data/lib/origen/commands/web.rb +221 -0
- data/lib/origen/commands.rb +272 -0
- data/lib/origen/commands_global.rb +76 -0
- data/lib/origen/controller.rb +94 -0
- data/lib/origen/core_ext/array.rb +23 -0
- data/lib/origen/core_ext/bignum.rb +36 -0
- data/lib/origen/core_ext/enumerable.rb +76 -0
- data/lib/origen/core_ext/fixnum.rb +46 -0
- data/lib/origen/core_ext/hash.rb +52 -0
- data/lib/origen/core_ext/module.rb +14 -0
- data/lib/origen/core_ext/numeric.rb +126 -0
- data/lib/origen/core_ext/object.rb +13 -0
- data/lib/origen/core_ext/range.rb +7 -0
- data/lib/origen/core_ext/string.rb +124 -0
- data/lib/origen/core_ext.rb +10 -0
- data/lib/origen/database/key_value_store.rb +111 -0
- data/lib/origen/database/key_value_stores.rb +108 -0
- data/lib/origen/database.rb +6 -0
- data/lib/origen/encodings.rb +102 -0
- data/lib/origen/features/feature.rb +22 -0
- data/lib/origen/features.rb +104 -0
- data/lib/origen/file_handler.rb +429 -0
- data/lib/origen/generator/comparator.rb +56 -0
- data/lib/origen/generator/compiler.rb +277 -0
- data/lib/origen/generator/flow.rb +49 -0
- data/lib/origen/generator/job.rb +131 -0
- data/lib/origen/generator/pattern.rb +356 -0
- data/lib/origen/generator/pattern_finder.rb +155 -0
- data/lib/origen/generator/pattern_iterator.rb +55 -0
- data/lib/origen/generator/renderer.rb +113 -0
- data/lib/origen/generator/resources.rb +40 -0
- data/lib/origen/generator/stage.rb +89 -0
- data/lib/origen/generator.rb +85 -0
- data/lib/origen/global_methods.rb +205 -0
- data/lib/origen/import_manager.rb +596 -0
- data/lib/origen/location/base.rb +116 -0
- data/lib/origen/location/map.rb +83 -0
- data/lib/origen/location.rb +6 -0
- data/lib/origen/log.rb +217 -0
- data/lib/origen/logger_methods.rb +56 -0
- data/lib/origen/mode.rb +61 -0
- data/lib/origen/model.rb +267 -0
- data/lib/origen/model_initializer.rb +45 -0
- data/lib/origen/nvm/block_array.rb +72 -0
- data/lib/origen/nvm.rb +6 -0
- data/lib/origen/parameters/live.rb +22 -0
- data/lib/origen/parameters/missing.rb +28 -0
- data/lib/origen/parameters/set.rb +144 -0
- data/lib/origen/parameters.rb +107 -0
- data/lib/origen/pdm.rb +218 -0
- data/lib/origen/pins/function_proxy.rb +36 -0
- data/lib/origen/pins/ground_pin.rb +6 -0
- data/lib/origen/pins/pin.rb +860 -0
- data/lib/origen/pins/pin_bank.rb +349 -0
- data/lib/origen/pins/pin_clock.rb +124 -0
- data/lib/origen/pins/pin_collection.rb +492 -0
- data/lib/origen/pins/pin_common.rb +206 -0
- data/lib/origen/pins/port.rb +268 -0
- data/lib/origen/pins/power_pin.rb +30 -0
- data/lib/origen/pins.rb +696 -0
- data/lib/origen/registers/bit.rb +562 -0
- data/lib/origen/registers/bit_collection.rb +787 -0
- data/lib/origen/registers/container.rb +288 -0
- data/lib/origen/registers/domain.rb +16 -0
- data/lib/origen/registers/reg.rb +1406 -0
- data/lib/origen/registers/reg_collection.rb +24 -0
- data/lib/origen/registers.rb +652 -0
- data/lib/origen/regression_manager.rb +251 -0
- data/lib/origen/remote_manager.rb +340 -0
- data/lib/origen/revision_control/base.rb +257 -0
- data/lib/origen/revision_control/design_sync.rb +276 -0
- data/lib/origen/revision_control/git.rb +243 -0
- data/lib/origen/revision_control/subversion.rb +6 -0
- data/lib/origen/revision_control.rb +44 -0
- data/lib/origen/ruby_version_check.rb +131 -0
- data/lib/origen/site_config.rb +61 -0
- data/lib/origen/specs/checkers.rb +103 -0
- data/lib/origen/specs/creation_info.rb +17 -0
- data/lib/origen/specs/doc_resource.rb +91 -0
- data/lib/origen/specs/exhibit.rb +17 -0
- data/lib/origen/specs/mode_select.rb +16 -0
- data/lib/origen/specs/note.rb +17 -0
- data/lib/origen/specs/override.rb +21 -0
- data/lib/origen/specs/power_supply.rb +13 -0
- data/lib/origen/specs/spec.rb +226 -0
- data/lib/origen/specs/version_history.rb +14 -0
- data/lib/origen/specs.rb +552 -0
- data/lib/origen/sub_blocks.rb +298 -0
- data/lib/origen/tester/api.rb +277 -0
- data/lib/origen/tester/bdm/bdm.rb +25 -0
- data/lib/origen/tester/command_based_tester.rb +46 -0
- data/lib/origen/tester/doc/doc.rb +226 -0
- data/lib/origen/tester/doc/generator/flow.rb +71 -0
- data/lib/origen/tester/doc/generator/flow_line.rb +203 -0
- data/lib/origen/tester/doc/generator/test.rb +68 -0
- data/lib/origen/tester/doc/generator/test_group.rb +66 -0
- data/lib/origen/tester/doc/generator/tests.rb +47 -0
- data/lib/origen/tester/doc/generator.rb +126 -0
- data/lib/origen/tester/doc/model.rb +162 -0
- data/lib/origen/tester/generator/flow_control_api.rb +606 -0
- data/lib/origen/tester/generator/identity_map.rb +25 -0
- data/lib/origen/tester/generator/placeholder.rb +13 -0
- data/lib/origen/tester/generator/test_numberer.rb +25 -0
- data/lib/origen/tester/generator.rb +271 -0
- data/lib/origen/tester/interface.rb +154 -0
- data/lib/origen/tester/j750/files.rb +45 -0
- data/lib/origen/tester/j750/generator/flow.rb +123 -0
- data/lib/origen/tester/j750/generator/flow_line.rb +288 -0
- data/lib/origen/tester/j750/generator/patgroup.rb +111 -0
- data/lib/origen/tester/j750/generator/patgroups.rb +41 -0
- data/lib/origen/tester/j750/generator/patset.rb +111 -0
- data/lib/origen/tester/j750/generator/patsets.rb +41 -0
- data/lib/origen/tester/j750/generator/templates/flow.txt.erb +9 -0
- data/lib/origen/tester/j750/generator/templates/instances.txt.erb +16 -0
- data/lib/origen/tester/j750/generator/templates/patgroups.txt.erb +8 -0
- data/lib/origen/tester/j750/generator/templates/patsets.txt.erb +10 -0
- data/lib/origen/tester/j750/generator/test_instance.rb +846 -0
- data/lib/origen/tester/j750/generator/test_instance_group.rb +60 -0
- data/lib/origen/tester/j750/generator/test_instances.rb +182 -0
- data/lib/origen/tester/j750/generator.rb +203 -0
- data/lib/origen/tester/j750/j750.rb +845 -0
- data/lib/origen/tester/j750/j750_hpt.rb +35 -0
- data/lib/origen/tester/j750/parser/ac_spec.rb +11 -0
- data/lib/origen/tester/j750/parser/ac_specs.rb +0 -0
- data/lib/origen/tester/j750/parser/dc_spec.rb +36 -0
- data/lib/origen/tester/j750/parser/dc_specs.rb +50 -0
- data/lib/origen/tester/j750/parser/descriptions.rb +340 -0
- data/lib/origen/tester/j750/parser/flow.rb +111 -0
- data/lib/origen/tester/j750/parser/flow_line.rb +207 -0
- data/lib/origen/tester/j750/parser/flows.rb +23 -0
- data/lib/origen/tester/j750/parser/pattern_set.rb +94 -0
- data/lib/origen/tester/j750/parser/pattern_sets.rb +33 -0
- data/lib/origen/tester/j750/parser/test_instance.rb +322 -0
- data/lib/origen/tester/j750/parser/test_instances.rb +26 -0
- data/lib/origen/tester/j750/parser/timeset.rb +15 -0
- data/lib/origen/tester/j750/parser/timesets.rb +0 -0
- data/lib/origen/tester/j750/parser.rb +104 -0
- data/lib/origen/tester/jlink/jlink.rb +33 -0
- data/lib/origen/tester/parser/description_lookup.rb +64 -0
- data/lib/origen/tester/parser/searchable_array.rb +32 -0
- data/lib/origen/tester/parser/searchable_hash.rb +32 -0
- data/lib/origen/tester/parser.rb +24 -0
- data/lib/origen/tester/time.rb +338 -0
- data/lib/origen/tester/timing.rb +253 -0
- data/lib/origen/tester/ultraflex/files.rb +45 -0
- data/lib/origen/tester/ultraflex/generator/flow.rb +119 -0
- data/lib/origen/tester/ultraflex/generator/flow_line.rb +269 -0
- data/lib/origen/tester/ultraflex/generator/patgroup.rb +111 -0
- data/lib/origen/tester/ultraflex/generator/patgroups.rb +41 -0
- data/lib/origen/tester/ultraflex/generator/patset.rb +111 -0
- data/lib/origen/tester/ultraflex/generator/patsets.rb +41 -0
- data/lib/origen/tester/ultraflex/generator/templates/flow.txt.erb +9 -0
- data/lib/origen/tester/ultraflex/generator/templates/instances.txt.erb +16 -0
- data/lib/origen/tester/ultraflex/generator/templates/patgroups.txt.erb +8 -0
- data/lib/origen/tester/ultraflex/generator/templates/patsets.txt.erb +10 -0
- data/lib/origen/tester/ultraflex/generator/test_instance.rb +622 -0
- data/lib/origen/tester/ultraflex/generator/test_instance_group.rb +60 -0
- data/lib/origen/tester/ultraflex/generator/test_instances.rb +174 -0
- data/lib/origen/tester/ultraflex/generator.rb +200 -0
- data/lib/origen/tester/ultraflex/parser/ac_spec.rb +11 -0
- data/lib/origen/tester/ultraflex/parser/ac_specs.rb +0 -0
- data/lib/origen/tester/ultraflex/parser/dc_spec.rb +36 -0
- data/lib/origen/tester/ultraflex/parser/dc_specs.rb +50 -0
- data/lib/origen/tester/ultraflex/parser/descriptions.rb +342 -0
- data/lib/origen/tester/ultraflex/parser/flow.rb +111 -0
- data/lib/origen/tester/ultraflex/parser/flow_line.rb +207 -0
- data/lib/origen/tester/ultraflex/parser/flows.rb +23 -0
- data/lib/origen/tester/ultraflex/parser/pattern_set.rb +94 -0
- data/lib/origen/tester/ultraflex/parser/pattern_sets.rb +33 -0
- data/lib/origen/tester/ultraflex/parser/test_instance.rb +262 -0
- data/lib/origen/tester/ultraflex/parser/test_instances.rb +26 -0
- data/lib/origen/tester/ultraflex/parser/timeset.rb +15 -0
- data/lib/origen/tester/ultraflex/parser/timesets.rb +0 -0
- data/lib/origen/tester/ultraflex/parser.rb +104 -0
- data/lib/origen/tester/ultraflex/ultraflex.rb +759 -0
- data/lib/origen/tester/v93k/generator/flow.rb +63 -0
- data/lib/origen/tester/v93k/generator/flow_node/print.rb +10 -0
- data/lib/origen/tester/v93k/generator/flow_node.rb +17 -0
- data/lib/origen/tester/v93k/generator/pattern.rb +16 -0
- data/lib/origen/tester/v93k/generator/pattern_master.rb +54 -0
- data/lib/origen/tester/v93k/generator/templates/_test_method.txt.erb +6 -0
- data/lib/origen/tester/v93k/generator/templates/_test_suite.txt.erb +11 -0
- data/lib/origen/tester/v93k/generator/templates/template.flow.erb +121 -0
- data/lib/origen/tester/v93k/generator/templates/template.pmfl.erb +9 -0
- data/lib/origen/tester/v93k/generator/test_function.rb +103 -0
- data/lib/origen/tester/v93k/generator/test_functions.rb +79 -0
- data/lib/origen/tester/v93k/generator/test_method.rb +46 -0
- data/lib/origen/tester/v93k/generator/test_methods.rb +75 -0
- data/lib/origen/tester/v93k/generator/test_suite.rb +54 -0
- data/lib/origen/tester/v93k/generator/test_suites.rb +65 -0
- data/lib/origen/tester/v93k/generator.rb +80 -0
- data/lib/origen/tester/v93k/v93k.rb +420 -0
- data/lib/origen/tester/vector.rb +86 -0
- data/lib/origen/tester/vector_generator.rb +633 -0
- data/lib/origen/tester/vector_pipeline.rb +150 -0
- data/lib/origen/tester.rb +56 -0
- data/lib/origen/top_level.rb +134 -0
- data/lib/origen/users/ldap.rb +65 -0
- data/lib/origen/users/user.rb +149 -0
- data/lib/origen/users.rb +30 -0
- data/lib/origen/utility/block_args.rb +93 -0
- data/lib/origen/utility/csv_data.rb +110 -0
- data/lib/origen/utility/design_sync.rb +494 -0
- data/lib/origen/utility/diff.rb +158 -0
- data/lib/origen/utility/input_capture.rb +121 -0
- data/lib/origen/utility/mailer.rb +143 -0
- data/lib/origen/utility/s_record.rb +205 -0
- data/lib/origen/utility/time_and_date.rb +30 -0
- data/lib/origen/utility.rb +12 -0
- data/lib/origen/version_checker.rb +117 -0
- data/lib/origen/version_string.rb +356 -0
- data/lib/origen.rb +648 -0
- data/lib/tasks/gem.rake +27 -22
- data/origen_site_config.yml +36 -0
- data/source_setup +17 -0
- data/spec/format/rgen_formatter.rb +14 -0
- data/templates/api_doc/README.txt.erb +24 -0
- data/templates/code_generators/gemfile_app.rb +4 -0
- data/templates/code_generators/gemfile_plugin.rb +6 -0
- data/templates/code_generators/gemspec.rb +33 -0
- data/templates/code_generators/rakefile.rb +10 -0
- data/templates/code_generators/spec_helper.rb +49 -0
- data/templates/code_generators/version.rb +8 -0
- data/templates/code_generators/version_time.rb +3 -0
- data/templates/git/gitignore.erb +33 -0
- data/templates/j750/_vt_flow.txt.erb +8 -0
- data/templates/j750/_vt_instances.txt.erb +4 -0
- data/templates/j750/program_sheet.txt.erb +9 -0
- data/templates/nanoc/Rules +74 -0
- data/templates/nanoc/config.yaml +77 -0
- data/templates/nanoc/content/favicon.ico +0 -0
- data/templates/nanoc/layouts/bootstrap.html.erb +63 -0
- data/templates/nanoc/layouts/bootstrap3.html.erb +71 -0
- data/templates/nanoc/layouts/freescale.html.erb +79 -0
- data/templates/nanoc/lib/bootstrap_filter.rb +49 -0
- data/templates/nanoc/lib/codeblocks_filter.rb +41 -0
- data/templates/nanoc/lib/default.rb +2 -0
- data/templates/nanoc/lib/gzip_filter.rb +16 -0
- data/templates/nanoc/lib/haml_code_filter.rb +41 -0
- data/templates/nanoc/lib/helpers.rb +1 -0
- data/templates/nanoc/lib/search_filter.rb +62 -0
- data/templates/nanoc_dynamic/content/search.js.erb +92 -0
- data/templates/shared/web/_logo.html +10 -0
- data/templates/test/_inline_sub.txt.erb +2 -0
- data/templates/test/environment.txt.erb +1 -0
- data/templates/test/inline.txt.erb +11 -0
- data/templates/test/inspections.txt.erb +19 -0
- data/templates/test/set1/_sub1.txt.erb +12 -0
- data/templates/test/set1/_sub4.txt.erb +1 -0
- data/templates/test/set1/_sub5.txt.erb +1 -0
- data/templates/test/set1/main.txt.erb +53 -0
- data/templates/test/set1/sub_dir/_sub2.txt.erb +20 -0
- data/templates/test/set1/sub_dir/_sub3.txt.erb +12 -0
- data/templates/test/set1/sub_dir/main2.txt.erb +4 -0
- data/templates/test/set2/template_with_no_erb_1.txt +9 -0
- data/templates/test/set2/template_with_no_erb_2.txt +9 -0
- data/templates/test/set3/_layout.html.erb +4 -0
- data/templates/test/set3/content.html.erb +6 -0
- data/templates/time/filter.rb.erb +15 -0
- data/templates/time/rules.rb.erb +45 -0
- metadata +639 -5
@@ -0,0 +1,258 @@
|
|
1
|
+
require 'open-uri'
|
2
|
+
require 'rbconfig'
|
3
|
+
|
4
|
+
module Origen
|
5
|
+
module CodeGenerators
|
6
|
+
module Actions
|
7
|
+
def initialize(*args) # :nodoc:
|
8
|
+
if args.last.is_a?(Hash)
|
9
|
+
@config = args.last.delete(:config) || {}
|
10
|
+
end
|
11
|
+
super
|
12
|
+
@in_group = nil
|
13
|
+
end
|
14
|
+
|
15
|
+
def config
|
16
|
+
@config
|
17
|
+
end
|
18
|
+
|
19
|
+
# Removes (comments out) the specified configuration setting from +config/application.rb+
|
20
|
+
#
|
21
|
+
# comment_config :semantically_version
|
22
|
+
def comment_config(*args)
|
23
|
+
options = args.extract_options!
|
24
|
+
name = args.first.to_s
|
25
|
+
|
26
|
+
# Set the message to be shown in logs
|
27
|
+
log :comment, name
|
28
|
+
|
29
|
+
file = File.join(Origen.root, 'config', 'application.rb')
|
30
|
+
comment_lines(file, /^\s*config.#{name}\s*=.*\n/)
|
31
|
+
end
|
32
|
+
|
33
|
+
# Adds an entry into +config/application.rb+
|
34
|
+
def add_config(*args)
|
35
|
+
options = args.extract_options!
|
36
|
+
name, value = args
|
37
|
+
|
38
|
+
# Set the message to be shown in logs
|
39
|
+
message = name.to_s
|
40
|
+
if value ||= options.delete(:value)
|
41
|
+
message << " (#{value})"
|
42
|
+
end
|
43
|
+
log :insert, message
|
44
|
+
|
45
|
+
file = File.join(Origen.root, 'config', 'application.rb')
|
46
|
+
value = quote(value) if value.is_a?(String)
|
47
|
+
value = ":#{value}" if value.is_a?(Symbol)
|
48
|
+
insert_into_file file, " config.#{name} = #{value}\n\n", after: /^\s*class.*\n/
|
49
|
+
end
|
50
|
+
|
51
|
+
# Adds an entry into +Gemfile+ for the supplied gem.
|
52
|
+
#
|
53
|
+
# gem "rspec", group: :test
|
54
|
+
# gem "technoweenie-restful-authentication", lib: "restful-authentication", source: "http://gems.github.com/"
|
55
|
+
# gem "rails", "3.0", git: "git://github.com/rails/rails"
|
56
|
+
def gem(*args)
|
57
|
+
options = args.extract_options!
|
58
|
+
name, version = args
|
59
|
+
|
60
|
+
# Set the message to be shown in logs. Uses the git repo if one is given,
|
61
|
+
# otherwise use name (version).
|
62
|
+
parts, message = [quote(name)], name
|
63
|
+
if version ||= options.delete(:version)
|
64
|
+
parts << quote(version)
|
65
|
+
message << " (#{version})"
|
66
|
+
end
|
67
|
+
message = options[:git] if options[:git]
|
68
|
+
|
69
|
+
log :gemfile, message
|
70
|
+
|
71
|
+
options.each do |option, value|
|
72
|
+
parts << "#{option}: #{quote(value)}"
|
73
|
+
end
|
74
|
+
|
75
|
+
in_root do
|
76
|
+
str = "gem #{parts.join(', ')}"
|
77
|
+
str = ' ' + str if @in_group
|
78
|
+
str = "\n" + str
|
79
|
+
append_file 'Gemfile', str, verbose: false
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
# Wraps gem entries inside a group.
|
84
|
+
#
|
85
|
+
# gem_group :development, :test do
|
86
|
+
# gem "rspec-rails"
|
87
|
+
# end
|
88
|
+
def gem_group(*names, &block)
|
89
|
+
name = names.map(&:inspect).join(', ')
|
90
|
+
log :gemfile, "group #{name}"
|
91
|
+
|
92
|
+
in_root do
|
93
|
+
append_file 'Gemfile', "\ngroup #{name} do", force: true
|
94
|
+
|
95
|
+
@in_group = true
|
96
|
+
instance_eval(&block)
|
97
|
+
@in_group = false
|
98
|
+
|
99
|
+
append_file 'Gemfile', "\nend\n", force: true
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
# Add the given source to +Gemfile+
|
104
|
+
#
|
105
|
+
# add_source "http://gems.github.com/"
|
106
|
+
def add_source(source, _options = {})
|
107
|
+
log :source, source
|
108
|
+
|
109
|
+
in_root do
|
110
|
+
prepend_file 'Gemfile', "source #{quote(source)}\n", verbose: false
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
# Adds a line inside the Application class for <tt>config/application.rb</tt>.
|
115
|
+
#
|
116
|
+
# If options <tt>:env</tt> is specified, the line is appended to the corresponding
|
117
|
+
# file in <tt>config/environments</tt>.
|
118
|
+
#
|
119
|
+
# environment do
|
120
|
+
# "config.autoload_paths += %W(#{config.root}/extras)"
|
121
|
+
# end
|
122
|
+
#
|
123
|
+
# environment(nil, env: "development") do
|
124
|
+
# "config.autoload_paths += %W(#{config.root}/extras)"
|
125
|
+
# end
|
126
|
+
def environment(data = nil, options = {})
|
127
|
+
sentinel = /class [a-z_:]+ < Rails::Application/i
|
128
|
+
env_file_sentinel = /Rails\.application\.configure do/
|
129
|
+
data = yield if !data && block_given?
|
130
|
+
|
131
|
+
in_root do
|
132
|
+
if options[:env].nil?
|
133
|
+
inject_into_file 'config/application.rb', "\n #{data}", after: sentinel, verbose: false
|
134
|
+
else
|
135
|
+
Array(options[:env]).each do |env|
|
136
|
+
inject_into_file "config/environments/#{env}.rb", "\n #{data}", after: env_file_sentinel, verbose: false
|
137
|
+
end
|
138
|
+
end
|
139
|
+
end
|
140
|
+
end
|
141
|
+
alias_method :application, :environment
|
142
|
+
|
143
|
+
# Run a command in git.
|
144
|
+
#
|
145
|
+
# git :init
|
146
|
+
# git add: "this.file that.rb"
|
147
|
+
# git add: "onefile.rb", rm: "badfile.cxx"
|
148
|
+
def git(commands = {})
|
149
|
+
if commands.is_a?(Symbol)
|
150
|
+
run "git #{commands}"
|
151
|
+
else
|
152
|
+
commands.each do |cmd, options|
|
153
|
+
run "git #{cmd} #{options}"
|
154
|
+
end
|
155
|
+
end
|
156
|
+
end
|
157
|
+
|
158
|
+
# Create a new file in the lib/ directory. Code can be specified
|
159
|
+
# in a block or a data string can be given.
|
160
|
+
#
|
161
|
+
# lib("crypto.rb") do
|
162
|
+
# "crypted_special_value = '#{rand}--#{Time.now}--#{rand(1337)}--'"
|
163
|
+
# end
|
164
|
+
#
|
165
|
+
# lib("foreign.rb", "# Foreign code is fun")
|
166
|
+
def lib(filename, data = nil, &block)
|
167
|
+
log :lib, filename
|
168
|
+
create_file("lib/#{filename}", data, verbose: false, &block)
|
169
|
+
end
|
170
|
+
|
171
|
+
# Create a new +Rakefile+ with the provided code (either in a block or a string).
|
172
|
+
#
|
173
|
+
# rakefile("bootstrap.rake") do
|
174
|
+
# project = ask("What is the UNIX name of your project?")
|
175
|
+
#
|
176
|
+
# <<-TASK
|
177
|
+
# namespace :#{project} do
|
178
|
+
# task :bootstrap do
|
179
|
+
# puts "I like boots!"
|
180
|
+
# end
|
181
|
+
# end
|
182
|
+
# TASK
|
183
|
+
# end
|
184
|
+
#
|
185
|
+
# rakefile('seed.rake', 'puts "Planting seeds"')
|
186
|
+
def rakefile(filename, data = nil, &block)
|
187
|
+
log :rakefile, filename
|
188
|
+
create_file("lib/tasks/#{filename}", data, verbose: false, &block)
|
189
|
+
end
|
190
|
+
|
191
|
+
# Generate something using a generator from Rails or a plugin.
|
192
|
+
# The second parameter is the argument string that is passed to
|
193
|
+
# the generator or an Array that is joined.
|
194
|
+
#
|
195
|
+
# generate(:authenticated, "user session")
|
196
|
+
def generate(what, *args)
|
197
|
+
log :generate, what
|
198
|
+
argument = args.flat_map(&:to_s).join(' ')
|
199
|
+
|
200
|
+
in_root { run_ruby_script("bin/rails generate #{what} #{argument}", verbose: false) }
|
201
|
+
end
|
202
|
+
|
203
|
+
# Runs the supplied rake task
|
204
|
+
#
|
205
|
+
# rake("db:migrate")
|
206
|
+
# rake("db:migrate", env: "production")
|
207
|
+
# rake("gems:install", sudo: true)
|
208
|
+
def rake(command, options = {})
|
209
|
+
log :rake, command
|
210
|
+
env = options[:env] || ENV['RAILS_ENV'] || 'development'
|
211
|
+
sudo = options[:sudo] && RbConfig::CONFIG['host_os'] !~ /mswin|mingw/ ? 'sudo ' : ''
|
212
|
+
in_root { run("#{sudo}#{extify(:rake)} #{command} RAILS_ENV=#{env}", verbose: false) }
|
213
|
+
end
|
214
|
+
|
215
|
+
# Reads the given file at the source root and prints it in the console.
|
216
|
+
#
|
217
|
+
# readme "README"
|
218
|
+
def readme(path)
|
219
|
+
log File.read(find_in_source_paths(path))
|
220
|
+
end
|
221
|
+
|
222
|
+
protected
|
223
|
+
|
224
|
+
# Define log for backwards compatibility. If just one argument is sent,
|
225
|
+
# invoke say, otherwise invoke say_status. Differently from say and
|
226
|
+
# similarly to say_status, this method respects the quiet? option given.
|
227
|
+
def log(*args)
|
228
|
+
if args.size == 1
|
229
|
+
say args.first.to_s unless options.quiet?
|
230
|
+
else
|
231
|
+
args << (behavior == :invoke ? :green : :red)
|
232
|
+
say_status(*args)
|
233
|
+
end
|
234
|
+
end
|
235
|
+
|
236
|
+
# Add an extension to the given name based on the platform.
|
237
|
+
def extify(name)
|
238
|
+
if RbConfig::CONFIG['host_os'] =~ /mswin|mingw/
|
239
|
+
"#{name}.bat"
|
240
|
+
else
|
241
|
+
name
|
242
|
+
end
|
243
|
+
end
|
244
|
+
|
245
|
+
# Surround string with single quotes if there is no quotes.
|
246
|
+
# Otherwise fall back to double quotes
|
247
|
+
def quote(value)
|
248
|
+
return value.inspect unless value.is_a? String
|
249
|
+
|
250
|
+
if value.include?("'")
|
251
|
+
value.inspect
|
252
|
+
else
|
253
|
+
"'#{value}'"
|
254
|
+
end
|
255
|
+
end
|
256
|
+
end
|
257
|
+
end
|
258
|
+
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
require 'thor/group'
|
2
|
+
module Origen
|
3
|
+
module CodeGenerators
|
4
|
+
class Error < Thor::Error # :nodoc:
|
5
|
+
end
|
6
|
+
|
7
|
+
class Base < Thor::Group
|
8
|
+
include Thor::Actions
|
9
|
+
include Origen::CodeGenerators::Actions
|
10
|
+
|
11
|
+
add_runtime_options!
|
12
|
+
strict_args_position!
|
13
|
+
|
14
|
+
# Convenience method to get the top-level namespace from the class name.
|
15
|
+
# It is returned as a lower cased and underscored string.
|
16
|
+
def self.namespace(name = nil)
|
17
|
+
@namespace ||= begin
|
18
|
+
names = super.split(':')
|
19
|
+
if names.size == 1
|
20
|
+
nil
|
21
|
+
else
|
22
|
+
names.first.sub(/^r_gen/, 'origen')
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
# Sets the base_name taking into account the current class namespace.
|
28
|
+
def self.name
|
29
|
+
@name ||= begin
|
30
|
+
to_s.split('::').last.sub(/(CodeGenerator|Generator)$/, '').underscore
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
# Cache source root and add lib/generators/base/generator/templates to
|
35
|
+
# source paths.
|
36
|
+
def self.inherited(base) #:nodoc:
|
37
|
+
super
|
38
|
+
if base.name && base.name !~ /Base$/
|
39
|
+
if base.namespace == 'origen'
|
40
|
+
Origen::CodeGenerators.origen_generators[base.name] = base
|
41
|
+
else
|
42
|
+
Origen::CodeGenerators.plugin_generators[base.namespace] ||= {}
|
43
|
+
Origen::CodeGenerators.plugin_generators[base.namespace][base.name] = base
|
44
|
+
end
|
45
|
+
end
|
46
|
+
# Give all generators access to Origen core files in their source path,
|
47
|
+
# with their own app as highest priority
|
48
|
+
base.source_paths << Origen.root if Origen.app_loaded?
|
49
|
+
base.source_paths << Origen.top
|
50
|
+
end
|
51
|
+
|
52
|
+
def self.banner
|
53
|
+
"origen add #{namespace == 'origen' ? '' : namespace + ':'}#{name} [options]"
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Origen
|
2
|
+
module CodeGenerators
|
3
|
+
class Bundler < Origen::CodeGenerators::Base
|
4
|
+
desc <<-END
|
5
|
+
This generator will add the necessary files to convert the app to use bundler for gem
|
6
|
+
mangement (including Origen plugins).
|
7
|
+
END
|
8
|
+
def create_gemspec_file
|
9
|
+
if config[:type] == :application
|
10
|
+
template 'templates/code_generators/gemfile_app.rb', File.join(Origen.root, 'Gemfile')
|
11
|
+
else
|
12
|
+
template 'templates/code_generators/gemfile_plugin.rb', File.join(Origen.root, 'Gemfile')
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
module Origen
|
2
|
+
module CodeGenerators
|
3
|
+
class GemSetup < Origen::CodeGenerators::Base
|
4
|
+
desc <<-END
|
5
|
+
This generator creates a gemspec file in the top-level directory to allow it
|
6
|
+
to be packed up and distributed as a gem.
|
7
|
+
END
|
8
|
+
def create_gemspec_file
|
9
|
+
@summary = ask 'Describe your plugin in a few words:'
|
10
|
+
template 'templates/code_generators/gemspec.rb', File.join(Origen.root, "#{Origen.app.name}.gemspec")
|
11
|
+
end
|
12
|
+
|
13
|
+
def create_master_require_file
|
14
|
+
file = "#{Origen.root}/lib/#{Origen.app.name}.rb"
|
15
|
+
if File.exist?(file)
|
16
|
+
prepend_to_file file, <<-END
|
17
|
+
require "origen"
|
18
|
+
require_relative "../config/application.rb"
|
19
|
+
require_relative "../config/environment.rb"
|
20
|
+
|
21
|
+
END
|
22
|
+
else
|
23
|
+
create_file file do
|
24
|
+
<<-END
|
25
|
+
require "origen"
|
26
|
+
require_relative "../config/application.rb"
|
27
|
+
require_relative "../config/environment.rb"
|
28
|
+
END
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def verify_semver
|
34
|
+
unless Origen.app.version.semantic?
|
35
|
+
puts <<-END
|
36
|
+
|
37
|
+
Warning, you application is not currently using semantic (1.2.3) versioning, this must be used if
|
38
|
+
you want to publish your plugin as a gem.
|
39
|
+
|
40
|
+
To upgrade your application to semantic versioning run the following command:
|
41
|
+
|
42
|
+
origen add semver
|
43
|
+
|
44
|
+
END
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module Origen
|
2
|
+
module CodeGenerators
|
3
|
+
class Rake < Origen::CodeGenerators::Base
|
4
|
+
desc <<-END
|
5
|
+
This generator will add the necessary files to convert the app to use rake for general
|
6
|
+
build commands.
|
7
|
+
END
|
8
|
+
def create_rake_file
|
9
|
+
template 'templates/code_generators/rakefile.rb', File.join(Origen.root, 'Rakefile')
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
module Origen
|
2
|
+
module CodeGenerators
|
3
|
+
class RSpec < Origen::CodeGenerators::Base
|
4
|
+
desc <<-END
|
5
|
+
This generator will add the necessary files to use rspec for unit tests.
|
6
|
+
END
|
7
|
+
def create_spec_helper_file
|
8
|
+
template 'templates/code_generators/spec_helper.rb', File.join(Origen.root, 'spec', 'spec_helper.rb')
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
module Origen
|
2
|
+
module CodeGenerators
|
3
|
+
class Semver < Origen::CodeGenerators::Base
|
4
|
+
desc <<-END
|
5
|
+
This generator will convert an application to use semantic (1.2.3) style versioning.
|
6
|
+
It can also be used to bring a legacy version file up to date with the latest structure.
|
7
|
+
END
|
8
|
+
def create_version_file
|
9
|
+
if config[:change]
|
10
|
+
@version = config[:change]
|
11
|
+
else
|
12
|
+
@version = Origen.app.version
|
13
|
+
# Ensure > 0.0.0 due to Bundler issues resolving 0.0.0.preX versions
|
14
|
+
until @version.semantic? && @version.greater_than_or_equal_to?(VersionString.new('0.0.1'))
|
15
|
+
ver = ask 'What version do you want to start from (this must be > 0.0.0) ? [0.1.0]'
|
16
|
+
if !ver || ver.empty?
|
17
|
+
@version = VersionString.new('0.1.0')
|
18
|
+
else
|
19
|
+
@version = VersionString.new(ver)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
template 'templates/code_generators/version.rb', File.join(Origen.root, 'config', 'version.rb'), force: true
|
24
|
+
end
|
25
|
+
|
26
|
+
def set_configuration
|
27
|
+
unless Origen.app.config.semantically_version
|
28
|
+
comment_config :semantically_version
|
29
|
+
add_config :semantically_version, true
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def print_version
|
34
|
+
puts
|
35
|
+
puts "You're new app version is: #{Origen.app.version(refresh: true)}"
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module Origen
|
2
|
+
module CodeGenerators
|
3
|
+
class Timever < Origen::CodeGenerators::Base
|
4
|
+
desc <<-END
|
5
|
+
This generator will convert an application to use timestamp (sm_2014_12_04_11_11) versioning.
|
6
|
+
It can also be used to bring a legacy version file up to date with the latest structure.
|
7
|
+
END
|
8
|
+
def create_version_file
|
9
|
+
if config[:change]
|
10
|
+
@version = config[:change]
|
11
|
+
else
|
12
|
+
@version = Origen.app.version
|
13
|
+
unless @version.timestamp?
|
14
|
+
if @version.production?
|
15
|
+
@version = VersionString.production_timestamp
|
16
|
+
else
|
17
|
+
@version = VersionString.development_timestamp
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
template 'templates/code_generators/version_time.rb', File.join(Origen.root, 'config', 'version.rb'), force: true
|
22
|
+
end
|
23
|
+
|
24
|
+
def set_configuration
|
25
|
+
if Origen.app.config.semantically_version
|
26
|
+
comment_config :semantically_version
|
27
|
+
add_config :semantically_version, false
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def print_version
|
32
|
+
puts
|
33
|
+
puts "You're new app version is: #{Origen.app.version(refresh: true)}"
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,111 @@
|
|
1
|
+
require 'thor/group'
|
2
|
+
|
3
|
+
require 'active_support'
|
4
|
+
require 'active_support/core_ext/object/blank'
|
5
|
+
require 'active_support/core_ext/kernel/singleton_class'
|
6
|
+
require 'active_support/core_ext/array/extract_options'
|
7
|
+
require 'active_support/core_ext/hash/deep_merge'
|
8
|
+
require 'active_support/core_ext/module/attribute_accessors'
|
9
|
+
require 'active_support/core_ext/string/inflections'
|
10
|
+
|
11
|
+
module Origen
|
12
|
+
module CodeGenerators
|
13
|
+
autoload :Base, 'origen/code_generators/base'
|
14
|
+
autoload :Actions, 'origen/code_generators/actions'
|
15
|
+
|
16
|
+
# Remove the color from output.
|
17
|
+
def self.no_color!
|
18
|
+
Thor::Base.shell = Thor::Shell::Basic
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.origen_generators
|
22
|
+
@origen_generators ||= {}
|
23
|
+
end
|
24
|
+
|
25
|
+
def self.plugin_generators
|
26
|
+
@plugin_generators ||= {}
|
27
|
+
end
|
28
|
+
|
29
|
+
def self.load_generators
|
30
|
+
return if @generators_loaded
|
31
|
+
# Load Origen's generators
|
32
|
+
Dir.glob("#{Origen.top}/lib/origen/code_generators/**/*.rb").sort.each do |file|
|
33
|
+
require file
|
34
|
+
end
|
35
|
+
# Load generators from plugins, TBD what the rules will be here
|
36
|
+
@generators_loaded = true
|
37
|
+
end
|
38
|
+
|
39
|
+
# Receives a namespace, arguments and the behavior to invoke the generator.
|
40
|
+
# It's used as the default entry point for generate, destroy and update
|
41
|
+
# commands.
|
42
|
+
def self.invoke(name, args = ARGV, config = {})
|
43
|
+
load_generators
|
44
|
+
if klass = find_by_name(name)
|
45
|
+
args << '--help' if args.empty? && klass.arguments.any?(&:required?)
|
46
|
+
klass.start(args, config)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
def self.find_by_name(name)
|
51
|
+
names = name.split(':')
|
52
|
+
case names.size
|
53
|
+
when 1
|
54
|
+
gen = origen_generators[names.first]
|
55
|
+
return gen if gen
|
56
|
+
when 2
|
57
|
+
if names.first == 'origen'
|
58
|
+
gen = origen_generators[names.first]
|
59
|
+
else
|
60
|
+
gen = plugin_generators[names.first][names.last]
|
61
|
+
end
|
62
|
+
return gen if gen
|
63
|
+
end
|
64
|
+
puts "Couldn't find a feature generator named: #{name}"
|
65
|
+
puts
|
66
|
+
puts 'This is the list of available features:'
|
67
|
+
puts
|
68
|
+
print_generators
|
69
|
+
puts
|
70
|
+
end
|
71
|
+
|
72
|
+
# Show help message with available generators.
|
73
|
+
def self.help(command = 'add')
|
74
|
+
puts <<-END
|
75
|
+
Add pre-built features and code snippets.
|
76
|
+
|
77
|
+
This command will add pre-built code to your application to implement a given feature. In some
|
78
|
+
cases this will be a complete feature and in others it will provide a starting point for you
|
79
|
+
to further customize.
|
80
|
+
|
81
|
+
END
|
82
|
+
puts "Usage: origen #{command} FEATURE [args] [options]"
|
83
|
+
puts
|
84
|
+
puts 'General options:'
|
85
|
+
puts " -h, [--help] # Print feature's options and usage"
|
86
|
+
puts ' -p, [--pretend] # Run but do not make any changes'
|
87
|
+
puts ' -f, [--force] # Overwrite files that already exist'
|
88
|
+
puts ' -s, [--skip] # Skip files that already exist'
|
89
|
+
puts ' -q, [--quiet] # Suppress status output'
|
90
|
+
puts
|
91
|
+
puts "The available features are listed below, run 'origen add <feature> -h' for more info."
|
92
|
+
puts
|
93
|
+
|
94
|
+
print_generators
|
95
|
+
puts
|
96
|
+
end
|
97
|
+
|
98
|
+
def self.print_generators
|
99
|
+
load_generators
|
100
|
+
origen_generators.each do |name, _gen|
|
101
|
+
puts name
|
102
|
+
end
|
103
|
+
plugin_generators.each do |namespace, generators|
|
104
|
+
puts
|
105
|
+
generators.each do |_name, gen|
|
106
|
+
puts "#{namespace}:#{gen}"
|
107
|
+
end
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
require 'origen/code_generators'
|
2
|
+
|
3
|
+
# if no argument/-h/--help is passed to origen add command, then
|
4
|
+
# it generates the help associated.
|
5
|
+
if [nil, '-h', '--help'].include?(ARGV.first)
|
6
|
+
Origen::CodeGenerators.help 'add'
|
7
|
+
exit
|
8
|
+
end
|
9
|
+
|
10
|
+
name = ARGV.shift
|
11
|
+
|
12
|
+
Origen::CodeGenerators.invoke name, ARGV # , behavior: :invoke, destination_root: Origen.root
|
@@ -0,0 +1,62 @@
|
|
1
|
+
require 'optparse'
|
2
|
+
|
3
|
+
options = {}
|
4
|
+
|
5
|
+
# App options are options that the application can supply to extend this command
|
6
|
+
app_options = @application_options || []
|
7
|
+
opt_parser = OptionParser.new do |opts|
|
8
|
+
opts.banner = <<-EOT
|
9
|
+
Compile an ERB template file, list of files or a directory.
|
10
|
+
If a directory is referenced the entire sub-directory structure will be copied to the output directory, compiling any ERB
|
11
|
+
templates it finds in the process and copying any standard files accross without modification.
|
12
|
+
|
13
|
+
ERB is a templating system from Ruby that allows you to embed snippets of Ruby code in any ASCII file to create dynamic
|
14
|
+
content. Within the context of the origen generator this means that you can include Ruby snippets that reference the target
|
15
|
+
objects to create dynamic test program sheets, C files, VB files, documentation, etc.
|
16
|
+
|
17
|
+
To create an ERB template start with a base ASCII file and append .erb to the end of the file name, upon compilation the
|
18
|
+
.erb extension will be removed.
|
19
|
+
|
20
|
+
There is not much to the syntax, this snippet covers just about everything you need to know:
|
21
|
+
% - A full line of Ruby is prefixed with %, this is removed by compilation
|
22
|
+
%# - A full line Ruby comment, this is removed by compilation
|
23
|
+
<%# %> - An embedded Ruby comment, this is removed by compilation
|
24
|
+
<% %> - An embedded Ruby snippet, this is removed by compilation
|
25
|
+
<%= %> - An embedded Ruby snippet that generates content, the result is output to the compiled file
|
26
|
+
|
27
|
+
Full details of ERB syntax can be found here:
|
28
|
+
http://www.ruby-doc.org/stdlib/libdoc/erb/rdoc/classes/ERB.html
|
29
|
+
|
30
|
+
Usage: origen compile [space separated files, lists or directories] [options]
|
31
|
+
EOT
|
32
|
+
opts.on('-e', '--environment NAME', String, 'Override the default environment, NAME can be a full path or a fragment of an environment file name') { |e| options[:environment] = e }
|
33
|
+
opts.on('-t', '--target NAME', String, 'Override the default target, NAME can be a full path or a fragment of a target file name') { |t| options[:target] = t }
|
34
|
+
opts.on('-pl', '--plugin PLUGIN_NAME', String, 'Set current plugin') { |pl_n| options[:current_plugin] = pl_n }
|
35
|
+
opts.on('-l', '--lsf [ACTION]', [:clear, :add], "Submit jobs to the LSF, optionally specify whether to 'clear' or 'add' to existing jobs") { |a| options[:lsf] = true; options[:lsf_action] = a }
|
36
|
+
opts.on('-w', '--wait', 'Wait for LSF processing to complete') { options[:wait_for_lsf_completion] = true }
|
37
|
+
opts.on('-c', '--continue', 'Continue on error (to the next file)') { options[:continue] = true }
|
38
|
+
opts.on('-d', '--debugger', 'Enable the debugger') { options[:debugger] = true }
|
39
|
+
opts.on('-m', '--mode MODE', Origen::Mode::MODES, 'Force the Origen operating mode:', ' ' + Origen::Mode::MODES.join(', ')) { |_m| }
|
40
|
+
opts.on('-f', '--file FILE', String, 'Override the default log file') { |o| options[:log_file] = o }
|
41
|
+
opts.on('-o', '--output DIR', String, 'Override the default output directory') { |o| options[:output] = o }
|
42
|
+
opts.on('-n', '--name NAME', String, 'Override the default output file name') { |o| options[:output_file_name] = o }
|
43
|
+
opts.on('-r', '--reference DIR', String, 'Override the default reference directory') { |o| options[:reference] = o }
|
44
|
+
opts.on('-z', '--zip', 'Gzip all output files (diff checking will be skipped)') { |o| options[:zip] = o }
|
45
|
+
app_options.each do |app_option|
|
46
|
+
opts.on(*app_option) {}
|
47
|
+
end
|
48
|
+
opts.separator ''
|
49
|
+
opts.on('-h', '--help', 'Show this message') { puts opts; exit 0 }
|
50
|
+
end
|
51
|
+
|
52
|
+
opt_parser.parse! ARGV
|
53
|
+
options[:patterns] = ARGV
|
54
|
+
options[:compile] = true # To let the generator know a compile job has been requested
|
55
|
+
|
56
|
+
Origen.load_application
|
57
|
+
Origen.current_plugin.temporary = options[:current_plugin] if options[:current_plugin]
|
58
|
+
Origen.environment.temporary = options[:environment] if options[:environment]
|
59
|
+
Origen.target.temporary = options[:target] if options[:target]
|
60
|
+
Origen.app.load_target!
|
61
|
+
Origen.app.runner.generate(options)
|
62
|
+
Origen.lsf.wait_for_completion if options[:wait_for_lsf_completion]
|
@@ -0,0 +1,9 @@
|
|
1
|
+
puts 'Generating ctags file...'
|
2
|
+
# system("ctags -R --exclude='.ref/**,output/**' #{ORIGEN_WORK} #{ORIGEN_TOP}/lib")
|
3
|
+
Origen.load_application
|
4
|
+
if Origen.top == Origen.root
|
5
|
+
system("ctags -R #{Origen.top}/lib -f #{Origen.root}/tags")
|
6
|
+
else
|
7
|
+
system("ctags -R #{Origen.top}/lib #{Origen.root}/lib -f #{Origen.root}/tags")
|
8
|
+
end
|
9
|
+
puts 'Completed successfully'
|