@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
JavaScript
;
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