import decompress from 'decompress'; import { existsSync } from 'fs'; import { mkdir, readdir, 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; name: string }[]; }>, ) .then(({ assets }) => { const asset = assets.find(({ name }) => name.includes('linux-x64')); if (!asset) throw new Error('No asset found'); return fetch(asset.browser_download_url); }) .then((response) => response.arrayBuffer()) .then((arrayBuffer) => writeFile('../../temp/depotDownloader.zip', new Uint8Array(arrayBuffer)), ); console.log('Unzipping...'); await decompress( '../../temp/depotDownloader.zip', '../../temp/depotDownloader', ); console.log( 'Download complete; files:', await readdir('../../temp/depotDownloader'), );