Files
archvillainette 5ebef57160
build-binaries / build-binaries (push) Successful in 2m5s
test / test (push) Successful in 1m23s
assets builder tools (#39)
Reviewed-on: #39
Reviewed-by: xtul <mpiasecki720@protonmail.com>
2026-07-12 12:51:17 +00:00

56 lines
1.5 KiB
Go

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] <dir>...
assets convert [--to dds|png|tga] [--backend PATH] [--non-recursive] <dir>...
assets upscale [--scale N] [--backend PATH] [--non-recursive] <dir>...
assets check-mdl <path>...
assets fix-mdl [--dry-run] <path>...
assets check-dupes <dir>...
assets clean-dupes [--dry-run] <primary> <clean>
`)
}