diff --git a/.github/workflows/cd-assets.yml b/.github/workflows/cd-assets.yml index f7a41aed5..02307c23d 100644 --- a/.github/workflows/cd-assets.yml +++ b/.github/workflows/cd-assets.yml @@ -2,44 +2,34 @@ name: Build Assets on: push: - branches: - - 1.16.0 + branches: 1.16.0 workflow_dispatch: jobs: build: - runs-on: windows-latest + runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v2 - - name: Set up .NET - uses: actions/setup-dotnet@v3 + - name: Use node + uses: actions/setup-node@v3 with: - dotnet-version: '6.0' + node-version: 18 + cache: 'npm' - - name: Get latest release info - id: release - run: | - $RELEASE_JSON = Invoke-RestMethod -Uri https://api.github.com/repos/SteamRE/DepotDownloader/releases/latest - $DOWNLOAD_URL = $RELEASE_JSON.assets[0].browser_download_url - Write-Output "##vso[task.setvariable variable=tag_name;isOutput=true]$($RELEASE_JSON.tag_name)" - Write-Output "##vso[task.setvariable variable=download_url;isOutput=true]$DOWNLOAD_URL" + - name: Install Yarn + run: npm install --location=global yarn - - name: Download file as depotdownload.zip - run: | - $DOWNLOAD_URL = $env:download_url - if (-not $DOWNLOAD_URL) { - Write-Error "Download URL is null or empty. Check GitHub API response." - exit 1 - } - Invoke-WebRequest -Uri $DOWNLOAD_URL -OutFile depotdownload.zip + - name: Use node_modules cache + uses: actions/cache@v3 + with: + path: '**/node_modules' + key: ${{ runner.os }}-modules-${{ hashFiles('**/yarn.lock') }} - - name: Extract zip file - run: Expand-Archive -Path depotdownload.zip -DestinationPath . + - name: Install dependencies + run: yarn - - name: Run DepotDownloader.dll - run: | - $DLL_PATH = ".\DepotDownloader.dll" - dotnet $DLL_PATH + - name: Setup DepotDownloader + run: yarn setup:depotdownloader diff --git a/package.json b/package.json index f1a22a69a..2d5b2474b 100644 --- a/package.json +++ b/package.json @@ -19,13 +19,13 @@ "start:website": "next start", "host:docs": "vitepress preview docs", "publish:ratingsleaderboard": "vite-node --script scripts/buildRatingsLeaderboard --publish", - "zip": "zip -r dist.zip dist", "lint": "npx tsc", "lint:website": "next lint", "format": "prettier --write \"**/*.@(json|js|jsx|css|md|ts|tsx|html|xml|yml|gltf)\"", "lint:version": "vite-node --script scripts/checkVersionMissMatch", "knip": "knip", - "update": "yarn upgrade --latest" + "update": "yarn upgrade --latest", + "setup:depotdownloader": "vite-node --script scripts/setupDepotDownloader" }, "license": "MIT", "dependencies": { @@ -74,7 +74,7 @@ }, "devDependencies": { "@total-typescript/ts-reset": "^0.5.1", - "@types/decompress": "^4.2.6", + "@types/decompress": "^4.2.7", "@types/escape-html": "^1.0.2", "@types/express": "^4.17.18", "@types/js-yaml": "^4.0.8", diff --git a/scripts/setupDepotDownloader.ts b/scripts/setupDepotDownloader.ts new file mode 100644 index 000000000..13fdf2c23 --- /dev/null +++ b/scripts/setupDepotDownloader.ts @@ -0,0 +1,27 @@ +import decompress from 'decompress'; +import { existsSync } from 'fs'; +import { mkdir, writeFile } from 'fs/promises'; + +if (!existsSync('temp')) { + console.log('Creating temp directory...'); + await mkdir('temp'); +} + +console.log('Downloading depot downloader...'); +await fetch( + 'https://api.github.com/repos/SteamRE/DepotDownloader/releases/latest', +) + .then( + (response) => + response.json() as Promise<{ + assets: { browser_download_url: string }[]; + }>, + ) + .then(({ assets }) => fetch(assets[0].browser_download_url)) + .then((response) => response.arrayBuffer()) + .then((arrayBuffer) => + writeFile('temp/depotDownloader.zip', Buffer.from(arrayBuffer)), + ); + +console.log('Unzipping...'); +decompress('temp/depotDownloader.zip', 'temp/depotDownloader'); diff --git a/yarn.lock b/yarn.lock index 86783ddd4..3f8b9d256 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2275,7 +2275,7 @@ dependencies: "@types/node" "*" -"@types/decompress@^4.2.6": +"@types/decompress@^4.2.7": version "4.2.7" resolved "https://registry.yarnpkg.com/@types/decompress/-/decompress-4.2.7.tgz#604f69b69d519ecb74dea1ea0829f159b85e1332" integrity sha512-9z+8yjKr5Wn73Pt17/ldnmQToaFHZxK0N1GHysuk/JIPT8RIdQeoInM01wWPgypRcvb6VH1drjuFpQ4zmY437g==