check-dupes, clean-dupes, check-mdl, fix-mdl, convert, upscale, compile behind a single runner indirection, mirroring internal/depot's Run shape. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
56 lines
1.5 KiB
Go
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>
|
|
`)
|
|
}
|