aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2026-01-28 20:57:51 +0900
committerOphestra <cat@gensokyo.uk>2026-01-28 20:57:51 +0900
commite76bc6a13aa9d2d1f6695c3ddcda1267cafe9ae6 (patch)
tree5a736e5bbc854cc2f6aefe53c74a3367e3158f44
parentcc403c96d8cb23aceb7aca4a88ce73f422934a39 (diff)
internal/rosa: resolve preset by name
Signed-off-by: Ophestra <cat@gensokyo.uk>
-rw-r--r--cmd/mbf/main.go110
-rw-r--r--internal/rosa/all.go53
2 files changed, 60 insertions, 103 deletions
diff --git a/cmd/mbf/main.go b/cmd/mbf/main.go
index 8aead566..d6980e58 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 18ea6cad..3b9ccb74 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
+}