mirror of
https://github.com/nodejs/node.git
synced 2025-05-13 10:54:13 +00:00

PR-URL: https://github.com/nodejs/node/pull/42744 Reviewed-By: Rich Trott <rtrott@gmail.com> Reviewed-By: Mohammed Keyvanzadeh <mohammadkeyvanzade94@gmail.com> Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Tobias Nießen <tniessen@tnie.de>
50 lines
1.5 KiB
JavaScript
50 lines
1.5 KiB
JavaScript
exports.replaceDollarWithPercentPair = replaceDollarWithPercentPair
|
|
exports.convertToSetCommand = convertToSetCommand
|
|
exports.convertToSetCommands = convertToSetCommands
|
|
|
|
function convertToSetCommand (key, value) {
|
|
var line = ''
|
|
key = key || ''
|
|
key = key.trim()
|
|
value = value || ''
|
|
value = value.trim()
|
|
if (key && value && value.length > 0) {
|
|
line = '@SET ' + key + '=' + replaceDollarWithPercentPair(value) + '\r\n'
|
|
}
|
|
return line
|
|
}
|
|
|
|
function extractVariableValuePairs (declarations) {
|
|
var pairs = {}
|
|
declarations.map(function (declaration) {
|
|
var split = declaration.split('=')
|
|
pairs[split[0]] = split[1]
|
|
})
|
|
return pairs
|
|
}
|
|
|
|
function convertToSetCommands (variableString) {
|
|
var variableValuePairs = extractVariableValuePairs(variableString.split(' '))
|
|
var variableDeclarationsAsBatch = ''
|
|
Object.keys(variableValuePairs).forEach(function (key) {
|
|
variableDeclarationsAsBatch += convertToSetCommand(key, variableValuePairs[key])
|
|
})
|
|
return variableDeclarationsAsBatch
|
|
}
|
|
|
|
function replaceDollarWithPercentPair (value) {
|
|
var dollarExpressions = /\$\{?([^$@#?\- \t{}:]+)\}?/g
|
|
var result = ''
|
|
var startIndex = 0
|
|
do {
|
|
var match = dollarExpressions.exec(value)
|
|
if (match) {
|
|
var betweenMatches = value.substring(startIndex, match.index) || ''
|
|
result += betweenMatches + '%' + match[1] + '%'
|
|
startIndex = dollarExpressions.lastIndex
|
|
}
|
|
} while (dollarExpressions.lastIndex > 0)
|
|
result += value.slice(startIndex)
|
|
return result
|
|
}
|