internal/rosa: resolve preset by name
All checks were successful
Test / Create distribution (push) Successful in 59s
Test / Sandbox (push) Successful in 2m40s
Test / Hakurei (push) Successful in 4m1s
Test / ShareFS (push) Successful in 3m56s
Test / Hpkg (push) Successful in 4m29s
Test / Sandbox (race detector) (push) Successful in 5m3s
Test / Hakurei (race detector) (push) Successful in 6m9s
Test / Flake checks (push) Successful in 1m37s

Signed-off-by: Ophestra <cat@gensokyo.uk>
This commit is contained in:
2026-01-28 20:57:51 +09:00
parent cc403c96d8
commit e76bc6a13a
2 changed files with 60 additions and 103 deletions

View File

@@ -146,111 +146,15 @@ func main() {
if len(args) != 1 {
return errors.New("cure requires 1 argument")
}
var p rosa.PArtifact
switch args[0] {
case "acl":
p = rosa.ACL
case "attr":
p = rosa.Attr
case "autoconf":
p = rosa.Autoconf
case "bash":
p = rosa.Bash
case "busybox":
p = rosa.Busybox
case "cmake":
p = rosa.CMake
case "coreutils":
p = rosa.Coreutils
case "diffutils":
p = rosa.Diffutils
case "fuse":
p = rosa.Fuse
case "gawk":
p = rosa.Gawk
case "gettext":
p = rosa.Gettext
case "git":
p = rosa.Git
case "go":
p = rosa.Go
case "gperf":
p = rosa.Gperf
case "hakurei":
p = rosa.Hakurei
case "hakurei-dist":
p = rosa.HakureiDist
case "iniconfig":
p = rosa.IniConfig
case "kernel-headers":
p = rosa.KernelHeaders
case "libXau":
p = rosa.LibXau
case "libexpat":
p = rosa.Libexpat
case "libseccomp":
p = rosa.Libseccomp
case "libxml2":
p = rosa.Libxml2
case "libffi":
p = rosa.Libffi
case "libgd":
p = rosa.Libgd
case "m4":
p = rosa.M4
case "make":
p = rosa.Make
case "meson":
p = rosa.Meson
case "nss":
p = rosa.NSS
case "nss-cacert":
p = rosa.NSSCACert
case "ninja":
p = rosa.Ninja
case "packaging":
p = rosa.Packaging
case "patch":
p = rosa.Patch
case "perl":
p = rosa.Perl
case "pkg-config":
p = rosa.PkgConfig
case "pluggy":
p = rosa.Pluggy
case "pytest":
p = rosa.PyTest
case "pygments":
p = rosa.Pygments
case "python":
p = rosa.Python
case "rsync":
p = rosa.Rsync
case "setuptools":
p = rosa.Setuptools
case "wayland":
p = rosa.Wayland
case "wayland-protocols":
p = rosa.WaylandProtocols
case "xcb":
p = rosa.XCB
case "xcb-proto":
p = rosa.XCBProto
case "xproto":
p = rosa.Xproto
case "zlib":
p = rosa.Zlib
default:
if p, ok := rosa.Std.ResolveName(args[0]); !ok {
return fmt.Errorf("unsupported artifact %q", args[0])
}
} else {
pathname, _, err := cache.Cure(rosa.Std.Load(p))
if err == nil {
log.Println(pathname)
}
return err
}
},
)

View File

@@ -80,3 +80,56 @@ func (t Toolchain) Load(p PArtifact) pkg.Artifact {
})
return artifacts[t][p]
}
// ResolveName returns a [PArtifact] by name.
func (t Toolchain) ResolveName(name string) (p PArtifact, ok bool) {
p, ok = map[string]PArtifact{
"acl": ACL,
"attr": Attr,
"autoconf": Autoconf,
"bash": Bash,
"busybox": Busybox,
"cmake": CMake,
"coreutils": Coreutils,
"diffutils": Diffutils,
"fuse": Fuse,
"gawk": Gawk,
"gettext": Gettext,
"git": Git,
"go": Go,
"gperf": Gperf,
"hakurei": Hakurei,
"hakurei-dist": HakureiDist,
"iniconfig": IniConfig,
"kernel-headers": KernelHeaders,
"libXau": LibXau,
"libexpat": Libexpat,
"libseccomp": Libseccomp,
"libxml2": Libxml2,
"libffi": Libffi,
"libgd": Libgd,
"m4": M4,
"make": Make,
"meson": Meson,
"nss": NSS,
"nss-cacert": NSSCACert,
"ninja": Ninja,
"packaging": Packaging,
"patch": Patch,
"perl": Perl,
"pkg-config": PkgConfig,
"pluggy": Pluggy,
"pytest": PyTest,
"pygments": Pygments,
"python": Python,
"rsync": Rsync,
"setuptools": Setuptools,
"wayland": Wayland,
"wayland-protocols": WaylandProtocols,
"xcb": XCB,
"xcb-proto": XCBProto,
"xproto": Xproto,
"zlib": Zlib,
}[name]
return
}