52 lines
1.3 KiB
JavaScript
52 lines
1.3 KiB
JavaScript
|
'use strict'
|
||
|
|
||
|
/**
|
||
|
* @module object-to-spawn-args
|
||
|
*/
|
||
|
module.exports = toSpawnArgs
|
||
|
|
||
|
/**
|
||
|
* @param {object} - an object specifying the command-line options to set
|
||
|
* @param [options] {object}
|
||
|
* @param [options.quote] {boolean} - enquote the option values
|
||
|
* @param [options.optionEqualsValue] {boolean} - use `--option=value` notation
|
||
|
*/
|
||
|
function toSpawnArgs (object, options) {
|
||
|
var output = []
|
||
|
options = options || {}
|
||
|
|
||
|
for (var prop in object) {
|
||
|
var value = object[prop]
|
||
|
if (value !== undefined) {
|
||
|
var dash = prop.length === 1 ? '-' : '--'
|
||
|
if (options.optionEqualsValue) {
|
||
|
if (value === true) {
|
||
|
output.push(dash + prop)
|
||
|
} else {
|
||
|
if (Array.isArray(value)) {
|
||
|
output.push(dash + prop + '=' + quote(value.join(','), options.quote))
|
||
|
} else {
|
||
|
output.push(dash + prop + '=' + quote(value, options.quote))
|
||
|
}
|
||
|
}
|
||
|
} else {
|
||
|
output.push(dash + prop)
|
||
|
if (value !== true) {
|
||
|
if (Array.isArray(value)) {
|
||
|
value.forEach(function (item) {
|
||
|
output.push(quote(item, options.quote))
|
||
|
})
|
||
|
} else {
|
||
|
output.push(quote(value, options.quote))
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
return output
|
||
|
}
|
||
|
|
||
|
function quote (value, toQuote) {
|
||
|
return toQuote ? '"' + value + '"' : value
|
||
|
}
|