82 lines
2.0 KiB
Go
82 lines
2.0 KiB
Go
package config
|
|
|
|
import "flag"
|
|
|
|
type stringSlice []string
|
|
|
|
func (s *stringSlice) String() string {
|
|
if s == nil {
|
|
return ""
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (s *stringSlice) Set(value string) error {
|
|
*s = append(*s, value)
|
|
return nil
|
|
}
|
|
|
|
func parseFlags(args []string) (flagValues, error) {
|
|
fv := flagValues{}
|
|
|
|
fs := flag.NewFlagSet("aicli", flag.ContinueOnError)
|
|
fs.Usage = printUsage
|
|
|
|
var files stringSlice
|
|
var prompts stringSlice
|
|
|
|
// Input flags
|
|
fs.Var(&files, "f", "")
|
|
fs.Var(&files, "file", "")
|
|
fs.Var(&prompts, "p", "")
|
|
fs.Var(&prompts, "prompt", "")
|
|
fs.StringVar(&fv.promptFile, "pf", "", "")
|
|
fs.StringVar(&fv.promptFile, "prompt-file", "", "")
|
|
|
|
// System flags
|
|
fs.StringVar(&fv.system, "s", "", "")
|
|
fs.StringVar(&fv.system, "system", "", "")
|
|
fs.StringVar(&fv.systemFile, "sf", "", "")
|
|
fs.StringVar(&fv.systemFile, "system-file", "", "")
|
|
|
|
// API flags
|
|
fs.StringVar(&fv.key, "k", "", "")
|
|
fs.StringVar(&fv.key, "key", "", "")
|
|
fs.StringVar(&fv.keyFile, "kf", "", "")
|
|
fs.StringVar(&fv.keyFile, "key-file", "", "")
|
|
fs.StringVar(&fv.protocol, "l", "", "")
|
|
fs.StringVar(&fv.protocol, "protocol", "", "")
|
|
fs.StringVar(&fv.url, "u", "", "")
|
|
fs.StringVar(&fv.url, "url", "", "")
|
|
|
|
// Model flags
|
|
fs.StringVar(&fv.model, "m", "", "")
|
|
fs.StringVar(&fv.model, "model", "", "")
|
|
fs.StringVar(&fv.fallback, "b", "", "")
|
|
fs.StringVar(&fv.fallback, "fallback", "", "")
|
|
|
|
// Output flags
|
|
fs.StringVar(&fv.output, "o", "", "")
|
|
fs.StringVar(&fv.output, "output", "", "")
|
|
fs.StringVar(&fv.config, "c", "", "")
|
|
fs.StringVar(&fv.config, "config", "", "")
|
|
|
|
// Boolean flags
|
|
fs.BoolVar(&fv.stdinFile, "F", false, "")
|
|
fs.BoolVar(&fv.stdinFile, "stdin-file", false, "")
|
|
fs.BoolVar(&fv.quiet, "q", false, "")
|
|
fs.BoolVar(&fv.quiet, "quiet", false, "")
|
|
fs.BoolVar(&fv.verbose, "v", false, "")
|
|
fs.BoolVar(&fv.verbose, "verbose", false, "")
|
|
fs.BoolVar(&fv.version, "version", false, "")
|
|
|
|
if err := fs.Parse(args); err != nil {
|
|
return flagValues{}, err
|
|
}
|
|
|
|
fv.files = files
|
|
fv.prompts = prompts
|
|
|
|
return fv, nil
|
|
}
|