#!/usr/bin/env -S deno run --allow-env --allow-net import { getStdout, validateIdentifier, getRequiredEnv } from "@liz-ci/utils"; getRequiredEnv("LAMINAR_HOST"); const addr = { port: 9000, hostname: "0.0.0.0" }; Deno.serve(addr, async (req) => { const { pathname } = new URL(req.url); if (pathname === "/health") { try { await getStdout(["laminarc", "show-jobs"]); return new Response("think im healthy. lets get to work.", { status: 200, }); } catch (e) { console.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}"`, ]); console.log(`successful ci queue :D\n` + laminar); return new Response(laminar, { status: 200, }); } catch (e) { console.error(e); return new Response("womp womp D:", { status: 500, }); } } return new Response("ahhhh idkkkk", { status: 404 }); });