package cmd
import (
"encoding/json"
"flag"
"fmt"
"os"
"skraak/tools"
)
func RunPrepend(args []string) {
fs := flag.NewFlagSet("prepend", flag.ExitOnError)
folder := fs.String("folder", "", "Target folder path (required)")
prefix := fs.String("prefix", "", "String to prepend to filenames (required)")
recursive := fs.Bool("recursive", false, "Include 1 level of subfolders")
dryRun := fs.Bool("dry-run", false, "Show what would be renamed without doing it")
fs.Usage = func() {
fmt.Fprintf(os.Stderr, "Usage: skraak prepend --folder <path> --prefix <string> [--recursive] [--dry-run]\n\n")
fmt.Fprintf(os.Stderr, "Rename files by prepending a prefix.\n\n")
fmt.Fprintf(os.Stderr, "Target files:\n")
fmt.Fprintf(os.Stderr, " - *.wav, *.WAV (must start with datestring YYYYMMDD_HHMMSS)\n")
fmt.Fprintf(os.Stderr, " - *.wav.data, *.WAV.data (must start with datestring YYYYMMDD_HHMMSS)\n")
fmt.Fprintf(os.Stderr, " - log.txt (exact name, always renamed)\n\n")
fmt.Fprintf(os.Stderr, "Options:\n")
fs.PrintDefaults()
fmt.Fprintf(os.Stderr, "\nExamples:\n")
fmt.Fprintf(os.Stderr, " skraak prepend --folder ./recordings --prefix LOC001\n")
fmt.Fprintf(os.Stderr, " skraak prepend --folder ./data --prefix SITE_A --recursive\n")
fmt.Fprintf(os.Stderr, " skraak prepend --folder ./test --prefix TEST --dry-run\n")
}
if err := fs.Parse(args); err != nil {
os.Exit(1)
}
if *folder == "" {
fmt.Fprintf(os.Stderr, "Error: --folder is required\n\n")
fs.Usage()
os.Exit(1)
}
if *prefix == "" {
fmt.Fprintf(os.Stderr, "Error: --prefix is required\n\n")
fs.Usage()
os.Exit(1)
}
output, err := tools.Prepend(tools.PrependInput{
Folder: *folder,
Prefix: *prefix,
Recursive: *recursive,
DryRun: *dryRun,
})
if err != nil {
fmt.Fprintf(os.Stderr, "Error: %v\n", err)
os.Exit(1)
}
enc := json.NewEncoder(os.Stdout)
enc.SetIndent("", " ")
if err := enc.Encode(output); err != nil {
fmt.Fprintf(os.Stderr, "Error encoding output: %v\n", err)
os.Exit(1)
}
}