class Grably::Job::Manifest

Manifest file with job data. Manifest keeps information about previous run including passed arguments and output file digests

Constants

MANIFEST

Manifest file location relative to jobdir

Attributes

manifest_file[R]

Public Class Methods

new(job_dir) click to toggle source
# File lib/grably/job/manifest.rb, line 14
def initialize(job_dir)
  @job_dir = job_dir
  @data = OpenStruct.new(src: {}, srcs: {}, opt: {}, result: nil, meta: {})
  @manifest_file = File.join(job_dir, MANIFEST)
end

Public Instance Methods

dump() click to toggle source
# File lib/grably/job/manifest.rb, line 58
def dump
  save_obj(manifest_file, @data)
end
load() click to toggle source
# File lib/grably/job/manifest.rb, line 54
def load
  @data = load_obj(manifest_file) if File.exist?(manifest_file)
end
meta() click to toggle source
# File lib/grably/job/manifest.rb, line 46
def meta
  @data.meta
end
remove() click to toggle source
# File lib/grably/job/manifest.rb, line 62
def remove
  FileUtils.rm_f(manifest_file)
end
result() click to toggle source
# File lib/grably/job/manifest.rb, line 50
def result
  @data.result.first
end
result=(products) click to toggle source
# File lib/grably/job/manifest.rb, line 41
def result=(products)
  digests = Grably::Digest.digest(*products)
  @data.result = [products, digests]
end
update(name, type, value, update_hook) click to toggle source
# File lib/grably/job/manifest.rb, line 20
def update(name, type, value, update_hook) # rubocop:disable Metrics/MethodLength,  Metrics/AbcSize
  case type
  when :src
    old_value, old_digest = @data.src[name]
    new_digest = Grably::Digest.digest(value).first
  when :srcs
    old_value, old_digest = @data.srcs[name]
    new_digest = Grably::Digest.digest(*value)
  when :opt
    old_value, _old_digest = @data.opt[name]
    old_digest = nil
    new_digest = nil
  else
    raise ArgumentError, 'Invalid type: ' + type
  end

  @data.send(type)[name] = [value, new_digest]
  update_hook.call(name, type, old_value, old_digest, value, new_digest)
  [old_value, old_digest]
end