nswag
Version:
The Swagger API toolchain for .NET, Web API and TypeScript.
72 lines (64 loc) • 2.47 kB
JavaScript
;
var defaultCoreVersion = "Net80";
var supportedCoreVersions = [
{ ver: '6.0', dir: "Net60", },
{ ver: '8.0', dir: "Net80", },
];
// Initialize
process.title = 'nswag';
console.log("NSwag NPM CLI");
var args = process.argv.splice(2, process.argv.length - 2).map(function (a) { return a.indexOf(" ") === -1 ? a : '"' + a + '"' }).join(" ");
// Legacy support
args = args.replace("--x86", "/runtime:WinX86");
args = args.replace("/runtime:x86", "/runtime:WinX86");
args = args.replace("--core 6.0", "/runtime:Net60");
args = args.replace("--core 8.0", "/runtime:Net80");
args = args.replace("--core", "/runtime:" + defaultCoreVersion);
// Search for full .NET installation
var hasFullDotNet = false;
var fs = require('fs');
if (process.env["windir"]) {
try {
var stats = fs.lstatSync(process.env["windir"] + '/Microsoft.NET');
if (stats.isDirectory())
hasFullDotNet = true;
}
catch (e) {
console.log(e);
}
}
var c = require('child_process');
if (hasFullDotNet && args.toLowerCase().indexOf("/runtime:win") != -1) {
// Run full .NET version
if (args.toLowerCase().indexOf("/runtime:winx86") != -1) {
var cmd = '"' + __dirname + '/binaries/Win/nswag.x86.exe" ' + args;
var code = c.execSync(cmd, { stdio: [0, 1, 2] });
} else {
var cmd = '"' + __dirname + '/binaries/Win/nswag.exe" ' + args;
var code = c.execSync(cmd, { stdio: [0, 1, 2] });
}
} else {
// Run .NET Core version
var defaultCmd = 'dotnet "' + __dirname + '/binaries/' + defaultCoreVersion + '/dotnet-nswag.dll" ' + args;
var infoCmd = "dotnet --version";
c.exec(infoCmd, (error, stdout, _stderr) => {
for (let version of supportedCoreVersions) {
var coreCmd = 'dotnet "' + __dirname + '/binaries/' + version.dir + '/dotnet-nswag.dll" ' + args;
if (args.toLowerCase().indexOf("/runtime:" + version.dir.toLocaleLowerCase()) != -1) {
c.execSync(coreCmd, { stdio: [0, 1, 2] });
return;
} else {
if (!error) {
var coreVersion = stdout;
if (coreVersion.startsWith(version.ver)) {
c.execSync(coreCmd, { stdio: [0, 1, 2] });
return;
}
}
}
}
c.execSync(defaultCmd, { stdio: [0, 1, 2] });
return;
});
}