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

Version Path
omniai-1.9.2 lib/omniai/cli.rb
omniai-1.9.1 lib/omniai/cli.rb
omniai-1.9.0 lib/omniai/cli.rb
omniai-1.8.4 lib/omniai/cli.rb
omniai-1.8.3 lib/omniai/cli.rb
omniai-1.8.2 lib/omniai/cli.rb
omniai-1.8.1 lib/omniai/cli.rb
omniai-1.8.0 lib/omniai/cli.rb
omniai-1.7.0 lib/omniai/cli.rb