module Licensed::Shell
Constants
- ENCODING
- ENCODING_OPTIONS
Public Class Methods
Source
# File lib/licensed/shell.rb, line 72 def self.encode_content(content) content.encode(ENCODING, **ENCODING_OPTIONS) end
Ensure that content that is returned from shell commands is in a usable encoding for the rest of the application
Source
# 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
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.
Source
# File lib/licensed/shell.rb, line 22 def self.success?(cmd, *args) _, _, status = Open3.capture3(cmd, *args) status.success? end
Executes a command and returns a boolean value indicating if the command was succesful
Source
# 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
Returns a boolean indicating whether a CLI
tool is available in the current environment