From e76bc6a13aa9d2d1f6695c3ddcda1267cafe9ae6 Mon Sep 17 00:00:00 2001 From: Ophestra Date: Wed, 28 Jan 2026 20:57:51 +0900 Subject: [PATCH] internal/rosa: resolve preset by name Signed-off-by: Ophestra --- cmd/mbf/main.go | 110 +++---------------------------------------- internal/rosa/all.go | 53 +++++++++++++++++++++ 2 files changed, 60 insertions(+), 103 deletions(-) diff --git a/cmd/mbf/main.go b/cmd/mbf/main.go index 8aead56..d6980e5 100644 --- a/cmd/mbf/main.go +++ b/cmd/mbf/main.go @@ -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 } - - pathname, _, err := cache.Cure(rosa.Std.Load(p)) - if err == nil { - log.Println(pathname) - } - return err - }, ) diff --git a/internal/rosa/all.go b/internal/rosa/all.go index 18ea6ca..3b9ccb7 100644 --- a/internal/rosa/all.go +++ b/internal/rosa/all.go @@ -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 +}