mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-09 16:13:31 +01:00
53 lines
1.4 KiB
TypeScript
53 lines
1.4 KiB
TypeScript
import { readFile } from 'node:fs/promises';
|
|
import process from 'node:process';
|
|
import { getInput, setFailed } from '@actions/core';
|
|
import { create } from '@actions/glob';
|
|
import { put } from '@vercel/blob';
|
|
import { createPool } from '@vercel/postgres';
|
|
import pLimit from 'p-limit';
|
|
|
|
if (!process.env.DATABASE_URL) {
|
|
setFailed('DATABASE_URL is not set');
|
|
}
|
|
|
|
const pkg = getInput('package') || '*';
|
|
const version = getInput('version') || 'main';
|
|
|
|
const pool = createPool({
|
|
connectionString: process.env.DATABASE_URL,
|
|
});
|
|
|
|
const limit = pLimit(10);
|
|
const promises = [];
|
|
|
|
const globber = await create(`packages/${pkg}/docs/docs.api.json`);
|
|
console.log('Glob: ', await globber.glob());
|
|
for await (const file of globber.globGenerator()) {
|
|
const data = await readFile(file, 'utf8');
|
|
try {
|
|
promises.push(
|
|
limit(async () => {
|
|
console.log(`Uploading ${file} with ${version}...`);
|
|
const json = JSON.parse(data);
|
|
const name = json.name ?? json.n;
|
|
const { url } = await put(`${name.replace('@discordjs/', '')}/${version}.json`, data, {
|
|
access: 'public',
|
|
addRandomSuffix: false,
|
|
});
|
|
await pool.sql`insert into documentation (name, version, url) values (${name.replace(
|
|
'@discordjs/',
|
|
'',
|
|
)}, ${version}, ${url}) on conflict (name, version) do update set url = EXCLUDED.url`;
|
|
}),
|
|
);
|
|
} catch (error) {
|
|
console.log(error);
|
|
}
|
|
}
|
|
|
|
try {
|
|
await Promise.all(promises);
|
|
} catch (error) {
|
|
console.log(error);
|
|
}
|