UNPKG

simple-git

Version:

Simple GIT interface for node.js

57 lines 2.37 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const argument_filters_1 = require("./argument-filters"); const util_1 = require("./util"); function appendTaskOptions(options, commands = []) { if (!argument_filters_1.filterPlainObject(options)) { return commands; } return Object.keys(options).reduce((commands, key) => { const value = options[key]; if (argument_filters_1.filterPrimitives(value, ['boolean'])) { commands.push(key + '=' + value); } else { commands.push(key); } return commands; }, commands); } exports.appendTaskOptions = appendTaskOptions; function getTrailingOptions(args, initialPrimitive = 0, objectOnly = false) { const command = []; for (let i = 0, max = initialPrimitive < 0 ? args.length : initialPrimitive; i < max; i++) { if ('string|number'.includes(typeof args[i])) { command.push(String(args[i])); } } appendTaskOptions(trailingOptionsArgument(args), command); if (!objectOnly) { command.push(...trailingArrayArgument(args)); } return command; } exports.getTrailingOptions = getTrailingOptions; function trailingArrayArgument(args) { const hasTrailingCallback = typeof util_1.last(args) === 'function'; return argument_filters_1.filterType(util_1.last(args, hasTrailingCallback ? 1 : 0), argument_filters_1.filterArray, []); } /** * Given any number of arguments, returns the trailing options argument, ignoring a trailing function argument * if there is one. When not found, the return value is null. */ function trailingOptionsArgument(args) { const hasTrailingCallback = argument_filters_1.filterFunction(util_1.last(args)); return argument_filters_1.filterType(util_1.last(args, hasTrailingCallback ? 1 : 0), argument_filters_1.filterPlainObject); } exports.trailingOptionsArgument = trailingOptionsArgument; /** * Returns either the source argument when it is a `Function`, or the default * `NOOP` function constant */ function trailingFunctionArgument(args, includeNoop = true) { const callback = util_1.asFunction(util_1.last(args)); return includeNoop || util_1.isUserFunction(callback) ? callback : undefined; } exports.trailingFunctionArgument = trailingFunctionArgument; //# sourceMappingURL=task-options.js.map