Module: Patir::Command

Included in:
RubyCommand, ShellCommand
Defined in:
lib/patir/command.rb

Overview

This module defines the interface for a Command object.

It more or less serves the purpose of documenting the interface/contract expected by a class that executes commands and returns their output and exit status.

There is also that bit of functionality that facilitates grouping multiple commands into command sequences

The various methods initialize member variables with meaningful values where needed.

Using the contract means implementing the Command#run method. This method should then set the output, exec_time and status values according to the implementation.

Take a look at ShellCommand and RubyCommand for a couple of practical examples.

It is a good idea to rescue all exceptions. You can then set error to return the exception message.

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#errorObject

returns the error output for the command



40
41
42
43
44
# File 'lib/patir/command.rb', line 40

def error
  #initialize nil values to something meaningful
  @error||=""
  return @error
end

#exec_timeObject

returns the execution time (duration) for the command



46
47
48
49
50
# File 'lib/patir/command.rb', line 46

def exec_time
  #initialize nil values to something meaningful
  @exec_time||=0
  return @exec_time
end

#nameObject

returns the commands alias/name



28
29
30
31
32
# File 'lib/patir/command.rb', line 28

def name
  #initialize nil values to something meaningful
  @name||=""
  return @name
end

#numberObject

Returns the value of attribute number.



26
27
28
# File 'lib/patir/command.rb', line 26

def number
  @number
end

#outputObject

returns the output of the command



34
35
36
37
38
# File 'lib/patir/command.rb', line 34

def output
  #initialize nil values to something meaningful
  @output||=""
  return @output
end

#statusObject

returns the command status.

valid stati are

:not_executed when the command was not run

:success when the command has finished succesfully

:error when the command has an error

:warning when the command finished without errors, but there where warnings



94
95
96
97
98
# File 'lib/patir/command.rb', line 94

def status
  #initialize nil values to something meaningful
  @status||=:not_executed
  return @status
end

#strategyObject

Returns the value of attribute strategy.



26
27
28
# File 'lib/patir/command.rb', line 26

def strategy
  @strategy
end

Instance Method Details

#executed?Boolean

returns false if the command has not been run

Returns:

  • (Boolean)


79
80
81
82
# File 'lib/patir/command.rb', line 79

def executed?
  return false if self.status==:not_executed
  return true
end

#resetObject

clears the status and output of the command.

Call this if you want to pretend that it was never executed



72
73
74
75
76
77
# File 'lib/patir/command.rb', line 72

def reset
  @exec_time=0
  @output=""
  @error=""
  @status=:not_executed
end

#runObject

executes the command and returns the status of the command.

overwrite this method in classes that include Command



65
66
67
68
# File 'lib/patir/command.rb', line 65

def run
  @status=:success
  return self.status
end

#run?Boolean

returns true if the command has been executed

Returns:

  • (Boolean)


57
58
59
60
61
# File 'lib/patir/command.rb', line 57

def run?
  #use the accessor, because it initializes nil values
  return false if self.status==:not_executed
  return true
end

#success?Boolean

returns true if the command has finished succesfully

Returns:

  • (Boolean)


52
53
54
55
# File 'lib/patir/command.rb', line 52

def success?
  return true if self.status==:success
  return false
end