package assets import ( "fmt" "io" ) const ( exitOK = 0 exitFail = 1 // problems found / per-file failures exitUsage = 64 // bad invocation / unknown subcommand / bad flags exitTool = 70 // missing external tool / internal error ) // Run executes an assets subcommand. args[0] is the subcommand; returns the // process exit code. func Run(args []string, stdout, stderr io.Writer, getenv func(string) string) int { if len(args) == 0 { printUsage(stderr) return exitUsage } rest := args[1:] switch args[0] { case "check-dupes": return runCheckDupes(rest, stdout, stderr) case "clean-dupes": return runCleanDupes(rest, stdout, stderr) case "check-mdl": return runCheckMDL(rest, stdout, stderr) case "fix-mdl": return runFixMDL(rest, stdout, stderr) case "convert": return runConvert(rest, stdout, stderr) case "upscale": return runUpscale(rest, stdout, stderr) case "compile": return runCompile(rest, stdout, stderr, getenv) default: fmt.Fprintf(stderr, "assets: unknown subcommand %q\n\n", args[0]) printUsage(stderr) return exitUsage } } func printUsage(w io.Writer) { fmt.Fprint(w, `usage: assets compile [--nwn INSTALL] [--non-recursive] ... assets convert [--to dds|png|tga] [--backend PATH] [--non-recursive] ... assets upscale [--scale N] [--backend PATH] [--non-recursive] ... assets check-mdl ... assets fix-mdl [--dry-run] ... assets check-dupes ... assets clean-dupes [--dry-run] `) }