mirror of
https://github.com/OpenVPN/openvpn.git
synced 2025-05-09 05:31:05 +08:00

Signed-off-by: Alon Bar-Lev <alon.barlev@gmail.com> Acked-by: Samuli Seppänen <samuli@openvpn.net> Signed-off-by: David Sommerseth <davids@redhat.com>
119 lines
3.2 KiB
JavaScript
119 lines
3.2 KiB
JavaScript
/*
|
|
* msvc-generate.js - string transformation
|
|
*
|
|
* Copyright (C) 2008-2012 Alon Bar-Lev <alon.barlev@gmail.com>
|
|
*
|
|
* BSD License
|
|
* ============
|
|
* Redistribution and use in source and binary forms, with or without
|
|
* modification, are permitted provided that the following conditions are met:
|
|
*
|
|
* o Redistributions of source code must retain the above copyright notice,
|
|
* this list of conditions and the following disclaimer.
|
|
* o Redistributions in binary form must reproduce the above copyright
|
|
* notice, this list of conditions and the following disclaimer in the
|
|
* documentation and/or other materials provided with the distribution.
|
|
* o Neither the name of the Alon Bar-Lev nor the names of its
|
|
* contributors may be used to endorse or promote products derived from
|
|
* this software without specific prior written permission.
|
|
*
|
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
|
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
* POSSIBILITY OF SUCH DAMAGE.
|
|
*
|
|
*/
|
|
|
|
var ForReading = 1;
|
|
var fso = new ActiveXObject("Scripting.FileSystemObject");
|
|
var input = "nul";
|
|
var output = "nul";
|
|
var files = new Array();
|
|
var env = new Array();
|
|
|
|
function initialize() {
|
|
for (var i=0;i<WScript.Arguments.length;i++) {
|
|
var arg = WScript.Arguments(i);
|
|
if (arg.match(/^--input=(.*)$/)) {
|
|
input=RegExp.$1;
|
|
}
|
|
else if (arg.match(/^--output=(.*)$/)) {
|
|
output=RegExp.$1;
|
|
}
|
|
else if (arg.match(/^--config=(.*)$/)) {
|
|
files.push(RegExp.$1);
|
|
}
|
|
else if (arg.match(/^--var=([^=]*)=(.*)$/)) {
|
|
env[RegExp.$1] = RegExp.$2;
|
|
}
|
|
}
|
|
}
|
|
|
|
function process_config(vars, file) {
|
|
try {
|
|
var fin = fso.OpenTextFile(file, ForReading);
|
|
|
|
while (!fin.AtEndOfStream) {
|
|
var content = fin.ReadLine();
|
|
if (content.match(/^[ \t]*define\(\[(.*)\],[ \t]*\[(.*)\]\)[ \t]*/)) {
|
|
vars[RegExp.$1] = RegExp.$2;
|
|
}
|
|
}
|
|
}
|
|
catch(e) {
|
|
throw new Error(1, "Cannot process '" + file + "'.");
|
|
}
|
|
}
|
|
|
|
function process_file(vars, input, output) {
|
|
var fin = fso.OpenTextFile(input, ForReading);
|
|
var fout = fso.CreateTextFile(output);
|
|
var content = fin.ReadAll();
|
|
|
|
for (var i in vars) {
|
|
content = content.replace(new RegExp("@"+i+"@", "g"), vars[i]);
|
|
}
|
|
|
|
fout.Write(content);
|
|
}
|
|
|
|
function build_vars() {
|
|
var vars = new Array();
|
|
for (var f in files) {
|
|
process_config(vars, files[f]);
|
|
}
|
|
for (var e in env) {
|
|
vars[e] = env[e];
|
|
}
|
|
return vars;
|
|
}
|
|
|
|
function main() {
|
|
try {
|
|
initialize();
|
|
|
|
var vars = build_vars();
|
|
|
|
process_file(
|
|
vars,
|
|
input,
|
|
output
|
|
);
|
|
|
|
WScript.Quit(0);
|
|
}
|
|
catch(e) {
|
|
WScript.Echo("ERROR: when procssing " + output + ": " + e.description);
|
|
WScript.Quit(1);
|
|
}
|
|
}
|
|
|
|
main();
|