class RBCM::Action

Attributes

applied[RW]
approved[RW]
chain[R]
check[R]
dependencies[R]
job[R]
line[R]
obsolete[R]
path[R]
result[R]
source[R]
state[R]
tags[R]
trigger[R]
triggered[R]
triggered_by[R]
working_dir[R]

Public Class Methods

new(job:, params: nil, line: nil, check: nil, dependencies: nil, state: @job = job) click to toggle source
# File app/action/action.rb, line 7
def initialize job:, params: nil, line: nil, check: nil,
               dependencies: nil, state:
  @job = job
  @triggered = []
  @obsolete = nil
  @approved = nil
  # command specific
  @line = line
  # file specific
  @params = params
  @path = params.first if job.capability.name == :file
  # extract state
  [:chain, :trigger, :triggered_by, :check, :source, :tags, :working_dirs].each do |key|
    instance_variable_set "@#{key}", state[key]
  end
  @working_dir = @working_dirs.last
  @dependencies = [:file] + [dependencies].flatten - [@chain.last]
end

Public Instance Methods

applied?() click to toggle source
# File app/action/action.rb, line 59
def applied?
  @applied
end
applyable?() click to toggle source
# File app/action/action.rb, line 49
def applyable?
  approved? and not applied?
end
approvable?() click to toggle source
# File app/action/action.rb, line 45
def approvable?
  neccessary? and triggered? and approved? == nil
end
approve!(input=:y) click to toggle source
# File app/action/action.rb, line 72
def approve! input=:y
  if [:a, :y].include? input
    @job.node.files[@path].content = content if self.class == RBCM::Action::File
    @approved = true
    siblings.each.approve! if input == :a
    @job.node.triggered << @trigger
    @triggered = @trigger.compact - @job.node.triggered
  else
    @approved = false
  end
end
approved?() click to toggle source
# File app/action/action.rb, line 41
def approved?
  @approved
end
checkable?() click to toggle source
# File app/action/action.rb, line 32
def checkable?
  @check.any? or self.class == RBCM::Action::File
end
failed?() click to toggle source
# File app/action/action.rb, line 68
def failed?
  @result.exitstatus != 0
end
neccessary?() click to toggle source
# File app/action/action.rb, line 36
def neccessary?
  check!
  not obsolete
end
project_file() click to toggle source
# File app/action/action.rb, line 26
def project_file
  @chain.reverse.find{ |element|
    defined?(element.project_file) and element.project_file
  }.project_file
end
succeeded?() click to toggle source
# File app/action/action.rb, line 63
def succeeded?
  pp self.chain unless @result
  @result.exitstatus == 0
end
triggered?() click to toggle source
# File app/action/action.rb, line 53
def triggered?
  triggered_by.empty? or triggered_by.one?{ |triggered_by|
    @job.node.triggered.flatten.include? triggered_by
  }
end