Sha256: 6f12458e5a1273cac79bbad99e5a981802232fe400465dd6e129e8115d797a86

Contents?: true

Size: 827 Bytes

Versions: 6

Compression:

Stored size: 827 Bytes

Contents

module Shipit
  class TaskDefinition
    NotFound = Class.new(StandardError)

    class << self
      def load(payload)
        return unless payload.present?
        json = JSON.parse(payload)
        new(json.delete('id'), json)
      end

      def dump(definition)
        return unless definition.present?
        JSON.dump(definition.as_json)
      end
    end

    attr_reader :id, :action, :description, :steps, :checklist

    def initialize(id, config)
      @id = id
      @action = config['action']
      @description = config['description'] || ''
      @steps = config['steps'] || []
      @checklist = config['checklist'] || []
    end

    def as_json
      {
        id: id,
        action: action,
        description: description,
        steps: steps,
        checklist: checklist,
      }
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
shipit-engine-0.7.0 app/models/shipit/task_definition.rb
shipit-engine-0.6.4 app/models/shipit/task_definition.rb
shipit-engine-0.6.3 app/models/shipit/task_definition.rb
shipit-engine-0.6.2 app/models/shipit/task_definition.rb
shipit-engine-0.6.1 app/models/shipit/task_definition.rb
shipit-engine-0.6.0 app/models/shipit/task_definition.rb