Class: Dpl::Cmd

Inherits:
Struct
  • Object
show all
Defined in:
lib/dpl/helper/cmd.rb

Overview

Represents a shell command

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#keyObject

Returns the value of attribute key

Returns:

  • (Object)

    the current value of key



5
6
7
# File 'lib/dpl/helper/cmd.rb', line 5

def key
  @key
end

#optsObject

Returns the value of attribute opts

Returns:

  • (Object)

    the current value of opts



5
6
7
# File 'lib/dpl/helper/cmd.rb', line 5

def opts
  @opts
end

#providerObject

Returns the value of attribute provider

Returns:

  • (Object)

    the current value of provider



5
6
7
# File 'lib/dpl/helper/cmd.rb', line 5

def provider
  @provider
end

Instance Method Details

#assert?Boolean

Whether or not to assert that the command has exited with 0

Returns true if the option assert was given as true or not given at all. Returns false if the option assert was given as false.

Returns:

  • (Boolean)


76
77
78
# File 'lib/dpl/helper/cmd.rb', line 76

def assert?
  !opts[:assert].is_a?(FalseClass)
end

#capture?Boolean

Whether or not to capture the commands stdout and stderr

Returns true if the option capture was given as true. Returns false if the option capture was given as false or not given.

Returns:

  • (Boolean)


92
93
94
# File 'lib/dpl/helper/cmd.rb', line 92

def capture?
  !!opts[:capture]
end

#cmd(secure = true) ⇒ Object

Returns the shell command string

If a Symbol was passed as a command then the command will be looked up from the provider class’ cmds declaration.

The command will be interpolated, and can include secrets. See Dpl::Interpolate for details on interpolating variables.

If the option silence was passed then stdout and stderr will be redirected to /dev/null.

If the option python was passed then the virtualenv with the given Python version will be activated before executing the command.



19
20
21
22
23
24
25
# File 'lib/dpl/helper/cmd.rb', line 19

def cmd(secure = true)
  cmd = lookup(:cmd, key) || missing(:cmd, key)
  cmd = interpolate(cmd, opts, secure: secure).strip
  cmd = silence(cmd) if silence?
  cmd = python(cmd) if python?
  cmd
end

#echoObject

Returns a log message version of the command string

This is the same as #cmd, except that included secrets will be obfuscated, and a prompt (dollar and space) will be prepended. See Dpl::Interpolate for details on interpolating variables.



32
33
34
# File 'lib/dpl/helper/cmd.rb', line 32

def echo
  "$ #{cmd(false)}"
end

#echo?Boolean

Whether or not to announce the command with an info level log message

Returns true if the option assert was given as true or not given at all. Returns false if the option assert was given as false.

Returns:

  • (Boolean)


84
85
86
# File 'lib/dpl/helper/cmd.rb', line 84

def echo?
  !opts[:echo].is_a?(FalseClass)
end

#errorObject

Returns the log message for a failed command

The message string will be interpolated, but included secrets will be obfuscated. See Dpl::Interpolate for details on interpolating variables.

If the option assert was given as a String then it will be used. If the option assert was given as a Symbol then it will be looked up from the provider class’ errs declaration. If the command was given as a Symbol, and it can be found in errs then this String will be used.



66
67
68
69
70
# File 'lib/dpl/helper/cmd.rb', line 66

def error
  keys = [opts[:assert], key]
  err = lookup(:err, *keys)
  err ? interpolate(err, opts).strip : 'Failed'
end

#infoObject

Returns the log message to output after the command has succeeded



105
106
107
# File 'lib/dpl/helper/cmd.rb', line 105

def info
  opts[:info]
end

#info?Boolean

Whether or not to output a log message before the command is run

Returns true if the option info was given. Returns false if the option info was given as false or not given.

Returns:

  • (Boolean)


100
101
102
# File 'lib/dpl/helper/cmd.rb', line 100

def info?
  !!opts[:info]
end

#msgObject

Returns the log message for announcing a command

If the option msg was given as a String then it will be used. If the option msg was given as a Symbol then it will be looked up from the provider class’ msgs declaration.

The message string will be interpolated, but included secrets will be obfuscated. See Dpl::Interpolate for details on interpolating variables.



45
46
47
48
49
50
# File 'lib/dpl/helper/cmd.rb', line 45

def msg
  msg = lookup(:msg, opts[:msg], key.is_a?(Symbol) ? key : nil)
  msg || missing(:msg, opts[:msg], key)
  msg = interpolate(msg, opts, secure: false).strip
  msg
end

#msg?Boolean

Returns:

  • (Boolean)


52
53
54
# File 'lib/dpl/helper/cmd.rb', line 52

def msg?
  !!lookup(:msg, opts[:msg], key.is_a?(Symbol) ? key : nil)
end

#python?Boolean

Whether or not to activate a Python virtualenv before executing the command

Returns true if the option python was given. Returns false if the option python was given as false or not given.

Returns:

  • (Boolean)


127
128
129
# File 'lib/dpl/helper/cmd.rb', line 127

def python?
  !!opts[:python]
end

#retryObject

Returns how often to retry the command



132
133
134
# File 'lib/dpl/helper/cmd.rb', line 132

def retry
  opts[:retry]
end

#silence?Boolean

Whether or not to redirect the command’s stdout and stderr to /dev/null

Returns true if the option silence was given. Returns false if the option silence was given as false or not given.

Returns:

  • (Boolean)


140
141
142
# File 'lib/dpl/helper/cmd.rb', line 140

def silence?
  !!opts[:silence]
end

#successObject

Returns the log message to output after the command has succeeded



118
119
120
# File 'lib/dpl/helper/cmd.rb', line 118

def success
  opts[:success]
end

#success?Boolean

Whether or not to output a log message after the command has succeeded

Returns true if the option success was given. Returns false if the option success was given as false or not given.

Returns:

  • (Boolean)


113
114
115
# File 'lib/dpl/helper/cmd.rb', line 113

def success?
  !!opts[:success]
end