From 1aec1b28853b3b005ea07d660934c0a91c12f046 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tr=C3=A8sAbhi?= <43380238+tresabhi@users.noreply.github.com> Date: Wed, 10 Dec 2025 17:13:12 -0600 Subject: [PATCH] feat: add zip abilities --- .github/workflows/assets.yml | 7 ++++--- packages/scripts/src/buildAssets/constants.ts | 18 +++++++++++------- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/.github/workflows/assets.yml b/.github/workflows/assets.yml index 1c197cf22..6fcfca25d 100644 --- a/.github/workflows/assets.yml +++ b/.github/workflows/assets.yml @@ -16,10 +16,11 @@ on: - blitzkit/assets-dev default: blitzkit/assets - archive_url: + asset_source: type: string required: false - description: Archive URL to download instead of Steam client + description: "Archive URL or Steam to download (example: steam:APP_ID/DEPOT_ID or zip:URL_TO_ZIP)" + default: "steam:444200/444202" schedule: - cron: "0 2 * * *" @@ -78,4 +79,4 @@ jobs: run: echo 0 | sudo tee /proc/sys/kernel/apparmor_restrict_unprivileged_userns - name: Build assets - run: bun run build:assets --all-targets --manual + run: bun run build:assets --all-targets --source=${{ github.event.inputs.asset_source }} diff --git a/packages/scripts/src/buildAssets/constants.ts b/packages/scripts/src/buildAssets/constants.ts index 8ac0f3283..d189bbd3b 100644 --- a/packages/scripts/src/buildAssets/constants.ts +++ b/packages/scripts/src/buildAssets/constants.ts @@ -3,24 +3,28 @@ import { AbstractVFS } from "../core/vfs/abstract"; import { SteamVFS } from "../core/vfs/steam"; import { ZipVFS } from "../core/vfs/zip"; +const steamPattern = /steam:(\d+)\/(\d+)/; +const zipPattern = /zip:(.+)/; + const source = Bun.argv .find((arg) => arg.startsWith("--source=")) ?.split("=")[1]; let resolved: AbstractVFS; -if (source === "steam") { - const APP = 444200; - const DEPOT = 444202; +if (!source) { + throw new Error("No source specified"); +} else if (steamPattern.test(source)) { + const [, app, depot] = source.match(steamPattern)!.map(Number); resolved = await new SteamVFS( assertSecret(import.meta.env.STEAM_USERNAME), assertSecret(import.meta.env.STEAM_PASSWORD), - APP, - DEPOT + app, + depot ).init(); -} else if (source === "zip") { - const url = assertSecret(import.meta.env.ZIP_URL); +} else if (zipPattern.test(source)) { + const [, url] = source.match(zipPattern)!; resolved = await new ZipVFS(url).init(); } else { throw new Error("No valid source specified");