UNPKG

nswag

Version:

The Swagger API toolchain for .NET, Web API and TypeScript.

72 lines (64 loc) 2.47 kB
#!/usr/bin/env node "use strict"; 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; }); }