UNPKG

@flxbl-io/sfp

Version:

sfp is a CLI tool to help you manage your Salesforce projects in an artifact centric model

65 lines 4.6 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.durationFlag = void 0; /* * Copyright (c) 2020, salesforce.com, inc. * All rights reserved. * Licensed under the BSD 3-Clause license. * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause */ const core_1 = require("@oclif/core"); const core_2 = require("@salesforce/core"); const kit_1 = require("@salesforce/kit"); core_2.Messages.importMessagesDirectory(__dirname); const messages = core_2.Messages.loadMessages('@flxbl-io/sfp', 'core-messages'); /** * Duration flag with built-in default and min/max validation * You must specify a unit * Defaults to undefined if you don't specify a default * * @example * * ``` * import { Flags } from '@salesforce/sf-plugins-core'; * public static flags = { * wait: Flags.duration({ * min: 1, * unit: 'minutes' * defaultValue: 33, * char: 'w', * description: 'Wait time in minutes' * }), * } * ``` */ exports.durationFlag = core_1.Flags.custom({ // eslint-disable-next-line @typescript-eslint/require-await parse: async (input, _, opts) => validate(input, opts), // eslint-disable-next-line @typescript-eslint/require-await default: async (context) => context.options.defaultValue ? toDuration(context.options.defaultValue, context.options.unit) : undefined, }); const validate = (input, config) => { const { min, max, unit } = config || {}; let parsedInput; try { parsedInput = parseInt(input, 10); if (typeof parsedInput !== 'number' || isNaN(parsedInput)) { throw messages.createError('errors.InvalidDuration'); } } catch (e) { throw messages.createError('errors.InvalidDuration'); } if (min && max && (parsedInput < min || parsedInput > max)) { throw messages.createError('errors.DurationBounds', [min, max]); } else if (min && parsedInput < min) { throw messages.createError('errors.DurationBoundsMin', [min]); } else if (max && parsedInput > max) { throw messages.createError('errors.DurationBoundsMax', [max]); } return toDuration(parsedInput, unit); }; const toDuration = (parsedInput, unit) => kit_1.Duration[unit](parsedInput); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHVyYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZmxhZ3MvZHVyYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7Ozs7O0dBS0c7QUFDSCxzQ0FBb0M7QUFDcEMsMkNBQTRDO0FBQzVDLHlDQUEyQztBQUUzQyxlQUFRLENBQUMsdUJBQXVCLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDNUMsTUFBTSxRQUFRLEdBQUcsZUFBUSxDQUFDLFlBQVksQ0FBQyxlQUFlLEVBQUUsZUFBZSxDQUFDLENBQUM7QUFXekU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQkc7QUFDVSxRQUFBLFlBQVksR0FBRyxZQUFLLENBQUMsTUFBTSxDQUErQjtJQUNyRSw0REFBNEQ7SUFDNUQsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUM7SUFDdEQsNERBQTREO0lBQzVELE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FDekIsT0FBTyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTO0NBQzVHLENBQUMsQ0FBQztBQUVILE1BQU0sUUFBUSxHQUFHLENBQUMsS0FBYSxFQUFFLE1BQTBCLEVBQVksRUFBRTtJQUN2RSxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLElBQUksRUFBRSxDQUFDO0lBQ3hDLElBQUksV0FBbUIsQ0FBQztJQUV4QixJQUFJLENBQUM7UUFDSCxXQUFXLEdBQUcsUUFBUSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNsQyxJQUFJLE9BQU8sV0FBVyxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztZQUMxRCxNQUFNLFFBQVEsQ0FBQyxXQUFXLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUN2RCxDQUFDO0lBQ0gsQ0FBQztJQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDWCxNQUFNLFFBQVEsQ0FBQyxXQUFXLENBQUMsd0JBQXdCLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxHQUFHLEdBQUcsSUFBSSxXQUFXLEdBQUcsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUMzRCxNQUFNLFFBQVEsQ0FBQyxXQUFXLENBQUMsdUJBQXVCLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNsRSxDQUFDO1NBQU0sSUFBSSxHQUFHLElBQUksV0FBVyxHQUFHLEdBQUcsRUFBRSxDQUFDO1FBQ3BDLE1BQU0sUUFBUSxDQUFDLFdBQVcsQ0FBQywwQkFBMEIsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDaEUsQ0FBQztTQUFNLElBQUksR0FBRyxJQUFJLFdBQVcsR0FBRyxHQUFHLEVBQUUsQ0FBQztRQUNwQyxNQUFNLFFBQVEsQ0FBQyxXQUFXLENBQUMsMEJBQTBCLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRCxPQUFPLFVBQVUsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDdkMsQ0FBQyxDQUFDO0FBRUYsTUFBTSxVQUFVLEdBQUcsQ0FBQyxXQUFtQixFQUFFLElBQWtCLEVBQVksRUFBRSxDQUFDLGNBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyJ9