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