Sha256: 5d56d06e83431484ca5a4c65011db31fd8ef0776a9ae5544867a782f3bfa5aab

Contents?: true

Size: 1.27 KB

Versions: 2

Compression:

Stored size: 1.27 KB

Contents

# frozen_string_literal: true

module Ad
  module AgentArchitecture
    module Dsl
      # This class is responsible for defining the agent DSL
      class AgentDsl
        attr_reader :workflow

        def self.create(name:, &block)
          new(name).tap do |dsl|
            dsl.instance_eval(&block) if block_given?
          end
        end

        def initialize(name)
          @workflow = WorkflowDsl.new(name)
        end

        def attributes(&block)
          @workflow.attributes(&block)
        end

        def prompts(&block)
          @workflow.prompts(&block)
        end

        def section(name:, &block)
          @workflow.section(name: name, &block)
        end

        def save
          Ad::AgentArchitecture::Dsl::Actions::SaveDatabase.new(@workflow.workflow).save

          self
        end

        def save_json(file_name = nil)
          full_file_name = file_name || 'workflow.json'
          Ad::AgentArchitecture::Dsl::Actions::SaveJson.new(@workflow.workflow).save(full_file_name)

          self
        end

        def save_yaml(file_name = nil)
          full_file_name = file_name || 'workflow.yaml'
          Ad::AgentArchitecture::Dsl::Actions::SaveYaml.new(@workflow.workflow).save(full_file_name)

          self
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
ad-agent_architecture-0.0.11 lib/ad/agent_architecture/dsl/agent_dsl.rb
ad-agent_architecture-0.0.10 lib/ad/agent_architecture/dsl/agent_dsl.rb