Sha256: 65a9f5759a070b6a792b34f6be6233d87e4c7584b98e29f3e5cd2ecc7d3499b5
Contents?: true
Size: 1.59 KB
Versions: 9
Compression:
Stored size: 1.59 KB
Contents
# frozen_string_literal: true require 'optparse' module OmniAI # Used when interacting with the suite from the command line interface (CLI). # # Usage: # # cli = OmniAI::CLI.new # cli.parse class CLI ChatArgs = Struct.new(:provider, :model, :temperature) # @param stdin [IO] a stream # @param stdout [IO] a stream # @param provider [String] a provider def initialize(stdin: $stdin, stdout: $stdout, provider: 'openai') @stdin = stdin @stdout = stdout @provider = provider @args = {} end # @param argv [Array<String>] def parse(argv = ARGV) parser.order!(argv) command = argv.shift return if command.nil? handler = case command when 'chat' then ChatHandler when 'embed' then EmbedHandler else raise Error, "unsupported command=#{command.inspect}" end handler.handle!(stdin: @stdin, stdout: @stdout, provider: @provider, argv:) end private # @return [OptionParser] def parser OptionParser.new do |options| options.banner = 'usage: omniai [options] <command> [<args>]' options.on('-h', '--help', 'help') do @stdout.puts(options) exit end options.on('-v', '--version', 'version') do @stdout.puts(VERSION) exit end options.on('-p', '--provider=PROVIDER', 'provider (default="openai")') do |provider| @provider = provider end options.separator <<~COMMANDS commands: chat COMMANDS end end end end
Version data entries
9 entries across 9 versions & 1 rubygems