Class: Mixlib::Install::Util
- Inherits:
-
Object
- Object
- Mixlib::Install::Util
- Defined in:
- lib/mixlib/install/util.rb
Class Method Summary collapse
- .map_windows_version(version) ⇒ Object
-
.normalize_architecture(architecture) ⇒ Object
Normalizes architecture information.
-
.pretty_version(version) ⇒ String
private
A pretty/helpful representation of a Chef Omnibus package version.
-
.shell_code_from_file(vars, file, powershell, opts = {}) ⇒ String
private
Builds a complete command given a variables String preamble and a file containing shell code.
-
.shell_env_var(name, value, powershell = false) ⇒ String
private
Builds a shell environment variable assignment string for the required shell type.
-
.shell_var(name, value, powershell = false) ⇒ String
Builds a shell variable assignment string for the required shell type.
-
.user_agent_string(headers) ⇒ String
Build the user-agent string.
-
.wrap_command(cmd) ⇒ String
Generates a command (or series of commands) wrapped so that it can be invoked on a remote instance or locally.
-
.wrap_shell(code, powershell = false, opts = {}) ⇒ String
private
Wraps a body of shell code with common context appropriate for the type of shell.
Class Method Details
.map_windows_version(version) ⇒ Object
136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 |
# File 'lib/mixlib/install/util.rb', line 136 def map_windows_version(version) # This logic does not try to compare and determine proper versions based on conditions or ranges. # These are here to improve UX for desktop versions. case version when /^10/ "2016" when /^6.3/, /^8.1/, /2016nano/ "2012r2" when /^6.2/, /^8/ "2012" when /^6.1/, /^7/ "2008r2" when /^6/ "2008" else version end end |
.normalize_architecture(architecture) ⇒ Object
Normalizes architecture information
161 162 163 164 165 166 167 168 169 170 171 172 173 174 |
# File 'lib/mixlib/install/util.rb', line 161 def normalize_architecture(architecture) case architecture when "amd64" "x86_64" when "arm64" "aarch64" when "i86pc", "i686" "i386" when "sun4u", "sun4v" "sparc" else architecture end end |
.pretty_version(version) ⇒ String
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns a pretty/helpful representation of a Chef Omnibus package version.
26 27 28 29 30 31 32 |
# File 'lib/mixlib/install/util.rb', line 26 def pretty_version(version) case version when "true" then "install only if missing" when "latest" then "always install latest version" else version end end |
.shell_code_from_file(vars, file, powershell, opts = {}) ⇒ String
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Builds a complete command given a variables String preamble and a file containing shell code.
43 44 45 46 47 48 |
# File 'lib/mixlib/install/util.rb', line 43 def shell_code_from_file(vars, file, powershell, opts = {}) src_file = file + (powershell ? ".ps1" : ".sh") Util.wrap_shell([vars, "", IO.read(src_file)].join("\n"), powershell, opts) end |
.shell_env_var(name, value, powershell = false) ⇒ String
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Builds a shell environment variable assignment string for the required shell type.
86 87 88 89 90 91 92 |
# File 'lib/mixlib/install/util.rb', line 86 def shell_env_var(name, value, powershell = false) if powershell shell_var("env:#{name}", value, true) else "#{shell_var(name, value)}; export #{name}" end end |
.shell_var(name, value, powershell = false) ⇒ String
Builds a shell variable assignment string for the required shell type.
100 101 102 103 104 105 106 |
# File 'lib/mixlib/install/util.rb', line 100 def shell_var(name, value, powershell = false) if powershell %{$#{name} = "#{value}"} else %{#{name}="#{value}"} end end |
.user_agent_string(headers) ⇒ String
Build the user-agent string
128 129 130 131 132 133 134 |
# File 'lib/mixlib/install/util.rb', line 128 def user_agent_string(headers) require_relative "version" user_agents = %W{mixlib-install/#{Mixlib::Install::VERSION}} user_agents << headers # Ensure that if the default user agent is already set it doesn't get duplicated user_agents.flatten.compact.uniq.join(" ") end |
.wrap_command(cmd) ⇒ String
Generates a command (or series of commands) wrapped so that it can be invoked on a remote instance or locally.
This method uses the Bourne shell (/bin/sh) to maximize the chance of cross platform portability on Unix-like systems.
116 117 118 119 120 121 122 |
# File 'lib/mixlib/install/util.rb', line 116 def wrap_command(cmd) cmd = "false" if cmd.nil? cmd = "true" if cmd.to_s.empty? cmd = cmd.sub(/\n\Z/, "") if cmd =~ /\n\Z/ "sh -c '\n#{cmd}\n'" end |
.wrap_shell(code, powershell = false, opts = {}) ⇒ String
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Wraps a body of shell code with common context appropriate for the type of shell.
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
# File 'lib/mixlib/install/util.rb', line 59 def wrap_shell(code, powershell = false, opts = {}) env = [] if opts[:http_proxy] env << Util.shell_env_var("http_proxy", opts[:http_proxy], powershell) env << Util.shell_env_var("HTTP_PROXY", opts[:http_proxy], powershell) end if opts[:https_proxy] env << Util.shell_env_var("https_proxy", opts[:https_proxy], powershell) env << Util.shell_env_var("HTTPS_PROXY", opts[:https_proxy], powershell) end unless env.empty? code = env.join("\n").concat("\n").concat(code) end if powershell "\n" + code else Util.wrap_command(code) end end |