lib/ollama/client/command.rb
module Ollama::Client::Command extend Tins::Concern module ClassMethods # Create Command +name+, if +stream+ was true, set stream_handler as # default, otherwise default_handler. def command(name, default_handler:, stream_handler: nil) klass = Ollama::Commands.const_get(name.to_s.camelize) doc Ollama::Client::Doc.new(name) define_method(name) do |**parameters, &handler| instance = klass.new(**parameters) instance.client = self unless handler instance.stream and stream_handler and handler ||= stream_handler handler ||= default_handler end handler.is_a?(Class) and handler = handler.new instance.perform(handler) handler.result if handler.respond_to?(:result) end self end end end