runtime/entrypoints/viewport.entrypoint.ts

runtime/entrypoints/viewport.entrypoint.ts is a file in Project Scripts. 32 lines of code and 6 definitions.

import { NO_BROWSER, NO_BUILD, REFUSED_ARGUMENTS, unknownRoute } from "#configuration/strings/viewport.strings";
import { VIEWPORT_ARGV } from "#configuration/configs/viewport.config";
import { absolutePath } from "@ssot/paths";
import { auditRoutes } from "#core/coordinators/viewport.coordinator";
import { builtRoutes } from "#core/loaders/viewport.loader";
import { findBrowser } from "@banes-lab/build-scripts/core/resolvers/browser.resolver.ts";
import { mkdirSync } from "node:fs";
import process from "node:process";
import { readOptions } from "#core/converters/viewport.converter";
import { resolveArgv } from "@govlab/argv";

const options = readOptions(resolveArgv(VIEWPORT_ARGV));
const root = absolutePath("builds.web");
const built = builtRoutes(root);
const unknown = options === null ? [] : options.routes.filter((route) => !built.includes(route));
const binary = options === null ? null : findBrowser(options.browser);

if (options === null) {
    process.stderr.write(REFUSED_ARGUMENTS);
    process.exitCode = 1;
} else if (built.length === 0) {
    process.stderr.write(NO_BUILD);
    process.exitCode = 1;
} else if (unknown.length > 0) {
    process.stderr.write(unknown.map(unknownRoute).join(""));
    process.exitCode = 1;
} else if (binary === null) {
    process.stderr.write(NO_BROWSER);
    process.exitCode = 1;
} else {
    mkdirSync(options.outDir, { recursive: true });
    const routes = options.routes.length > 0 ? options.routes : built;
    process.exitCode = (await auditRoutes(binary, options, root, routes)) ? 0 : 1;
}