package main

import (
	"flag"
	"fmt"
	"os"
	"path/filepath"

	// Packages
	whisper "github.com/ggerganov/whisper.cpp/bindings/go/pkg/whisper"
)

func main() {
	flags, err := NewFlags(filepath.Base(os.Args[0]), os.Args[1:])
	if err == flag.ErrHelp {
		os.Exit(0)
	} else if err != nil {
		fmt.Fprintln(os.Stderr, err)
		os.Exit(1)
	} else if flags.GetModel() == "" {
		fmt.Fprintln(os.Stderr, "Use -model flag to specify which model file to use")
		os.Exit(1)
	} else if flags.NArg() == 0 {
		fmt.Fprintln(os.Stderr, "No input files specified")
		os.Exit(1)
	}

	// Load model
	model, err := whisper.New(flags.GetModel())
	if err != nil {
		fmt.Fprintln(os.Stderr, err)
		os.Exit(1)
	}
	defer model.Close()

	// Process files
	for _, filename := range flags.Args() {
		if err := Process(model, filename, flags); err != nil {
			fmt.Fprintln(os.Stderr, err)
			continue
		}
	}
}