origen 0.0.1 → 0.0.2
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/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'
|