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 { cfg, err := config.NewMergeConfig(opts) 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: default, minimal, or seriatim") 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 }