package cli import ( "errors" "flag" "fmt" "io" "sultan/pkg/lander" ) type dumpOptions struct { dir string force bool } func parseDumpFlags(args []string, output io.Writer) (dumpOptions, error) { fs := flag.NewFlagSet("sultan dump-landing", flag.ContinueOnError) fs.SetOutput(output) var o dumpOptions fs.StringVar(&o.dir, "out", "./suldata/landing", "Zielverzeichnis (der Server liest /landing)") fs.BoolVar(&o.force, "force", false, "vorhandene Dateien überschreiben") if err := fs.Parse(args); err != nil { return o, err } if fs.NArg() > 0 { return o, fmt.Errorf("unerwartetes Argument %q", fs.Arg(0)) } return o, nil } // runDump schreibt die eingebauten Lander-Seiten als Vorlagen zum Anpassen. func runDump(args []string, stdout, stderr io.Writer) int { o, err := parseDumpFlags(args, stderr) if errors.Is(err, flag.ErrHelp) { return 0 } if err != nil { fmt.Fprintln(stderr, err) return 2 } files, err := lander.Dump(o.dir, o.force) if err != nil { fmt.Fprintln(stderr, "Fehler:", err) return 1 } for _, f := range files { fmt.Fprintln(stdout, f) } fmt.Fprintln(stderr, "Vorlagen geschrieben – Änderungen wirken sofort, ohne Neustart (siehe README.txt).") return 0 }