'amd64', 'aarch64' => 'arm64', default => throw new \InvalidArgumentException('Unsupported architecture: ' . $name), }; $os = match (explode('-', $name)[4]) { 'linux' => 'linux', 'macos' => 'darwin', default => throw new \InvalidArgumentException('Unsupported OS: ' . $name), }; $go_version = '1.24.4'; $config = [ 'type' => 'url', 'url' => "https://go.dev/dl/go{$go_version}.{$os}-{$arch}.tar.gz", ]; Downloader::downloadPackage($name, $config, $force); } public function extract(string $name): void { $pkgroot = PKG_ROOT_PATH; $lock = json_decode(FileSystem::readFile(LockFile::LOCK_FILE), true); $source_type = $lock[$name]['source_type']; $filename = DOWNLOAD_PATH . '/' . ($lock[$name]['filename'] ?? $lock[$name]['dirname']); $extract = $lock[$name]['move_path'] === null ? "{$pkgroot}/{$name}" : $lock[$name]['move_path']; FileSystem::extractPackage($name, $source_type, $filename, $extract); // install xcaddy $go_exec = PKG_ROOT_PATH . "{$pkgroot}/{$name}/bin/go"; // $xcaddy_exec = PKG_ROOT_PATH . "$pkgroot/$name/bin/xcaddy"; shell() ->appendEnv([ 'PATH' => "{$pkgroot}/{$name}/bin:" . getenv('PATH'), 'GOROOT' => "{$pkgroot}/{$name}", 'GOBIN' => "{$pkgroot}/{$name}/bin", 'GOPATH' => "{$pkgroot}/go", ]) ->exec("{$go_exec} install github.com/caddyserver/xcaddy/cmd/xcaddy@latest"); } }