Files
seriatim/internal/cli/merge.go
Eric Rakestraw f20f06db12
All checks were successful
ci/woodpecker/tag/release Pipeline was successful
Bugfixes and documentation cleanup for v1.0 release.
2026-05-01 11:30:29 -05:00

47 lines
2.0 KiB
Go

package cli
import (
"github.com/spf13/cobra"
"gitea.maximumdirect.net/eric/seriatim/internal/builtin"
"gitea.maximumdirect.net/eric/seriatim/internal/config"
"gitea.maximumdirect.net/eric/seriatim/internal/pipeline"
)
func newMergeCommand() *cobra.Command {
var opts config.MergeOptions
cmd := &cobra.Command{
Use: "merge",
Short: "Run the transcript merge pipeline",
RunE: func(cmd *cobra.Command, args []string) error {
mergeOpts := opts
if !cmd.Flags().Changed("output-schema") {
mergeOpts.OutputSchema = ""
}
cfg, err := config.NewMergeConfig(mergeOpts)
if err != nil {
return err
}
return pipeline.Run(cmd.Context(), cfg, builtin.NewRegistry())
},
}
flags := cmd.Flags()
flags.StringArrayVar(&opts.InputFiles, "input-file", nil, "input transcript file; may be repeated")
flags.StringVar(&opts.OutputFile, "output-file", "", "output transcript JSON file")
flags.StringVar(&opts.ReportFile, "report-file", "", "optional report JSON file")
flags.StringVar(&opts.SpeakersFile, "speakers", "", "speaker map file")
flags.StringVar(&opts.AutocorrectFile, "autocorrect", "", "autocorrect rules file")
flags.StringVar(&opts.InputReader, "input-reader", config.DefaultInputReader, "input reader module")
flags.StringVar(&opts.OutputModules, "output-modules", config.DefaultOutputModules, "comma-separated output modules")
flags.StringVar(&opts.OutputSchema, "output-schema", config.DefaultOutputSchema, "output JSON schema: seriatim-minimal, seriatim-intermediate (default), or seriatim-full")
flags.StringVar(&opts.PreprocessingModules, "preprocessing-modules", config.DefaultPreprocessingModules, "comma-separated preprocessing modules")
flags.StringVar(&opts.PostprocessingModules, "postprocessing-modules", config.DefaultPostprocessingModules, "comma-separated postprocessing modules")
flags.StringVar(&opts.CoalesceGap, "coalesce-gap", config.DefaultCoalesceGapValue, "maximum same-speaker gap in seconds for coalesce")
return cmd
}