Module: OAR::Scripting

Included in:
Application::Graph
Defined in:
lib/oar/scripting.rb,
lib/oar/scripting/constants.rb

Defined Under Namespace

Classes: Application, Config, Epilogue, Prologue, Script

Constant Summary collapse

GEM =
"oar-scripting"
VERSION =
"1.1.0"

Instance Method Summary collapse

Instance Method Details

#jobObject

def

step(name)



54
55
56
# File 'lib/oar/scripting.rb', line 54

def job
  Script.job
end

#oarstatObject

def

job



58
59
60
# File 'lib/oar/scripting.rb', line 58

def oarstat
  Script.oarstat
end

#sh(cmd, options = {}) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/oar/scripting.rb', line 14

def sh(cmd, options = {})
  options = options.symbolize_keys
  options[:stderr] ||= true
  cmd += options[:stderr] == false ? " 2>/dev/null" : " 2>&1"
  result = ""
  Script.logger.info "[command] " + cmd
  IO.popen(cmd) do |io|
    result = io.read.strip
    Script.logger.debug "[result]\n" + result
  end
  $? != 0 ? Script.logger.debug("[command_failure]") : Script.logger.debug("[command_success]")
  result if options[:return]
end

#step(name, *args, &block) ⇒ Object

def

sh(cmd)

Raises:

  • (ArgumentError)


28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/oar/scripting.rb', line 28

def step(name, *args, &block)
  step = Hash.new
  raise(ArgumentError, "Step name must be a symbol") unless name.kind_of?(Symbol)
  if Script.disabled_steps.include? name
    Script.logger.info "[disable_step]#{name}"
    return
  end
  step = args.first unless args.first.nil?
  step[:name] = name
  step[:order] ||= OAR::Scripting::Config[:default_step_order]
  step[:continue] ||= true
  step[:proc] = block
  pre_step = Script.steps.select { |a| a[:name] == name }
  unless pre_step.empty?
    if step[:overwrite]
      Script.logger.info "[step_overwrites] replace #{pre_step.first.inspect} by #{step.inspect}"
      Script.steps.delete pre_step.first
      Script.steps << step
    else
      Script.logger.info "[step_already_defined] skip #{step.inspect}"
    end
  else
    Script.steps << step
  end
end