origen 0.38.0 → 0.40.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (111) hide show
  1. checksums.yaml +4 -4
  2. data/bin/origen +1 -236
  3. data/config/application.rb +10 -1
  4. data/config/version.rb +1 -1
  5. data/lib/origen/{boot_api.rb → boot/api.rb} +2 -2
  6. data/lib/origen/boot/app.rb +324 -0
  7. data/lib/origen/boot.rb +287 -0
  8. data/lib/origen/commands/archive.rb +175 -0
  9. data/lib/origen/commands/extract.rb +43 -0
  10. data/lib/origen/commands/new.rb +33 -23
  11. data/lib/origen/commands.rb +4 -1
  12. data/lib/origen/commands_global.rb +3 -2
  13. data/lib/origen/operating_systems.rb +4 -0
  14. data/lib/origen/revision_control.rb +1 -1
  15. data/lib/origen/site_config.rb +4 -1
  16. data/lib/origen.rb +3 -2
  17. data/origen_app_generators/Gemfile +16 -0
  18. data/origen_app_generators/Gemfile.lock +147 -0
  19. data/origen_app_generators/LICENSE +21 -0
  20. data/origen_app_generators/README.md +368 -0
  21. data/origen_app_generators/Rakefile +10 -0
  22. data/origen_app_generators/bin/boot.rb +37 -0
  23. data/{bin → origen_app_generators/bin}/fix_my_workspace +0 -0
  24. data/origen_app_generators/config/application.rb +153 -0
  25. data/origen_app_generators/config/boot.rb +1 -0
  26. data/origen_app_generators/config/commands.rb +63 -0
  27. data/origen_app_generators/config/shared_commands.rb +172 -0
  28. data/origen_app_generators/config/version.rb +8 -0
  29. data/origen_app_generators/doc/history +213 -0
  30. data/origen_app_generators/lib/origen_app_generators/application.rb +62 -0
  31. data/origen_app_generators/lib/origen_app_generators/base.rb +231 -0
  32. data/origen_app_generators/lib/origen_app_generators/empty_application.rb +15 -0
  33. data/origen_app_generators/lib/origen_app_generators/empty_plugin.rb +15 -0
  34. data/origen_app_generators/lib/origen_app_generators/new.rb +162 -0
  35. data/origen_app_generators/lib/origen_app_generators/origen_infrastructure/app_generator_plugin.rb +109 -0
  36. data/origen_app_generators/lib/origen_app_generators/plugin.rb +58 -0
  37. data/origen_app_generators/lib/origen_app_generators/sub_block_parser.rb +81 -0
  38. data/origen_app_generators/lib/origen_app_generators/test_engineering/stand_alone_application.rb +236 -0
  39. data/origen_app_generators/lib/origen_app_generators/test_engineering/test_block.rb +162 -0
  40. data/origen_app_generators/lib/origen_app_generators.rb +123 -0
  41. data/origen_app_generators/lib/tasks/app_generators.rake +6 -0
  42. data/origen_app_generators/lib/tasks/new_app_tests.rake +8 -0
  43. data/origen_app_generators/origen_app_generators.gemspec +33 -0
  44. data/origen_app_generators/spec/spec_helper.rb +49 -0
  45. data/origen_app_generators/spec/sub_block_spec.rb +36 -0
  46. data/origen_app_generators/target/debug.rb +8 -0
  47. data/origen_app_generators/target/default.rb +8 -0
  48. data/origen_app_generators/target/production.rb +0 -0
  49. data/origen_app_generators/templates/app_generators/application/Gemfile +19 -0
  50. data/origen_app_generators/templates/app_generators/application/Rakefile +7 -0
  51. data/origen_app_generators/templates/app_generators/application/config/application.rb +125 -0
  52. data/origen_app_generators/templates/app_generators/application/config/boot.rb +4 -0
  53. data/origen_app_generators/templates/app_generators/application/config/commands.rb +79 -0
  54. data/origen_app_generators/templates/app_generators/application/config/maillist_dev.txt +4 -0
  55. data/origen_app_generators/templates/app_generators/application/config/maillist_prod.txt +3 -0
  56. data/origen_app_generators/templates/app_generators/application/config/version.rb +8 -0
  57. data/origen_app_generators/templates/app_generators/application/doc/history +0 -0
  58. data/origen_app_generators/templates/app_generators/application/dot_keep +0 -0
  59. data/origen_app_generators/templates/app_generators/application/lib/app.rake +6 -0
  60. data/origen_app_generators/templates/app_generators/application/lib/module.rb +22 -0
  61. data/origen_app_generators/templates/app_generators/application/lib/top_level.rb +12 -0
  62. data/origen_app_generators/templates/app_generators/application/origen_core_session +2 -0
  63. data/origen_app_generators/templates/app_generators/application/spec/spec_helper.rb +44 -0
  64. data/origen_app_generators/templates/app_generators/application/target/debug.rb +8 -0
  65. data/origen_app_generators/templates/app_generators/application/target/default.rb +1 -0
  66. data/origen_app_generators/templates/app_generators/application/target/production.rb +4 -0
  67. data/origen_app_generators/templates/app_generators/application/templates/web/index.md.erb +19 -0
  68. data/origen_app_generators/templates/app_generators/application/templates/web/layouts/_basic.html.erb +13 -0
  69. data/origen_app_generators/templates/app_generators/application/templates/web/partials/_navbar.html.erb +20 -0
  70. data/origen_app_generators/templates/app_generators/application/templates/web/release_notes.md.erb +5 -0
  71. data/origen_app_generators/templates/app_generators/new/generator.rb +102 -0
  72. data/origen_app_generators/templates/app_generators/new/info.md.erb +9 -0
  73. data/origen_app_generators/templates/app_generators/origen_infrastructure/app_generator_plugin/config/load_generators.rb +6 -0
  74. data/origen_app_generators/templates/app_generators/origen_infrastructure/app_generator_plugin/lib/application.rb +54 -0
  75. data/origen_app_generators/templates/app_generators/origen_infrastructure/app_generator_plugin/lib/base.rb +55 -0
  76. data/origen_app_generators/templates/app_generators/origen_infrastructure/app_generator_plugin/lib/module.rb +28 -0
  77. data/origen_app_generators/templates/app_generators/origen_infrastructure/app_generator_plugin/lib/plugin.rb +64 -0
  78. data/origen_app_generators/templates/app_generators/plugin/Gemfile +26 -0
  79. data/origen_app_generators/templates/app_generators/plugin/Rakefile +10 -0
  80. data/origen_app_generators/templates/app_generators/plugin/config/boot.rb +24 -0
  81. data/origen_app_generators/templates/app_generators/plugin/gemspec.rb +42 -0
  82. data/origen_app_generators/templates/app_generators/plugin/lib/README +4 -0
  83. data/origen_app_generators/templates/app_generators/plugin/lib_dev/README +5 -0
  84. data/origen_app_generators/templates/app_generators/plugin/templates/web/index.md.erb +37 -0
  85. data/origen_app_generators/templates/app_generators/plugin/templates/web/partials/_navbar_external.html.erb +20 -0
  86. data/origen_app_generators/templates/app_generators/plugin/templates/web/partials/_navbar_internal.html.erb +20 -0
  87. data/origen_app_generators/templates/app_generators/test_engineering/stand_alone_application/Gemfile +23 -0
  88. data/origen_app_generators/templates/app_generators/test_engineering/stand_alone_application/environment/j750.rb +1 -0
  89. data/origen_app_generators/templates/app_generators/test_engineering/stand_alone_application/environment/jlink.rb +1 -0
  90. data/origen_app_generators/templates/app_generators/test_engineering/stand_alone_application/environment/uflex.rb +1 -0
  91. data/origen_app_generators/templates/app_generators/test_engineering/stand_alone_application/environment/v93k.rb +1 -0
  92. data/origen_app_generators/templates/app_generators/test_engineering/stand_alone_application/lib/ip_block.rb +23 -0
  93. data/origen_app_generators/templates/app_generators/test_engineering/stand_alone_application/lib/ip_block_controller.rb +5 -0
  94. data/origen_app_generators/templates/app_generators/test_engineering/stand_alone_application/lib/top_level.rb +33 -0
  95. data/origen_app_generators/templates/app_generators/test_engineering/stand_alone_application/lib/top_level_controller.rb +21 -0
  96. data/origen_app_generators/templates/app_generators/test_engineering/stand_alone_application/pattern/example.rb +4 -0
  97. data/origen_app_generators/templates/app_generators/test_engineering/stand_alone_application/target/top_level.rb +4 -0
  98. data/origen_app_generators/templates/app_generators/test_engineering/test_block/environment/j750.rb +2 -0
  99. data/origen_app_generators/templates/app_generators/test_engineering/test_block/environment/ultraflex.rb +2 -0
  100. data/origen_app_generators/templates/app_generators/test_engineering/test_block/environment/v93k.rb +2 -0
  101. data/origen_app_generators/templates/app_generators/test_engineering/test_block/lib/controller.rb +12 -0
  102. data/origen_app_generators/templates/app_generators/test_engineering/test_block/lib/interface.rb +21 -0
  103. data/origen_app_generators/templates/app_generators/test_engineering/test_block/lib/model.rb +18 -0
  104. data/origen_app_generators/templates/app_generators/test_engineering/test_block/lib_dev/dut.rb +27 -0
  105. data/origen_app_generators/templates/app_generators/test_engineering/test_block/lib_dev/dut_controller.rb +26 -0
  106. data/origen_app_generators/templates/app_generators/test_engineering/test_block/pattern/example.rb +5 -0
  107. data/origen_app_generators/templates/app_generators/test_engineering/test_block/program/prb1.rb +11 -0
  108. data/origen_app_generators/templates/app_generators/test_engineering/test_block/target/default.rb +2 -0
  109. data/origen_site_config.yml +13 -2
  110. data/templates/git/gitignore.erb +0 -1
  111. metadata +99 -4
@@ -0,0 +1,153 @@
1
+ require 'origen'
2
+ class OrigenAppGeneratorsApplication < Origen::Application
3
+ # This information is used in headers and email templates, set it specific
4
+ # to your application
5
+ config.name = "Origen App Generators"
6
+ config.initials = "Origen_App_Generators"
7
+ config.rc_url = "ssh://git@github.com:Origen-SDK/origen_app_generators.git"
8
+ config.release_externally = true
9
+
10
+ # To enable deployment of your documentation to a web server (via the 'origen web'
11
+ # command) fill in these attributes. The example here is configured to deploy to
12
+ # the origen.freescale.net domain, which is an easy option if you don't have another
13
+ # server already in mind. To do this you will need an account on CDE and to be a member
14
+ # of the 'origen' group.
15
+ config.web_directory = "/proj/.web_origen/html/origen_app_generators"
16
+ config.web_domain = "http://origen-sdk.org/origen_app_generators"
17
+
18
+ # When false Origen will be less strict about checking for some common coding errors,
19
+ # it is recommended that you leave this to true for better feedback and easier debug.
20
+ # This will be the default setting in Origen v3.
21
+ config.strict_errors = true
22
+
23
+ # See: http://origen.freescale.net/origen/latest/guides/utilities/lint/
24
+ config.lint_test = {
25
+ # Require the lint tests to pass before allowing a release to proceed
26
+ run_on_tag: true,
27
+ # Auto correct violations where possible whenever 'origen lint' is run
28
+ auto_correct: true,
29
+ # Limit the testing for large legacy applications
30
+ #level: :easy,
31
+ # Run on these directories/files by default
32
+ #files: ["lib", "config/application.rb"],
33
+ }
34
+
35
+ # Versioning is based on a timestamp by default, if you would rather use semantic
36
+ # versioning, i.e. v1.0.0 format, then set this to true.
37
+ # In parallel go and edit config/version.rb to enable the semantic version code.
38
+ config.semantically_version = true
39
+
40
+ config.shared = {
41
+ #patterns: "pattern",
42
+ #templates: "templates",
43
+ #programs: "program",
44
+ command_launcher: "config/shared_commands.rb"
45
+ }
46
+
47
+ # An example of how to set application specific LSF parameters
48
+ #config.lsf.project = "msg.te"
49
+
50
+ # An example of how to specify a prefix to add to all generated patterns
51
+ #config.pattern_prefix = "nvm"
52
+
53
+ # An example of how to add header comments to all generated patterns
54
+ #config.pattern_header do
55
+ # cc "This is a pattern created by the example origen application"
56
+ #end
57
+
58
+ # By default all generated output will end up in ./output.
59
+ # Here you can specify an alternative directory entirely, or make it dynamic such that
60
+ # the output ends up in a setup specific directory.
61
+ #config.output_directory do
62
+ # "#{Origen.root}/output/#{$dut.class}"
63
+ #end
64
+
65
+ # Similary for the reference files, generally you want to setup the reference directory
66
+ # structure to mirror that of your output directory structure.
67
+ #config.reference_directory do
68
+ # "#{Origen.root}/.ref/#{$dut.class}"
69
+ #end
70
+
71
+ # This will automatically deploy your documentation after every tag
72
+ #def after_release_email(tag, note, type, selector, options)
73
+ # deployer = Origen.app.deployer
74
+ # if deployer.running_on_cde? && deployer.user_belongs_to_origen?
75
+ # command = "origen web compile --remote --api"
76
+ # if Origen.app.version.production?
77
+ # command += " --archive #{Origen.app.version}"
78
+ # end
79
+ # Dir.chdir Origen.root do
80
+ # system command
81
+ # end
82
+ # end
83
+ #end
84
+
85
+ # Ensure that all tests pass before allowing a release to continue
86
+ #def validate_release
87
+ # if !system("origen specs") || !system("origen examples")
88
+ # puts "Sorry but you can't release with failing tests, please fix them and try again."
89
+ # exit 1
90
+ # else
91
+ # puts "All tests passing, proceeding with release process!"
92
+ # end
93
+ #end
94
+
95
+ # To enabled source-less pattern generation create a class (for example PatternDispatcher)
96
+ # to generate the pattern. This should return false if the requested pattern has been
97
+ # dispatched, otherwise Origen will proceed with looking up a pattern source as normal.
98
+ #def before_pattern_lookup(requested_pattern)
99
+ # PatternDispatcher.new.dispatch_or_return(requested_pattern)
100
+ #end
101
+
102
+ # If you use pattern iterators you may come accross the case where you request a pattern
103
+ # like this:
104
+ # origen g example_pat_b0.atp
105
+ #
106
+ # However it cannot be found by Origen since the pattern name is actually example_pat_bx.atp
107
+ # In the case where the pattern cannot be found Origen will pass the name to this translator
108
+ # if it exists, and here you can make any substitutions to help Origen find the file you
109
+ # want. In this example any instances of _b\d, where \d means a number, are replaced by
110
+ # _bx.
111
+ #config.pattern_name_translator do |name|
112
+ # name.gsub(/_b\d/, "_bx")
113
+ #end
114
+
115
+ # If you want to use pattern iterators, that is the ability to generate multiple pattern
116
+ # variants from a single source file, then you can define the required behavior here.
117
+ # The examples below implement some of the iterators that were available in Origen 1,
118
+ # you can remove them if you don't want to use them, or of course modify or add new
119
+ # iterators specific to your application logic.
120
+
121
+ # By setting iterator
122
+ config.pattern_iterator do |iterator|
123
+ # Define a key that you will use to enable this in a pattern, here the iterator
124
+ # can be enabled like this: Pattern.create(by_setting: [1,2,3]) do
125
+ iterator.key = :by_setting
126
+
127
+ # The value passed from the pattern via the key comes in here as the first
128
+ # argument, the name applied here can be anything, but settings seem reasonable since
129
+ # an array of setting values is expected.
130
+ # The last argument &pattern is mandatory and represents the pattern block (the bit contained
131
+ # within Pattern.create do ... end)
132
+ iterator.loop do |settings, &pattern|
133
+ # Implement the loop however you like, here we loop for each value in the array
134
+ settings.each do |setting|
135
+ # Now call the pattern passing in the setting argument, this would be captured
136
+ # in the pattern like this:
137
+ # Pattern.create do |setting|
138
+ pattern.call(setting)
139
+ end
140
+ end
141
+
142
+ # Each pattern iteration needs a unique name, otherwise Origen will simply overwrite
143
+ # the same output file each time.
144
+ # The base pattern name and the pattern argument, in this case the setting, will be
145
+ # passed in here and whatever is returned is what will be used as the name.
146
+ iterator.pattern_name do |name, setting|
147
+ # Substiture _x in the name with the setting, _1, _2, etc.
148
+ name.gsub("_x", "_#{setting}")
149
+ end
150
+ end
151
+
152
+
153
+ end
@@ -0,0 +1 @@
1
+ require "origen_app_generators"
@@ -0,0 +1,63 @@
1
+ # This file should be used to extend the origen command line tool with tasks
2
+ # specific to your application.
3
+ # The comments below should help to get started and you can also refer to
4
+ # lib/origen/commands.rb in your Origen core workspace for more examples and
5
+ # inspiration.
6
+ #
7
+ # Also see the official docs on adding commands:
8
+ # http://origen.freescale.net/origen/latest/guides/custom/commands/
9
+
10
+ # Map any command aliases here, for example to allow origen -x to refer to a
11
+ # command called execute you would add a reference as shown below:
12
+ aliases ={
13
+ # "-x" => "execute",
14
+ }
15
+
16
+ # The requested command is passed in here as @command, this checks it against
17
+ # the above alias table and should not be removed.
18
+ @command = aliases[@command] || @command
19
+
20
+ ## Now branch to the specific task code
21
+ case @command
22
+
23
+ # Run the unit tests
24
+ when "specs"
25
+ require "rspec"
26
+ exit RSpec::Core::Runner.run(['spec'])
27
+
28
+ ## Run the example-based (diff) tests
29
+ #when "examples"
30
+ # Origen.load_application
31
+ # status = 0
32
+ #
33
+ # # Compiler tests
34
+ # ARGV = %w(templates/example.txt.erb -t debug -r approved)
35
+ # load "origen/commands/compile.rb"
36
+ # # Pattern generator tests
37
+ # #ARGV = %w(some_pattern -t debug -r approved)
38
+ # #load "#{Origen.top}/lib/origen/commands/generate.rb"
39
+ #
40
+ # if Origen.app.stats.changed_files == 0 &&
41
+ # Origen.app.stats.new_files == 0 &&
42
+ # Origen.app.stats.changed_patterns == 0 &&
43
+ # Origen.app.stats.new_patterns == 0
44
+ #
45
+ # Origen.app.stats.report_pass
46
+ # else
47
+ # Origen.app.stats.report_fail
48
+ # status = 1
49
+ # end
50
+ # puts
51
+ # exit status # Exit with a 1 on the event of a failure per std unix result codes
52
+ #
53
+ ## Always leave an else clause to allow control to fall back through to the
54
+ ## Origen command handler.
55
+ ## You probably want to also add the command details to the help shown via
56
+ ## origen -h, you can do this be assigning the required text to @application_commands
57
+ ## before handing control back to Origen. Un-comment the example below to get started.
58
+ else
59
+ @application_commands = <<-EOT
60
+ specs Run the specs (tests), -c will enable coverage
61
+ EOT
62
+
63
+ end
@@ -0,0 +1,172 @@
1
+ # The requested command is passed in here as @command
2
+ case @command
3
+
4
+ when "app_gen:test"
5
+ options = {}
6
+
7
+ opt_parser = OptionParser.new do |opts|
8
+ opts.banner = <<-END
9
+ Test the generators by emulating the 'origen new' command execution and building the new
10
+ application into the tmp directory.
11
+
12
+ Usage: origen app_gen:test [options]
13
+ END
14
+ opts.on('-d', '--debugger', 'Enable the debugger') { options[:debugger] = true }
15
+ opts.on('-i', '--inputs INDEX', Integer, "Apply the set of test inputs defined in #{Origen.app.namespace}::TEST_INPUTS[INDEX]") { |f| options[:inputs] = f }
16
+ opts.on('-r', '--regression', "Run all sets of test inputs defined in #{Origen.app.namespace}::TEST_INPUTS[INDEX]") { options[:regression] = true }
17
+ opts.on('-a', '--all_generators', "Include the generators from Origen core") { options[:all_generators] = true }
18
+ opts.separator ''
19
+ opts.on('-h', '--help', 'Show this message') { puts opts; exit }
20
+ end
21
+
22
+ opt_parser.orig_parse! ARGV
23
+
24
+ FileUtils.rm_rf "#{Origen.root}/tmp" if File.exist?("#{Origen.root}/tmp")
25
+
26
+ if options[:inputs] || options[:regression]
27
+ if options[:regression]
28
+ inputs = Origen.app.namespace.constantize::TEST_INPUTS
29
+ else
30
+ inputs = [Origen.app.namespace.constantize::TEST_INPUTS[options[:inputs].to_i]]
31
+ end
32
+
33
+ prefix = 'bundle exec ' unless Origen.site_config.gem_manage_bundler
34
+
35
+ overall_fail = false
36
+
37
+ inputs.each do |vals|
38
+ test_failed = false
39
+ post_build_operations = Array(vals.pop)
40
+ target_load_test_required = false
41
+ post_build_operations = post_build_operations.map do |op|
42
+ if op.to_s == 'default'
43
+ target_load_test_required = true
44
+ cmds = ['origen -v']
45
+ # For some reason this command doesn't work in Travis CI, don't know why and
46
+ # couldn't work out how to fix (looks like a Bundler-related issue)
47
+ cmds << 'origen lint --no-correct' unless ENV['TRAVIS']
48
+ cmds << 'bundle exec rake new_app_tests:load_target'
49
+ cmds << 'origen web compile --no-serve'
50
+ cmds
51
+ elsif op.to_s == 'load_target'
52
+ target_load_test_required = true
53
+ 'rake new_app_tests:load_target'
54
+ else
55
+ op
56
+ end
57
+ end.flatten
58
+
59
+ str = vals.map { |i| i == :default ? "\n" : "#{i}\n" }.join('')
60
+ cmd = "#{prefix} origen app_gen:test"
61
+ cmd += ' --debugger' if options[:debugger]
62
+ cmd += ' --all_generators' if options[:all_generators]
63
+ passed = false
64
+ Bundler.with_clean_env do
65
+ passed = system "echo '#{str}' | #{cmd}"
66
+ end
67
+
68
+ if passed
69
+ # The app is successfully built, now see if it works...
70
+ unless post_build_operations.empty?
71
+ if target_load_test_required
72
+ FileUtils.cp "#{Origen.root!}/lib/tasks/new_app_tests.rake", 'tmp/lib/tasks'
73
+ end
74
+
75
+ operation_failed = false
76
+ Bundler.with_clean_env do
77
+ Dir.chdir "#{Origen.root}/tmp" do
78
+ post_build_operations.each_with_index do |op, i|
79
+ if i == 0 && !Origen.site_config.gem_manage_bundler
80
+ system('bundle')
81
+ end
82
+ Origen.log.info "Running command: #{op}"
83
+ if system("#{prefix}#{op}")
84
+ Origen.log.success "Command passed: #{op}"
85
+ else
86
+ Origen.log.error "Command failed: #{op}"
87
+ operation_failed = true
88
+ end
89
+ end
90
+ end
91
+ end
92
+
93
+ if operation_failed
94
+ if options[:regression]
95
+ overall_fail = true
96
+ else
97
+ Origen.app.stats.report_fail
98
+ exit 1
99
+ end
100
+ end
101
+ end
102
+ else
103
+ Origen.log.error "The generator failed to build!"
104
+ if options[:regression]
105
+ overall_fail = true
106
+ else
107
+ Origen.app.stats.report_fail
108
+ exit 1
109
+ end
110
+ end
111
+ end
112
+
113
+ if options[:regression] && overall_fail
114
+ Origen.app.stats.report_fail
115
+ exit 1
116
+ else
117
+ Origen.app.stats.report_pass
118
+ exit 0
119
+ end
120
+
121
+ else
122
+
123
+ # Launch the generator in a standalone shell,
124
+ # this is to emulate how it will run in real life and cause it to fail if there are
125
+ # any dependencies on running within an Origen app environment
126
+ boot = "#{Origen.root!}/bin/boot.rb"
127
+ origen_lib = "#{Origen.top}/lib"
128
+ app_gen_lib = "#{Origen.root!}/lib"
129
+ app_lib = "#{Origen.root}/lib"
130
+ load_generators = "#{Origen.root}/config/load_generators.rb"
131
+ cmd = "#{boot} #{origen_lib} #{app_gen_lib} #{app_lib} #{load_generators}"
132
+ cmd = "#{cmd} true" if options[:all_generators] || Origen.app.name == :origen_app_generators
133
+ cmd = "ruby #{cmd}" if Origen.os.windows?
134
+ cmd = "bundle exec #{cmd}" unless Origen.site_config.gem_manage_bundler
135
+ # puts cmd
136
+ passed = false
137
+ Bundler.with_clean_env do
138
+ passed = system cmd
139
+ end
140
+ exit passed ? 0 : 1
141
+ end
142
+
143
+ when "app_gen:new"
144
+ options = {}
145
+
146
+ opt_parser = OptionParser.new do |opts|
147
+ opts.banner = <<-END
148
+ Create a new application generator.
149
+
150
+ Usage: origen app_gen:new [options]
151
+ END
152
+ opts.on('-d', '--debugger', 'Enable the debugger') { options[:debugger] = true }
153
+ opts.separator ''
154
+ opts.on('-h', '--help', 'Show this message') { puts opts; exit }
155
+ end
156
+
157
+ opt_parser.orig_parse! ARGV
158
+
159
+ OrigenAppGenerators::New.start []
160
+ exit 0
161
+
162
+ # Always leave an else clause to allow control to fall back through to the Origen command handler.
163
+ # You probably want to also add the command details to the help shown via 'origen -h',
164
+ # you can do this bb adding the required text to @plugin_commands before handing control back to
165
+ # Origen.
166
+ else
167
+ @plugin_commands << <<-EOT
168
+ app_gen:test Test run the 'origen new' command operation using your latest generators
169
+ app_gen:new Create a new application or plugin generator
170
+ EOT
171
+
172
+ end
@@ -0,0 +1,8 @@
1
+ module OrigenAppGenerators
2
+ MAJOR = 1
3
+ MINOR = 2
4
+ BUGFIX = 0
5
+ DEV = nil
6
+
7
+ VERSION = [MAJOR, MINOR, BUGFIX].join(".") + (DEV ? ".pre#{DEV}" : '')
8
+ end
@@ -0,0 +1,213 @@
1
+ <a class="anchor release_tag" name="v1_2_0"></a>
2
+ <h1><a href="#v1_2_0">Tag: v1.2.0</a></h1>
3
+
4
+ ##### Branch: 'master'
5
+
6
+ ##### by Stephen McGinty on 20-Jul-2018 10:27AM
7
+
8
+
9
+ * Added a fall back way of working out the latest Origen version if the default way
10
+ of fetching it from rubygems.org fails (e.g. due to https connection issues in
11
+ runtime environment).
12
+
13
+ * Removed 'https://rubygems.org' as a Gemfile source when the app/plugin type is internal
14
+ and Origen.site\_config.gem\_server has been configured. Origen.site\_config.gem\_server can
15
+ be set to an array of sources, so site configurations can put it back in again if they want it.
16
+
17
+ * Disabled lint checks in the regression command, couldn't work out why it is failing in
18
+ CI/Travis, though it still works and is enabled when the regression command
19
+ (origen app\_gen:test -r) is run locally.
20
+
21
+ <a class="anchor release_tag" name="v1_1_4"></a>
22
+ <h1><a href="#v1_1_4">Tag: v1.1.4</a></h1>
23
+
24
+ ##### Branch: 'master'
25
+
26
+ ##### by David Welguisz on 07-Dec-2017 10:23AM
27
+
28
+
29
+ #### Bug Fix
30
+ * Gemfile.lock was bad. Had windows specific gems. This one is clean.
31
+
32
+ <a class="anchor release_tag" name="v1_1_3"></a>
33
+ <h1><a href="#v1_1_3">Tag: v1.1.3</a></h1>
34
+
35
+ ##### Branch: 'master'
36
+
37
+ ##### by David Welguisz on 17-Oct-2017 11:33AM
38
+
39
+
40
+ #### Bug Fix
41
+ * Previous release had it that copying directories could only happen if they had the same destination and source name. Now source and destination directory can be different.
42
+
43
+ <a class="anchor release_tag" name="v1_1_2"></a>
44
+ <h1><a href="#v1_1_2">Tag: v1.1.2</a></h1>
45
+
46
+ ##### Branch: 'master'
47
+
48
+ ##### by David Welguisz on 16-Oct-2017 12:57PM
49
+
50
+
51
+ #### Updates
52
+ * Added the ability to recursively copy a directory in the app generator
53
+ * Added examples in the comment section of build\_filelist
54
+
55
+ <a class="anchor release_tag" name="v1_1_1"></a>
56
+ <h1><a href="#v1_1_1">Tag: v1.1.1</a></h1>
57
+
58
+ ##### Branch: 'master'
59
+
60
+ ##### by David Welguisz on 06-Oct-2017 13:05PM
61
+
62
+
63
+ #### Updates
64
+ * Added the ability to recursively copy a directory in the app generator
65
+ * Added examples in the comment section of build\_filelist
66
+
67
+ <a class="anchor release_tag" name="v1_1_0"></a>
68
+ <h1><a href="#v1_1_0">Tag: v1.1.0</a></h1>
69
+
70
+ ##### Branch: 'master'
71
+
72
+ ##### by Stephen McGinty on 29-Aug-2017 05:48AM
73
+
74
+
75
+ * Improvements to the custom app generators application template
76
+ * Improved the source path lookup for custom app generators, now includes
77
+ a base dir and should now add dirs for any additional sub-classing that
78
+ is added
79
+ * All directories will now include .keep files by default, though this can
80
+ be inhibited by setting nokeep: true within the directory definition in
81
+ the filelist
82
+
83
+ <a class="anchor release_tag" name="v1_0_1"></a>
84
+ <h1><a href="#v1_0_1">Tag: v1.0.1</a></h1>
85
+
86
+ ##### Branch: 'master'
87
+
88
+ ##### by Stephen McGinty on 18-Aug-2017 18:46PM
89
+
90
+
91
+ Some bug fixes after first trial in the wild, no changes to documented behavior
92
+
93
+ <a class="anchor release_tag" name="v1_0_0"></a>
94
+ <h1><a href="#v1_0_0">Tag: v1.0.0</a></h1>
95
+
96
+ ##### Branch: 'master'
97
+
98
+ ##### by Stephen McGinty on 17-Aug-2017 13:47PM
99
+
100
+
101
+ Added support for company customized application generators
102
+
103
+ <a class="anchor release_tag" name="v0_4_0"></a>
104
+ <h1><a href="#v0_4_0">Tag: v0.4.0</a></h1>
105
+
106
+ ##### Branch: 'master'
107
+
108
+ ##### by Stephen McGinty on 24-May-2017 17:31PM
109
+
110
+
111
+ Added origen\_updater to all new apps and fixed some bugs
112
+
113
+ <a class="anchor release_tag" name="v0_3_2"></a>
114
+ <h1><a href="#v0_3_2">Tag: v0.3.2</a></h1>
115
+
116
+ ##### Branch: 'master'
117
+
118
+ ##### by Stephen McGinty on 06-Jun-2016 21:32PM
119
+
120
+
121
+ Fix for \#1
122
+
123
+ <a class="anchor release_tag" name="v0_3_1"></a>
124
+ <h1><a href="#v0_3_1">Tag: v0.3.1</a></h1>
125
+
126
+ ##### Branch: 'master'
127
+
128
+ ##### by Stephen McGinty on 26-May-2016 05:48AM
129
+
130
+
131
+ Added .byebug\_history to generated .gitignore
132
+
133
+ <a class="anchor release_tag" name="v0_3_0"></a>
134
+ <h1><a href="#v0_3_0">Tag: v0.3.0</a></h1>
135
+
136
+ ##### Branch: 'master'
137
+
138
+ ##### by Stephen McGinty on 13-May-2016 00:15AM
139
+
140
+
141
+ Added an initial test module template
142
+
143
+ <a class="anchor release_tag" name="v0_2_3"></a>
144
+ <h1><a href="#v0_2_3">Tag: v0.2.3</a></h1>
145
+
146
+ ##### Branch: 'master'
147
+
148
+ ##### by Stephen McGinty on 25-Feb-2016 09:15AM
149
+
150
+
151
+ Added maillists
152
+
153
+ <a class="anchor release_tag" name="v0_2_2"></a>
154
+ <h1><a href="#v0_2_2">Tag: v0.2.2</a></h1>
155
+
156
+ ##### Branch: 'master'
157
+
158
+ ##### by Stephen McGinty on 22-Sep-2015 09:46AM
159
+
160
+
161
+ Added basic web pages templates to generated apps/plugins
162
+
163
+ <a class="anchor release_tag" name="v0_2_1"></a>
164
+ <h1><a href="#v0_2_1">Tag: v0.2.1</a></h1>
165
+
166
+ ##### Branch: 'master'
167
+
168
+ ##### by Stephen McGinty on 21-Sep-2015 10:34AM
169
+
170
+
171
+ Include template .files in the gem build
172
+
173
+ <a class="anchor release_tag" name="v0_2_0"></a>
174
+ <h1><a href="#v0_2_0">Tag: v0.2.0</a></h1>
175
+
176
+ ##### Branch: 'master'
177
+
178
+ ##### by Stephen McGinty on 21-Sep-2015 08:18AM
179
+
180
+
181
+ Initial release of stand alone test engineering app template
182
+
183
+ <a class="anchor release_tag" name="v0_1_0"></a>
184
+ <h1><a href="#v0_1_0">Tag: v0.1.0</a></h1>
185
+
186
+ ##### Branch: 'master'
187
+
188
+ ##### by Stephen McGinty on 10-Sep-2015 07:47AM
189
+
190
+
191
+ Initial working version of stand alone test engineering app generator
192
+
193
+ <a class="anchor release_tag" name="v0_0_3"></a>
194
+ <h1><a href="#v0_0_3">Tag: v0.0.3</a></h1>
195
+
196
+ ##### Branch: 'master'
197
+
198
+ ##### by r49409 on 24-Jun-2015 10:41AM
199
+
200
+
201
+ The generic application and plugin generators now build an app that can boot
202
+
203
+ <a class="anchor release_tag" name="v0_0_2"></a>
204
+ <h1><a href="#v0_0_2">Tag: v0.0.2</a></h1>
205
+
206
+ ##### Branch: 'master'
207
+
208
+ ##### by r49409 on 24-Jun-2015 08:06AM
209
+
210
+
211
+ Initial version that can run, the generated new app could have bugs however
212
+
213
+
@@ -0,0 +1,62 @@
1
+ module OrigenAppGenerators
2
+ # The base generator class that should be used by all application generators
3
+ class Application < Base
4
+ # Any methods that are not protected will get invoked in the order they are
5
+ # defined when the generator is run
6
+
7
+ protected
8
+
9
+ def type
10
+ :application
11
+ end
12
+
13
+ # This is the default list of files that will get generated for a new application
14
+ # when you call the compile_filelist method.
15
+ # To customize this for a domain specific application generator you can either
16
+ # delete an entry:
17
+ #
18
+ # filelist.delete(:config_application)
19
+ # compile_filelist
20
+ #
21
+ # Or point it to a different template, the supplied path is relative to templates/app_generators
22
+ #
23
+ # filelist[:config_application][:source] = "dng_test_app/config/application.rb"
24
+ # compile_filelist
25
+ def filelist
26
+ fail '@name must be defined before calling filelist for the first time' unless @name
27
+ @filelist ||= {
28
+ config_application: { source: 'config/application.rb' },
29
+ config_version: { source: 'config/version.rb' },
30
+ config_boot: { source: 'config/boot.rb' },
31
+ config_commands: { source: 'config/commands.rb' },
32
+ config_dev: { source: 'config/maillist_dev.txt' },
33
+ config_prod: { source: 'config/maillist_prod.txt' },
34
+ doc_history: { source: 'doc/history' },
35
+ target_default: { source: 'target/default.rb' },
36
+ # target_default: { source: 'debug.rb', # Relative to the file being linked to
37
+ # dest: 'target/default.rb', # Relative to destination_root
38
+ # type: :symlink },
39
+ environment_dir: { dest: 'environment', type: :directory },
40
+ lib_module: { source: 'lib/module.rb',
41
+ dest: "lib/#{@name}.rb" },
42
+ lib_tasks: { source: 'lib/app.rake',
43
+ dest: "lib/tasks/#{@name}.rake" },
44
+ spec_helper: { source: 'spec/spec_helper.rb' },
45
+ web_index: { source: 'templates/web/index.md.erb' },
46
+ web_basic_layout: { source: 'templates/web/layouts/_basic.html.erb' },
47
+ web_navbar: { source: 'templates/web/partials/_navbar.html.erb' },
48
+ web_release_notes: { source: 'templates/web/release_notes.md.erb' },
49
+ rakefile: { source: 'Rakefile' },
50
+ gemfile: { source: 'Gemfile' },
51
+ gitignore: { source: '.gitignore' },
52
+ irbrc: { source: '.irbrc' },
53
+ rspec: { source: '.rspec' },
54
+ # This sets the initial mode of the new workspace to 'debug'
55
+ session: { source: 'origen_core_session',
56
+ dest: '.session/origen_core',
57
+ copy: true
58
+ }
59
+ }
60
+ end
61
+ end
62
+ end