package cli import ( "fmt" "strings" "testing" ) type GlobaData struct { config string log []string printOcr bool saveClips bool trace bool page []int sources []string dest string facoltativo string } func (gd *GlobaData) String() string { var sb strings.Builder fmt.Fprintf(&sb, "Options:\n") fmt.Fprintf(&sb, " Config.....: %q\n", gd.config) fmt.Fprintf(&sb, " Log........: %v\n", gd.log) fmt.Fprintf(&sb, " Print-Ocr..: %v\n", gd.printOcr) fmt.Fprintf(&sb, " Save-Clips.: %v\n", gd.saveClips) fmt.Fprintf(&sb, " Page.......: %v\n", gd.page) fmt.Fprintf(&sb, " Trace......: %v\n", gd.trace) fmt.Fprintf(&sb, "Argumentes:\n") fmt.Fprintf(&sb, " Sources....: %s\n", strings.Join(gd.sources, ", ")) fmt.Fprintf(&sb, " Destination: %s\n", gd.dest) fmt.Fprintf(&sb, " Facoltativo: %s\n", gd.facoltativo) return sb.String() } func TestUsage(t *testing.T) { var cli CliParser var version = `$VER:mini-ddt-ocr,1.0.1,2025-11-23,celestino.amoroso@gmail.com:$` var gd GlobaData args := []string{ "mini-ddt-ocr", "--log", "all", "--config", "devel-config.yaml", // "--var", "deploy_env=devel", "--print-ocr", "--pages", "17,18", "../../dev-stuff/ocis-upload.log", "ciccio", "bello", "pippo", } cli.Init(args, version) if err := gd.addOptions(&cli); err != nil { t.Error(err) return } usage := cli.Usage() fmt.Println(usage) if err := cli.Parse(); err == nil { fmt.Println(&gd) } else { t.Error(err) } } func (gd *GlobaData) addOptions(cli *CliParser) (err error) { defer func() { if r := recover(); r != nil { err = r.(error) } }() cli.AddBoolOpt("print-ocr", "o", &gd.printOcr, "Stampa l'output del programma OCR") cli.AddBoolOpt("save-clip", "s", &gd.saveClips, "Registra le immagini delle aree ritagliata", "save-clips") cli.AddBoolOpt("trace", "t", &gd.trace, "Attiva la modalità di tracciamento delle operazioni") cli.AddIntArrayOpt("page", "p", &gd.page, gd.page, "Elabora la pagina specificata") cli.AddStringOpt("config", "c", &gd.config, gd.config, "Specifica un percorso alternativo per il file di configurazione") cli.AddStringArrayOpt("log", "l", &gd.log, gd.log, "Maschera di livelli di log") cli.AddStringArrayArg("sorgenti", true, &gd.sources, "file da elaborare") cli.AddStringArg("dest", true, &gd.dest, "file di outout") cli.AddStringArg("facoltativo", false, &gd.facoltativo, "file facoltativo") return }