picobook/src/server/api/release.ts

50 lines
1.1 KiB
TypeScript
Raw Normal View History

2024-03-25 00:29:43 -07:00
import { Type } from "@sinclair/typebox";
import { FirRouteInput, FirRouteOptions } from "../util/routewrap.js";
2024-03-25 21:35:58 -07:00
import fs from "fs";
import git from "isomorphic-git";
import http from "isomorphic-git/http/node";
2024-03-25 00:29:43 -07:00
const method = "POST";
2024-03-25 00:42:23 -07:00
const url = "/api/release";
2024-03-25 00:29:43 -07:00
// const payloadT = Type.Object({
// png: Type.String(),
// });
const payloadT = Type.Any();
2024-03-25 21:35:58 -07:00
const handler = async ({payload}: FirRouteInput<typeof payloadT>) => {
const {manifest, token} = payload;
if (!fs.existsSync("./repos")) {
fs.mkdirSync("./repos", {recursive: true})
}
await git.clone({
fs,
http,
2024-03-26 00:06:33 -07:00
// headers: {
// "Authorization": `token ${token}`,
// },
onAuth() {
return {
username: token,
password: 'x-access-token',
}
2024-03-25 21:35:58 -07:00
},
dir: "./repos",
url: manifest.repo,
});
const localManifest = JSON.parse(await fs.promises.readFile("./repos/picobook.json", "utf8"));
fs.promises.rm("./repos");
console.log({
manifest,
localManifest,
});
return true;
2024-03-25 00:29:43 -07:00
};
export default {
method,
url,
payloadT,
handler,
} as const satisfies FirRouteOptions<typeof payloadT>;