Module: AIGit

Defined in:
lib/ai_git.rb,
lib/ai_git/ui.rb,
lib/ai_git/git.rb,
lib/ai_git/config.rb,
lib/ai_git/version.rb,
lib/ai_git/ai_client.rb,
lib/ai_git/commands/config.rb,
lib/ai_git/commands/default.rb

Defined Under Namespace

Modules: AIClient, Commands, Config, Git, UI

Constant Summary collapse

SUBCOMMANDS =
{
  "config" => AIGit::Commands::Config,
  "default" => AIGit::Commands::Default
}.freeze
HELP_FLAGS =
%w[-h --help help].freeze
VERSION_FLAGS =
%w[-v --version].freeze
USAGE =
<<~USAGE
  Usage: ai_git [subcommand]

  Subcommands:
    (none)    Generate a commit message, commit, and push staged files
    config    Show the resolved provider configuration

  Flags:
    -h, --help     Show this message
    -v, --version  Print version

  Environment variables:
    AI_GIT_MODEL_NAME    Override the default model
    AI_GIT_BASE_URL      Override the default base URL
    NO_COLOR             Disable colored output
USAGE
VERSION =
"0.3.0"

Class Method Summary collapse

Class Method Details

.start(args) ⇒ Object



39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/ai_git.rb', line 39

def start(args)
  args = args.dup
  first = args.first

  return puts(USAGE) if first && HELP_FLAGS.include?(first)
  return puts(VERSION) if first && VERSION_FLAGS.include?(first)

  command = "default"
  if first && !first.start_with?("-")
    unless SUBCOMMANDS.key?(first)
      warn "Unknown subcommand: #{first}"
      warn USAGE
      exit 1
    end
    command = args.shift
  end

  SUBCOMMANDS[command].call(args)
end