Class: Mixlib::Install::Options

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

Defined Under Namespace

Classes: InvalidOptions

Constant Summary collapse

SUPPORTED_ARCHITECTURES =
%w{
  i386
  powerpc
  ppc64
  ppc64le
  s390x
  sparc
  x86_64
}
SUPPORTED_CHANNELS =
[
  :stable,
  :current,
  :unstable,
]
SUPPORTED_PRODUCT_NAMES =
PRODUCT_MATRIX.products
SUPPORTED_SHELL_TYPES =
[
  :ps1,
  :sh,
]
SUPPORTED_OPTIONS =
[
  :architecture,
  :channel,
  :platform,
  :platform_version,
  :product_name,
  :product_version,
  :shell_type,
  :platform_version_compatibility_mode,
  :include_metadata,
  :user_agent_headers,
]
SUPPORTED_WINDOWS_DESKTOP_VERSIONS =
%w{7 8 8.1 10}
SUPPORTED_WINDOWS_NANO_VERSIONS =
%w{2016nano}

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options) ⇒ Options

Returns a new instance of Options.



69
70
71
72
73
74
75
76
77
78
79
80
81
# File 'lib/mixlib/install/options.rb', line 69

def initialize(options)
  @options = options
  @errors = []

  # Store original platform version in cases where we must remap it
  @original_platform_version = options[:platform_version]

  resolve_platform_version_compatibility_mode!

  map_windows_versions!

  validate!
end

Instance Attribute Details

#errorsObject (readonly)

Returns the value of attribute errors.



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

def errors
  @errors
end

#optionsObject (readonly)

Returns the value of attribute options.



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

def options
  @options
end

#original_platform_versionObject (readonly)

Returns the value of attribute original_platform_version.



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

def original_platform_version
  @original_platform_version
end

Instance Method Details

#for_ps1?Boolean Also known as: for_windows?

Returns:

  • (Boolean)


104
105
106
# File 'lib/mixlib/install/options.rb', line 104

def for_ps1?
  platform == "windows" || shell_type == :ps1
end

#include_metadata?Boolean

Returns:

  • (Boolean)


113
114
115
# File 'lib/mixlib/install/options.rb', line 113

def include_metadata?
  .to_s == "true"
end

#latest_version?Boolean

Returns:

  • (Boolean)


109
110
111
# File 'lib/mixlib/install/options.rb', line 109

def latest_version?
  product_version.to_sym == :latest
end

#platform_infoObject



130
131
132
133
134
135
136
# File 'lib/mixlib/install/options.rb', line 130

def platform_info
  {
    platform: options[:platform],
    platform_version: options[:platform_version],
    architecture: options[:architecture],
  }
end

#resolve_platform_version_compatibility_mode!Object

Calling this method will give queries more of an opportunity to collect compatible artifacts where there may not always be an exact match.

This option is set to false by default.

  • In cases where no platform options are configured it will set this option to true.

  • In cases where all platform options are configured it will remain false UNLESS the option has been configured to be true.



147
148
149
150
151
# File 'lib/mixlib/install/options.rb', line 147

def resolve_platform_version_compatibility_mode!
  unless options[:platform_version_compatibility_mode]
    options[:platform_version_compatibility_mode] = true if platform_info.values.none?
  end
end

#set_platform_info(info) ⇒ Object

Set the platform info on the instance info [Hash]

Hash with keys :platform, :platform_version and :architecture


122
123
124
125
126
127
128
# File 'lib/mixlib/install/options.rb', line 122

def set_platform_info(info)
  options[:platform] = info[:platform]
  options[:platform_version] = info[:platform_version]
  options[:architecture] = info[:architecture]

  validate_options!
end

#validate!Object



89
90
91
# File 'lib/mixlib/install/options.rb', line 89

def validate!
  validate_options!
end

#validate_options!Object

Raises:



93
94
95
96
97
98
99
100
101
102
# File 'lib/mixlib/install/options.rb', line 93

def validate_options!
  validate_architecture
  validate_product_names
  validate_channels
  validate_shell_type
  validate_user_agent_headers
  validate_platform_options

  raise InvalidOptions, errors.join("\n") unless errors.empty?
end