UNPKG

shellcheck

Version:

Wrapper to download shellcheck

80 lines (79 loc) 3.35 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.env = void 0; const envalid = __importStar(require("envalid")); const node_path_1 = __importDefault(require("node:path")); const node_fs_1 = __importDefault(require("node:fs")); const arrayOfAll_1 = require("../utils/arrayOfAll"); const narrow_1 = require("../utils/narrow"); const ENV_PREFIX = 'SHELLCHECKJS'; const RELEASE_REGEX = /(^latest$|^v(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)$)/; const releaseValidator = envalid.makeValidator((input) => { if (!RELEASE_REGEX.test(input)) { throw new envalid.EnvError(`Invalid release: ${input}`); } (0, narrow_1.Narrow)(input); return input; }); const binValidator = envalid.makeValidator((input) => { try { node_fs_1.default.accessSync(input, // eslint-disable-next-line no-bitwise node_fs_1.default.constants.F_OK | node_fs_1.default.constants.W_OK | node_fs_1.default.constants.X_OK); } catch (err) { throw new envalid.EnvError(`Invalid ShellCheck binary: ${err instanceof Error ? err.message : err}`); } return input; }); exports.env = envalid.cleanEnv(process.env, { [`${ENV_PREFIX}_RELEASE`]: releaseValidator({ default: 'latest', desc: 'Release version or latest', example: '`latest` or `v0.10.0`', docs: 'https://github.com/koalaman/shellcheck/releases' }), [`${ENV_PREFIX}_BIN`]: binValidator({ default: node_path_1.default.normalize(node_path_1.default.resolve(`${__dirname}/../../bin`, `shellcheck${process.platform === 'win32' ? '.exe' : ''}`)), desc: 'ShellCheck binary path', example: '`/path/to/shellcheck` or `C:\\path\\to\\shellcheck.exe`' }), [`${ENV_PREFIX}_LOGGER_LEVEL`]: envalid.str({ default: "info" /* LoggerLevel.INFO */, choices: (0, arrayOfAll_1.arrayOfAll)()([ "off" /* LoggerLevel.OFF */, "debug" /* LoggerLevel.DEBUG */, "info" /* LoggerLevel.INFO */, "warn" /* LoggerLevel.WARN */, "error" /* LoggerLevel.ERROR */ ]), desc: 'Logger level', example: '`info`' }) });