#!/usr/bin/env -S deno run --allow-env --allow-net --allow-run import { getRequiredEnv, getStdout, validateIdentifier } from "@liz-ci/utils"; const getRequestLogger = (req: Request) => { const id = crypto.randomUUID(); const url = new URL(req.url); const method = req.method; const getPrefix = () => `[${new Date().toISOString()}] Request [${id}] @ [${url}] -X [${method}] |`; return { log: (...args: unknown[]) => console.log(getPrefix(), ...args), error: (...args: unknown[]) => console.error(getPrefix(), ...args), }; }; const addr = { port: 9000, hostname: "0.0.0.0" }; Deno.serve(addr, async (req) => { const logger = getRequestLogger(req); logger.log("Request initiated"); const { pathname } = new URL(req.url); if (pathname === "/health") { try { getRequiredEnv("LAMINAR_HOST"); await getStdout(["laminarc", "show-jobs"]); return new Response("think im healthy. lets get to work.", { status: 200, }); } catch (e) { logger.error(e); return new Response("i need to eat more vegetables -.-", { status: 500 }); } } if (req.method !== "POST") { return new Response("invalid method", { status: 405, }); } if (pathname === "/checkout_ci") { const { remote, rev, refname } = await req.json(); if (![remote, rev, refname].every(validateIdentifier)) { return new Response("invalid request", { status: 400, }); } try { const laminar = await getStdout([ "laminarc", "queue", "checkout_ci", `remote="${remote}"`, `rev="${rev}"`, `refname="${refname}"`, ]); logger.log(`successful ci queue :D\n` + laminar); return new Response(laminar, { status: 200, }); } catch (e) { logger.error(e); return new Response("womp womp D:", { status: 500, }); } } return new Response("ahhhh idkkkk", { status: 404 }); });