Class: SharedTools::Tools::Docker::ComposeRunTool

Inherits:
RubyLLM::Tool
  • Object
show all
Defined in:
lib/shared_tools/tools/docker/compose_run_tool.rb

Overview

Examples:

tool = SharedTools::Tools::Docker::ComposeRunTool.new
tool.execute(service: "app", command: "rspec", args: ["spec/main_spec.rb"])

Defined Under Namespace

Classes: CaptureError

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(root: nil, logger: nil) ⇒ ComposeRunTool

Returns a new instance of ComposeRunTool.

Parameters:

  • root (String, Pathname) (defaults to: nil)

    optional, defaults to current directory

  • logger (Logger) (defaults to: nil)

    optional logger



41
42
43
44
# File 'lib/shared_tools/tools/docker/compose_run_tool.rb', line 41

def initialize(root: nil, logger: nil)
  @root = root || Dir.pwd
  @logger = logger || RubyLLM.logger
end

Class Method Details

.nameObject



12
# File 'lib/shared_tools/tools/docker/compose_run_tool.rb', line 12

def self.name = 'docker_compose_run'

Instance Method Details

#execute(command:, service: "app", args: []) ⇒ String

Parameters:

  • service (String) (defaults to: "app")
  • command (String)
  • args (Array<String>) (defaults to: [])

Returns:

  • (String)


51
52
53
54
55
56
57
58
59
60
# File 'lib/shared_tools/tools/docker/compose_run_tool.rb', line 51

def execute(command:, service: "app", args: [])
  @logger.info(%(#{self.class.name}#execute service="#{service}" command="#{command}" args=#{args.inspect}))

  Dir.chdir(@root) do
    capture!("docker", "compose", "run", "--build", "--rm", service, command, *args)
  rescue CaptureError => e
    @logger.info("ERROR: #{e.message}")
    return "ERROR: #{e.message}"
  end
end