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.



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

def initialize(options)
  @options = options
end

Instance Attribute Details

#optionsObject (readonly)

Returns the value of attribute options.



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

def options
  @options
end

Class Method Details

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

Gets the contents of the given script.



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

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 return 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.



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

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



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

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

#install_sh_from_upstreamObject



73
74
75
76
77
78
79
80
81
82
# File 'lib/mixlib/install/generator/base.rb', line 73

def install_sh_from_upstream
  uri = URI.parse(options.options[:new_omnibus_download_url])
  response = Net::HTTP.get_response(uri)

  if response.code == "200"
    response.body
  else
    raise StandardError, "unable to fetch the install.sh"
  end
end