From b64b5d6cce0144a01491c094c359d53d8e075159 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Tetsing?= Date: Wed, 21 Aug 2024 14:35:47 +0200 Subject: [PATCH] merged master in with inference server releasers --- .../src/helpers/inferenceServerReleases.ts | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 libs/remix-ai-core/src/helpers/inferenceServerReleases.ts diff --git a/libs/remix-ai-core/src/helpers/inferenceServerReleases.ts b/libs/remix-ai-core/src/helpers/inferenceServerReleases.ts new file mode 100644 index 0000000000..b19d77f556 --- /dev/null +++ b/libs/remix-ai-core/src/helpers/inferenceServerReleases.ts @@ -0,0 +1,56 @@ +import axios from 'axios'; +import fs from 'fs'; +import path from 'path'; + +interface Asset { + name: string; + browser_download_url: string; +} + +interface Release { + assets: Asset[]; +} + +const owner = 'remix-project-org' +const repo = 'remix_ai_tools' +async function getLatestRelease(owner: string, repo: string): Promise { + const url = `https://api.github.com/repos/${owner}/${repo}/releases/latest`; + const response = await axios.get(url); + return response.data; +} + +async function downloadFile(url: string, filePath: string): Promise { + const writer = fs.createWriteStream(filePath); + const response = await axios({ + url, + method: 'GET', + responseType: 'stream' + }); + response.data.pipe(writer); + + return new Promise((resolve, reject) => { + writer.on('finish', resolve); + writer.on('error', reject); + }); +} + +export async function downloadLatestReleaseExecutable(platform: string, outputDir: string): Promise { + try { + const release = await getLatestRelease(owner, repo); + const executables = release.assets.filter(asset => + asset.name.includes(platform) + ); + + console.log(`Downloading executables for ${platform}..., ${executables} `); + + for (const executable of executables) { + // sort out the correct executable + const filePath = path.join(outputDir, executable.name); + console.log(`Downloading ${executable.name}...`); + await downloadFile(executable.browser_download_url, filePath); + console.log(`Downloaded ${executable.name}`); + } + } catch (error) { + console.error('Error downloading executables:', error); + } +}