Class: OrigenAppGenerators::Base
- Inherits:
-
Origen::CodeGenerators::Base
- Object
- Origen::CodeGenerators::Base
- OrigenAppGenerators::Base
- Includes:
- Origen::Utility::InputCapture
- Defined in:
- lib/origen_app_generators/base.rb
Overview
This is the base generator used by all generators in this application
Direct Known Subclasses
Instance Method Summary collapse
- #get_common_user_input ⇒ Object
- #get_lastest_origen_version ⇒ Object
- #set_source_paths ⇒ Object
-
#set_type ⇒ Object
Just makes the type (:plugin or :application) available to all templates.
Instance Method Details
#get_common_user_input ⇒ Object
42 43 44 |
# File 'lib/origen_app_generators/base.rb', line 42 def get_common_user_input get_name_and_namespace end |
#get_lastest_origen_version ⇒ Object
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/origen_app_generators/base.rb', line 46 def get_lastest_origen_version @latest_origen_version ||= begin (Gems.info 'origen')['version'] rescue # If the above fails, e.g. due to an SSL error in the runtime environment, try to fetch the # latest Origen version from the Origen website, before finally falling back to the version # we are currently running if all else fails begin require 'httparty' response = HTTParty.get('http://origen-sdk.org/origen/release_notes/') version = Origen::VersionString.new(response.body.match(/Tag: v(\d+\.\d+.\d+)</).to_a.last) if version.valid? version else fail "Can't get the latest version!" end rescue Origen.version end end end |
#set_source_paths ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/origen_app_generators/base.rb', line 8 def set_source_paths # The base Origen generator puts the Origen core directory on the source path, in retrospect this # was a bad idea and makes for hard to debug errors if an app generator resolves a template from # outside of this app. # So to keep things sane remove any inherited source paths. self.class.source_paths.pop until self.class.source_paths.empty? klass = self.class until klass == OrigenAppGenerators::Base if template_dir = OrigenAppGenerators.template_dirs[klass] dir = [] last_class = nil until klass.to_s =~ /^OrigenAppGenerators/ dir << "#{template_dir}/#{class_dir(klass)}" last_class = klass klass = klass.superclass end dir << "#{template_dir}/base" klass = last_class else dir = "#{Origen.root!}/templates/app_generators/#{class_dir(klass)}" end Array(dir).each do |dir| self.class.source_paths << dir if File.exist?(dir) && !self.class.source_paths.include?(dir) end klass = klass.superclass end end |
#set_type ⇒ Object
Just makes the type (:plugin or :application) available to all templates
38 39 40 |
# File 'lib/origen_app_generators/base.rb', line 38 def set_type @type = type end |