122 lines
5.1 KiB
Go
122 lines
5.1 KiB
Go
package cli
|
|
|
|
import (
|
|
"flag"
|
|
|
|
"gitea.maximumdirect.net/eric/audita/internal/core/config"
|
|
)
|
|
|
|
type processOverrideBinding func(*config.CLIOverrides, processFlags)
|
|
|
|
var processOverrideBindings = map[string]processOverrideBinding{
|
|
"modules": func(overrides *config.CLIOverrides, flags processFlags) {
|
|
overrides.ModulesCSV = flags.modules
|
|
},
|
|
"output-schema": func(overrides *config.CLIOverrides, flags processFlags) {
|
|
overrides.OutputSchema = flags.outputSchema
|
|
},
|
|
"llm-api-key": func(overrides *config.CLIOverrides, flags processFlags) {
|
|
overrides.PrimaryLLMAPIKey = flags.llmAPIKey
|
|
},
|
|
"validation-llm-api-key": func(overrides *config.CLIOverrides, flags processFlags) {
|
|
overrides.ValidationLLMAPIKey = flags.validationLLMAPIKey
|
|
},
|
|
"model": func(overrides *config.CLIOverrides, flags processFlags) {
|
|
overrides.PrimaryModel = flags.model
|
|
},
|
|
"validation-model": func(overrides *config.CLIOverrides, flags processFlags) {
|
|
overrides.ValidationModel = flags.validationModel
|
|
},
|
|
"base-url": func(overrides *config.CLIOverrides, flags processFlags) {
|
|
overrides.PrimaryBaseURL = flags.baseURL
|
|
},
|
|
"validation-base-url": func(overrides *config.CLIOverrides, flags processFlags) {
|
|
overrides.ValidationBaseURL = flags.validationBaseURL
|
|
},
|
|
"llm-timeout-seconds": func(overrides *config.CLIOverrides, flags processFlags) {
|
|
overrides.PrimaryLLMTimeoutSeconds = flags.llmTimeoutSeconds
|
|
},
|
|
"total-llm-concurrency": func(overrides *config.CLIOverrides, flags processFlags) {
|
|
overrides.TotalLLMConcurrency = flags.totalLLMConcurrency
|
|
},
|
|
"proposal-llm-concurrency": func(overrides *config.CLIOverrides, flags processFlags) {
|
|
overrides.ProposalLLMConcurrency = flags.proposalLLMConcurrency
|
|
},
|
|
"llm-concurrency": func(overrides *config.CLIOverrides, flags processFlags) {
|
|
overrides.PrimaryLLMConcurrency = flags.llmConcurrency
|
|
},
|
|
"validation-llm-timeout-seconds": func(overrides *config.CLIOverrides, flags processFlags) {
|
|
overrides.ValidationLLMTimeoutSeconds = flags.validationLLMTimeoutSeconds
|
|
},
|
|
"max-retries": func(overrides *config.CLIOverrides, flags processFlags) {
|
|
overrides.MaxRetries = flags.maxRetries
|
|
},
|
|
"validation-max-retries": func(overrides *config.CLIOverrides, flags processFlags) {
|
|
overrides.ValidationMaxRetries = flags.validationMaxRetries
|
|
},
|
|
"validation-llm-concurrency": func(overrides *config.CLIOverrides, flags processFlags) {
|
|
overrides.ValidationLLMConcurrency = flags.validationLLMConcurrency
|
|
},
|
|
"validation-max-prompt-tokens": func(overrides *config.CLIOverrides, flags processFlags) {
|
|
overrides.ValidationMaxPromptTokens = flags.validationMaxPromptTokens
|
|
},
|
|
"max-section-tokens": func(overrides *config.CLIOverrides, flags processFlags) {
|
|
overrides.MaxSectionTokens = flags.maxSectionTokens
|
|
},
|
|
"min-section-tokens": func(overrides *config.CLIOverrides, flags processFlags) {
|
|
overrides.MinSectionTokens = flags.minSectionTokens
|
|
},
|
|
"target-sections": func(overrides *config.CLIOverrides, flags processFlags) {
|
|
overrides.TargetSections = flags.targetSections
|
|
},
|
|
"glossary-confidence-threshold": func(overrides *config.CLIOverrides, flags processFlags) {
|
|
overrides.GlossaryConfidenceThreshold = flags.glossaryConfidenceThreshold
|
|
},
|
|
"grammar-confidence-threshold": func(overrides *config.CLIOverrides, flags processFlags) {
|
|
overrides.GrammarConfidenceThreshold = flags.grammarConfidenceThreshold
|
|
},
|
|
"homophones-confidence-threshold": func(overrides *config.CLIOverrides, flags processFlags) {
|
|
overrides.HomophonesConfidenceThreshold = flags.homophonesConfidenceThreshold
|
|
},
|
|
"spoken-word-confidence-threshold": func(overrides *config.CLIOverrides, flags processFlags) {
|
|
overrides.SpokenWordConfidenceThreshold = flags.spokenWordConfidenceThreshold
|
|
},
|
|
"normalize-max-segment-gap": func(overrides *config.CLIOverrides, flags processFlags) {
|
|
overrides.NormalizeMaxSegmentGap = flags.normalizeMaxSegmentGap
|
|
},
|
|
"normalize-ellipsis-gap": func(overrides *config.CLIOverrides, flags processFlags) {
|
|
overrides.NormalizeEllipsisGap = flags.normalizeEllipsisGap
|
|
},
|
|
"normalize-max-segment-duration": func(overrides *config.CLIOverrides, flags processFlags) {
|
|
overrides.NormalizeMaxSegmentDuration = flags.normalizeMaxSegmentDuration
|
|
},
|
|
"normalize-max-segment-tokens": func(overrides *config.CLIOverrides, flags processFlags) {
|
|
overrides.NormalizeMaxSegmentTokens = flags.normalizeMaxSegmentTokens
|
|
},
|
|
"transcript-description": func(overrides *config.CLIOverrides, flags processFlags) {
|
|
overrides.TranscriptDescription = flags.transcriptDescription
|
|
},
|
|
"work-dir": func(overrides *config.CLIOverrides, flags processFlags) {
|
|
overrides.WorkDir = flags.workDir
|
|
},
|
|
"work-dir-retention": func(overrides *config.CLIOverrides, flags processFlags) {
|
|
overrides.WorkDirRetention = flags.workDirRetention
|
|
},
|
|
}
|
|
|
|
func processCLIOverrides(fs *flag.FlagSet, flags processFlags) (config.CLIOverrides, bool) {
|
|
overrides := config.CLIOverrides{}
|
|
explicitModules := false
|
|
fs.Visit(func(f *flag.Flag) {
|
|
if f.Name == "modules" {
|
|
explicitModules = true
|
|
}
|
|
binding, ok := processOverrideBindings[f.Name]
|
|
if !ok {
|
|
return
|
|
}
|
|
binding(&overrides, flags)
|
|
})
|
|
return overrides, explicitModules
|
|
}
|