module Licensed::Shell
Constants
- ENCODING
- ENCODING_OPTIONS
Public Class Methods
execute(cmd, *args, allow_failure: false, env: {})
click to toggle source
Executes a command, returning its standard output on success. On failure it raises an exception that contains the error output, unless ‘allow_failure` is true.
# File lib/licensed/shell.rb, line 9 def self.execute(cmd, *args, allow_failure: false, env: {}) stdout, stderr, status = Open3.capture3(env, cmd, *args) if !status.success? && !allow_failure raise Error.new([cmd, *args], status.exitstatus, encode_content(stderr)) end # ensure that returned data is properly encoded encode_content(stdout.strip) end
success?(cmd, *args)
click to toggle source
Executes a command and returns a boolean value indicating if the command was succesful
# File lib/licensed/shell.rb, line 22 def self.success?(cmd, *args) _, _, status = Open3.capture3(cmd, *args) status.success? end
tool_available?(tool)
click to toggle source
Returns a boolean indicating whether a CLI
tool is available in the current environment
# File lib/licensed/shell.rb, line 29 def self.tool_available?(tool) output, err, status = Open3.capture3("which", tool) status.success? && !output.strip.empty? && err.strip.empty? end
Private Class Methods
encode_content(content)
click to toggle source
Ensure that content that is returned from shell commands is in a usable encoding for the rest of the application
# File lib/licensed/shell.rb, line 72 def self.encode_content(content) content.encode(ENCODING, **ENCODING_OPTIONS) end