#!/usr/bin/env node import process from "process"; import { ArgumentParser } from "argparse"; import { safeLoad } from "js-yaml"; import { Linter } from "../lib/linter"; import { readFile } from "../lib/utils"; import { terminalOutput } from "../lib/output/terminal"; import pkginfo from "../package.json"; async function main() { const parser = new ArgumentParser({ version: pkginfo.version, description: pkginfo.description, addHelp: true }); parser.addArgument("config", { help: "The configuration file to use" }); const args = parser.parseArgs(); const str = await readFile(args.config); const config = safeLoad(str); config.appId = loadFromEnv(config.appId); config.secret = loadFromEnv(config.secret); config.tenant = loadFromEnv(config.tenant); const problems = await new Linter(config).run(); terminalOutput(problems); } function loadFromEnv(arg: any): string { if (typeof arg === "string") { return arg; } else { if (arg && arg.env && typeof arg.env === "string") { const val = process.env[arg.env]; if (!val || typeof val !== "string" || val.length === 0) { throw new Error(`Environment variable empty: ${arg.env}`); } return val; } throw new Error("Invalid configuration object!"); } } main().catch(err => { process.exitCode = 1; console.error(err); });