feat: custom download url, custom repository

This commit is contained in:
xHyroM 2022-07-28 07:50:56 +02:00
parent 27a94d6f80
commit e6a8865f72
9 changed files with 135 additions and 21 deletions

View file

@ -1,5 +1,5 @@
import { exit } from '../index.js';
export default (assets) => {
export const getArchitecture = () => {
let arch;
switch (process.arch) {
case 'arm64':
@ -13,6 +13,10 @@ export default (assets) => {
}
if (!['linux', 'darwin'].some(platform => process.platform === platform))
throw new Error(`Unsupported platform ${process.platform}.`);
return arch;
};
export default (assets) => {
const arch = getArchitecture();
const assetName = `bun-${process.platform}-${arch}.zip`;
const asset = assets.find(asset => asset.name === assetName);
if (!asset)

View file

@ -1,11 +1,28 @@
import fetch from 'node-fetch';
export default async (version, token, miscTestBuilds) => {
const repository = miscTestBuilds ? 'oven-sh/misc-test-builds' : 'oven-sh/bun';
import { getArchitecture } from './getAsset';
export default async (version, token, fullRepository, customDownloadUrl, miscTestBuilds) => {
const repository = miscTestBuilds ? 'oven-sh/misc-test-builds' : fullRepository.split('/').slice(3).join('/');
let url;
if (version === 'latest' || miscTestBuilds)
if (customDownloadUrl)
url = customDownloadUrl;
else if (version === 'latest' || miscTestBuilds)
url = `https://api.github.com/repos/${repository}/releases/latest`;
else
url = `https://api.github.com/repos/${repository}/releases/tags/${version.includes('canary') ? version : `bun-v${version}`}`;
if (customDownloadUrl) {
return {
name: 'custom',
version: version + Math.random().toString(36).slice(-8),
html_url: customDownloadUrl,
tag_name: 'custom',
assets: [
{
name: `bun-${process.platform}-${getArchitecture()}`,
browser_download_url: customDownloadUrl
}
]
};
}
const release = await (await fetch(url, {
headers: {
'Content-Type': 'application/json',