From 91cf4f83b56cfdbdfce8bc95e669677e7d4ab635 Mon Sep 17 00:00:00 2001 From: henderkes Date: Sun, 24 May 2026 21:39:56 +0700 Subject: [PATCH] artifact: add path/binary/isInstalled static helpers Give zig, rust, go_win and go_xcaddy a small consistent surface for locating the install directory and a binary inside it: - path(): install/extract root for the artifact - binary($name = ''): full path to a binary under that root, picking the artifact's natural layout (top-level for zig, bin/ for rust and the go toolchains) - isInstalled(): is the default binary present on disk Callers that previously concatenated PKG_ROOT_PATH . '/zig/zig' (and the equivalents for the other artifacts) by hand can call the helpers instead, and any later code that needs to ask "is this toolchain available" can use isInstalled() without rebuilding the path. --- src/Package/Artifact/go_win.php | 17 +++++++++++++++++ src/Package/Artifact/go_xcaddy.php | 17 +++++++++++++++++ src/Package/Artifact/rust.php | 17 +++++++++++++++++ src/Package/Artifact/zig.php | 17 +++++++++++++++++ 4 files changed, 68 insertions(+) diff --git a/src/Package/Artifact/go_win.php b/src/Package/Artifact/go_win.php index 7a87d2db2..484dc0341 100644 --- a/src/Package/Artifact/go_win.php +++ b/src/Package/Artifact/go_win.php @@ -15,6 +15,23 @@ class go_win { + /** GOROOT for the Windows Go toolchain. */ + public static function path(): string + { + return PKG_ROOT_PATH . '/go-win'; + } + + /** Path to a binary inside go-win's bin/ (go.exe, gofmt.exe, …). */ + public static function binary(string $name = 'go.exe'): string + { + return self::path() . '/bin/' . $name; + } + + public static function isInstalled(): bool + { + return is_file(self::binary()); + } + #[CustomBinary('go-win', [ 'windows-x86_64', ])] diff --git a/src/Package/Artifact/go_xcaddy.php b/src/Package/Artifact/go_xcaddy.php index 51ccfb87b..e4bd15348 100644 --- a/src/Package/Artifact/go_xcaddy.php +++ b/src/Package/Artifact/go_xcaddy.php @@ -17,6 +17,23 @@ class go_xcaddy { + /** GOROOT for the bundled Go toolchain used to build xcaddy. */ + public static function path(): string + { + return PKG_ROOT_PATH . '/go-xcaddy'; + } + + /** Path to a binary inside go-xcaddy's bin/ (xcaddy, go, …). */ + public static function binary(string $name = 'xcaddy'): string + { + return self::path() . '/bin/' . $name; + } + + public static function isInstalled(): bool + { + return is_file(self::binary()); + } + #[CustomBinary('go-xcaddy', [ 'linux-x86_64', 'linux-aarch64', diff --git a/src/Package/Artifact/rust.php b/src/Package/Artifact/rust.php index cc9bb1757..c1e896f11 100644 --- a/src/Package/Artifact/rust.php +++ b/src/Package/Artifact/rust.php @@ -16,6 +16,23 @@ class rust { + /** Install prefix the rust tarball's install.sh writes into. */ + public static function path(): string + { + return PKG_ROOT_PATH . '/rust'; + } + + /** Path to a binary inside the rust install dir (cargo, rustc, rustup, …). */ + public static function binary(string $name = 'cargo'): string + { + return self::path() . '/bin/' . $name; + } + + public static function isInstalled(): bool + { + return is_file(self::binary()); + } + #[CustomBinary('rust', [ 'linux-x86_64', 'linux-aarch64', diff --git a/src/Package/Artifact/zig.php b/src/Package/Artifact/zig.php index 95520aa4b..e1c76bb03 100644 --- a/src/Package/Artifact/zig.php +++ b/src/Package/Artifact/zig.php @@ -15,6 +15,23 @@ class zig { + /** Directory zig extracts into. */ + public static function path(): string + { + return PKG_ROOT_PATH . '/zig'; + } + + /** Path to a binary inside the zig install dir (zig, zig-cc, zig-c++, zig-ar, …). */ + public static function binary(string $name = 'zig'): string + { + return self::path() . '/' . $name; + } + + public static function isInstalled(): bool + { + return is_file(self::binary()); + } + #[CustomBinary('zig', [ 'linux-x86_64', 'linux-aarch64',