Class: Inspec::Resources::Cmd
- Inherits:
-
Object
- Object
- Inspec::Resources::Cmd
- Defined in:
- lib/inspec/resources/command.rb
Direct Known Subclasses
Instance Attribute Summary collapse
-
#command ⇒ Object
readonly
Returns the value of attribute command.
Instance Method Summary collapse
-
#exist? ⇒ Boolean
rubocop:disable Metrics/AbcSize.
- #exit_status ⇒ Object
-
#initialize(cmd, options = {}) ⇒ Cmd
constructor
A new instance of Cmd.
- #result ⇒ Object
- #stderr ⇒ Object
- #stdout ⇒ Object
- #to_s ⇒ Object
Constructor Details
#initialize(cmd, options = {}) ⇒ Cmd
Returns a new instance of Cmd.
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/inspec/resources/command.rb', line 28 def initialize(cmd, = {}) if cmd.nil? raise "InSpec `command` was called with `nil` as the argument. This is not supported. Please provide a valid command instead." end @command = cmd if [:redact_regex] unless [:redact_regex].is_a?(Regexp) # Make sure command is replaced so sensitive output isn't shown @command = "ERROR" raise Inspec::Exceptions::ResourceFailed, "The `redact_regex` option must be a regular expression" end @redact_regex = [:redact_regex] end end |
Instance Attribute Details
#command ⇒ Object (readonly)
Returns the value of attribute command.
26 27 28 |
# File 'lib/inspec/resources/command.rb', line 26 def command @command end |
Instance Method Details
#exist? ⇒ Boolean
rubocop:disable Metrics/AbcSize
62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
# File 'lib/inspec/resources/command.rb', line 62 def exist? # rubocop:disable Metrics/AbcSize # silent for mock resources return false if inspec.os.name.nil? || inspec.os.name == "mock" if inspec.os.linux? res = if inspec.platform.name == "alpine" inspec.backend.run_command("which \"#{@command}\"") else inspec.backend.run_command("bash -c 'type \"#{@command}\"'") end elsif inspec.os.windows? res = inspec.backend.run_command("Get-Command \"#{@command}\"") elsif inspec.os.unix? res = inspec.backend.run_command("type \"#{@command}\"") else warn "`command(#{@command}).exist?` is not supported on your OS: #{inspec.os[:name]}" return false end res.exit_status.to_i == 0 end |
#exit_status ⇒ Object
58 59 60 |
# File 'lib/inspec/resources/command.rb', line 58 def exit_status result.exit_status.to_i end |
#result ⇒ Object
46 47 48 |
# File 'lib/inspec/resources/command.rb', line 46 def result @result ||= inspec.backend.run_command(@command) end |
#stderr ⇒ Object
54 55 56 |
# File 'lib/inspec/resources/command.rb', line 54 def stderr result.stderr end |
#stdout ⇒ Object
50 51 52 |
# File 'lib/inspec/resources/command.rb', line 50 def stdout result.stdout end |
#to_s ⇒ Object
83 84 85 86 87 88 89 |
# File 'lib/inspec/resources/command.rb', line 83 def to_s output = "Command: `#{@command}`" # Redact output if the `redact_regex` option is passed # If no capture groups are passed then `\1` and `\2` are ignored output.gsub!(@redact_regex, '\1REDACTED\2') unless @redact_regex.nil? output end |