#!/usr/bin/env -S deno run --allow-env --allow-net --allow-run import { getRequiredEnv, getStdout, loggerWithPrefix, validateIdentifier, } from "@liz-ci/utils"; const getRequestLogger = (req: Request) => { const url = new URL(req.url); const traceId = crypto.randomUUID(); const getPrefix = () => `[${ new Date().toISOString() }] RequestTrace=[${traceId}] @ [${url.pathname}] -X [${req.method}] |`; return loggerWithPrefix(getPrefix); }; const addr = { port: 9000, hostname: "0.0.0.0" }; Deno.serve(addr, async (req) => { const logger = getRequestLogger(req); logger.log("start"); try { 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.\n", { status: 200, }); } catch (e) { logger.error(e); return new Response("i need to eat more vegetables -.-\n", { 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)) { logger.log("invalid reqwest"); return new Response("invalid reqwest >:D\n", { status: 400, }); } const laminar = await getStdout([ "laminarc", "queue", "checkout_ci", `remote="${remote}"`, `rev="${rev}"`, `refname="${refname}"`, ]); logger.log(`successful queue :D`, laminar); return new Response(laminar + "\n", { status: 200, }); } return new Response("idk what that is bro :((\n", { status: 404 }); } catch (e) { logger.error("uncaught exception", e); return new Response("womp womp D:\n", { status: 500 }); } finally { logger.log("finish"); } });