UNPKG

forest-cli

Version:

The Lumberjacks' toolbelt is the Forest CLI which makes easy to manage your back office application directly from the terminal.

39 lines 3.46 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.findBySecret = exports.findByFlag = exports.ScopeError = void 0; /** * Pure, IO-free matchers used to turn a `--env` / `--team` flag (accepting either * an id or a name) or an environment secret into a concrete candidate. The * candidate lists are injected, so these are exercised in tests with plain arrays * and reused by {@link resolveCommandScope} on top of the existing * EnvironmentManager / TeamManager. Selection of a default (prompting the user) is * deliberately NOT done here — it belongs to the IO layer. */ class ScopeError extends Error { constructor(message) { super(message); this.name = 'ScopeError'; } } exports.ScopeError = ScopeError; /** Resolve a candidate from a flag given as an id or a (case-insensitive) name. */ function findByFlag(kind, flag, candidates) { const match = candidates.find(candidate => String(candidate.id) === flag) ?? candidates.find(candidate => candidate.name.toLowerCase() === flag.toLowerCase()); if (!match) { const available = candidates.map(candidate => `${candidate.name} (#${candidate.id})`).join(', ') || 'none'; throw new ScopeError(`${kind} "${flag}" not found. Available: ${available}.`); } return match; } exports.findByFlag = findByFlag; /** Resolve the candidate designated by an environment secret. */ function findBySecret(kind, secret, candidates) { const match = candidates.find(candidate => candidate.secretKey !== undefined && String(candidate.secretKey) === secret); if (!match) { throw new ScopeError(`No ${kind.toLowerCase()} matches FOREST_ENV_SECRET. Target one explicitly with --env.`); } return match; } exports.findBySecret = findBySecret; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NvcGUtcmVzb2x2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvbGF5b3V0L3Njb3BlLXJlc29sdmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBOzs7Ozs7O0dBT0c7QUFDSCxNQUFhLFVBQVcsU0FBUSxLQUFLO0lBQ25DLFlBQVksT0FBZTtRQUN6QixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsSUFBSSxHQUFHLFlBQVksQ0FBQztJQUMzQixDQUFDO0NBQ0Y7QUFMRCxnQ0FLQztBQUlELG1GQUFtRjtBQUNuRixTQUFnQixVQUFVLENBQUMsSUFBWSxFQUFFLElBQVksRUFBRSxVQUF1QjtJQUM1RSxNQUFNLEtBQUssR0FDVCxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsS0FBSyxJQUFJLENBQUM7UUFDM0QsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEtBQUssSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFFcEYsSUFBSSxDQUFDLEtBQUssRUFBRTtRQUNWLE1BQU0sU0FBUyxHQUNiLFVBQVUsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxJQUFJLE1BQU0sU0FBUyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLE1BQU0sQ0FBQztRQUMzRixNQUFNLElBQUksVUFBVSxDQUFDLEdBQUcsSUFBSSxLQUFLLElBQUksMkJBQTJCLFNBQVMsR0FBRyxDQUFDLENBQUM7S0FDL0U7SUFFRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFaRCxnQ0FZQztBQUVELGlFQUFpRTtBQUNqRSxTQUFnQixZQUFZLENBQUMsSUFBWSxFQUFFLE1BQWMsRUFBRSxVQUF1QjtJQUNoRixNQUFNLEtBQUssR0FBRyxVQUFVLENBQUMsSUFBSSxDQUMzQixTQUFTLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEtBQUssU0FBUyxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEtBQUssTUFBTSxDQUN6RixDQUFDO0lBRUYsSUFBSSxDQUFDLEtBQUssRUFBRTtRQUNWLE1BQU0sSUFBSSxVQUFVLENBQ2xCLE1BQU0sSUFBSSxDQUFDLFdBQVcsRUFBRSwrREFBK0QsQ0FDeEYsQ0FBQztLQUNIO0lBRUQsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBWkQsb0NBWUMifQ==