Class: Mixlib::Install::Generator::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/mixlib/install/generator/base.rb

Direct Known Subclasses

Bourne, PowerShell

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options) ⇒ Base

Returns a new instance of Base.



29
30
31
# File 'lib/mixlib/install/generator/base.rb', line 29

def initialize(options)
  @options = options
end

Instance Attribute Details

#optionsObject (readonly)

Returns the value of attribute options.



27
28
29
# File 'lib/mixlib/install/generator/base.rb', line 27

def options
  @options
end

Class Method Details

.get_script(name, context = {}) ⇒ Object

Gets the contents of the given script.



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/mixlib/install/generator/base.rb', line 44

def self.get_script(name, context = {})
  script_path = File.join(script_base_path, name)

  # If there is an erb template we render it, otherwise we just read
  # and returnt the contents of the script
  if File.exist? "#{script_path}.erb"
    # Default values to use incase they are not set in the context
    context[:project_name] ||= Mixlib::Install::Dist::PROJECT_NAME.freeze
    context[:base_url] ||= Mixlib::Install::Dist::OMNITRUCK_ENDPOINT.freeze
    context[:default_product] ||= Mixlib::Install::Dist::DEFAULT_PRODUCT.freeze
    context[:bug_url] ||= Mixlib::Install::Dist::BUG_URL.freeze
    context[:support_url] ||= Mixlib::Install::Dist::SUPPORT_URL.freeze
    context[:resources_url] ||= Mixlib::Install::Dist::RESOURCES_URL.freeze
    context[:macos_dir] ||= Mixlib::Install::Dist::MACOS_VOLUME.freeze
    context[:windows_dir] ||= Mixlib::Install::Dist::WINDOWS_INSTALL_DIR.freeze
    context[:user_agent_string] = Util.user_agent_string(context[:user_agent_headers])

    context_object = OpenStruct.new(context).instance_eval { binding }
    ERB.new(File.read("#{script_path}.erb")).result(context_object)
  else
    File.read(script_path)
  end
end

.script_base_pathObject

Returns the base path where the script fragments are located for the generator as a String.



37
38
39
# File 'lib/mixlib/install/generator/base.rb', line 37

def self.script_base_path
  raise "You must define a script_base_path for your Generator::Base class."
end

Instance Method Details

#get_script(name, context = {}) ⇒ Object



68
69
70
# File 'lib/mixlib/install/generator/base.rb', line 68

def get_script(name, context = {})
  self.class.get_script(name, context)
end