Module: Mrsk::Utils

Extended by:
Utils
Included in:
Utils
Defined in:
lib/mrsk/utils.rb

Instance Method Summary collapse

Instance Method Details

#argumentize(argument, attributes, redacted: false) ⇒ Object

Return a list of escaped shell arguments using the same named argument against the passed attributes (hash or array).



5
6
7
8
9
10
11
12
13
14
# File 'lib/mrsk/utils.rb', line 5

def argumentize(argument, attributes, redacted: false)
  Array(attributes).flat_map do |key, value|
    if value.present?
      escaped_pair = [ key, value.to_s.dump.gsub(/`/, '\\\\`') ].join("=")
      [ argument, redacted ? redact(escaped_pair) : escaped_pair ]
    else
      [ argument, key ]
    end
  end
end

#argumentize_env_with_secrets(env) ⇒ Object

Return a list of shell arguments using the same named argument against the passed attributes, but redacts and expands secrets.



18
19
20
21
22
23
24
# File 'lib/mrsk/utils.rb', line 18

def argumentize_env_with_secrets(env)
  if (secrets = env["secret"]).present?
    argumentize("-e", secrets.to_h { |key| [ key, ENV.fetch(key) ] }, redacted: true) + argumentize("-e", env["clear"])
  else
    argumentize "-e", env.fetch("clear", env)
  end
end

#redact(arg) ⇒ Object

Copied from SSHKit::Backend::Abstract#redact to be available inside Commands classes



27
28
29
# File 'lib/mrsk/utils.rb', line 27

def redact(arg) # Used in execute_command to hide redact() args a user passes in
  arg.to_s.extend(SSHKit::Redaction) # to_s due to our inability to extend Integer, etc
end