mirror of
https://github.com/nodejs/node.git
synced 2025-05-15 02:04:52 +00:00

PR-URL: https://github.com/nodejs/node/pull/29430 Reviewed-By: Rich Trott <rtrott@gmail.com> Reviewed-By: David Carlier <devnexen@gmail.com> Reviewed-By: Jiawen Geng <technicalcute@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de> Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com>
50 lines
1.6 KiB
JavaScript
50 lines
1.6 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.substr(startIndex)
|
|
return result
|
|
}
|