UNPKG

@cloudideaas/hydrainstall

Version:

Installs Windows requirements for @cloudideaas/hydra. Hydra is a app generation tool with resulting source code. Generated front-end support for Ionic/Angular. Restful service layer support for .NET Core. Back-end support for SQL Server. Other supported

158 lines (115 loc) 4.65 kB
import "./modules/utils/extensions"; const path = require('path'); const fs = require('fs'); const child_process = require("child_process"); const { Env, Target, ExpandedForm } = require('windows-environment'); import { exec, ChildProcess } from "child_process"; import { Socket } from "net"; const colors = require('colors/safe'); export class HydraInstaller { static installer: HydraInstaller; stdout: Socket; stderr: Socket; logOutputToConsole: any; constructor() { this.stdout = <Socket>process.stdout; this.stderr = <Socket>process.stderr; } public static install() { let installer: HydraInstaller; if (HydraInstaller.installer === undefined) { HydraInstaller.installer = new HydraInstaller(); } installer = HydraInstaller.installer; installer.install(); } uninstall() { let installerPath : string; let commandLine : string; let installerProcess: ChildProcess; this.writeLine("Installing Hydra Bundle for Windows"); installerPath = path.join(__dirname, "\\..\\install\\Hydra.Installer.exe"); if (!fs.existsSync(installerPath)) { this.writeWarning(`Could not find installer at ${ installerPath }, you can download installer from https://marketplace.visualstudio.com/items?itemName=CloudIDEaaS.Hydra`); } commandLine = `${installerPath}`; this.writeLine(`Running command ${ commandLine } /uninstall`); installerProcess = exec(commandLine); installerProcess.stderr.on("data", (e) => { this.stderr.writeLine(e.toString()); }); installerProcess.on("close",() => { this.stdout.writeLine(`Installer exited with exit code ${ installerProcess.exitCode }`); process.exit(0); }); } install() { let installerPath : string; let commandLine : string; let installerProcess: ChildProcess; let programFilesPath : string; let generatorApp : string; let hydraSolutionPath = <string> process.env.HYDRASOLUTIONPATH; programFilesPath = process.env["PROGRAMFILES(x86)"]; if (!programFilesPath) { programFilesPath = process.env["PROGRAMFILES"]; } generatorApp = path.join(programFilesPath, "\\CloudIDEaaS\\Hydra\\ApplicationGenerator.exe"); if (fs.existsSync(generatorApp)) { return; } this.writeLine("Installing Hydra Bundle for Windows"); installerPath = path.join(__dirname, "\\..\\install\\Hydra.Installer.exe"); if (!fs.existsSync(installerPath)) { this.writeWarning(`Could not find installer at ${ installerPath }, you can download installer from https://marketplace.visualstudio.com/items?itemName=CloudIDEaaS.Hydra`); } commandLine = `${installerPath}`; this.writeLine(`Running command ${ commandLine } `); installerProcess = exec(commandLine); installerProcess.stderr.on("data", (e) => { this.stderr.writeLine(e.toString()); }); installerProcess.on("close",() => { this.stdout.writeLine(`Installer exited with exit code ${ installerProcess.exitCode }`); process.exit(0); }); } writeLine(output : string) { this.stdout.writeLine(output); if (this.logOutputToConsole) { console.log(output); } } write(output : string) { this.stdout.write(output); if (this.logOutputToConsole) { console.log(output); } } writeConsole(output : string) { if (this.logOutputToConsole) { console.log(output); } } writeError(output : string) { let coloredOutput = colors.red(output); this.stderr.writeLine(coloredOutput); if (this.logOutputToConsole) { console.log(coloredOutput); } } writeWarning(output : string) { let coloredOutput = colors.yellow(output); this.stderr.writeLine(coloredOutput); if (this.logOutputToConsole) { console.log(coloredOutput); } } writeSuccess(output : string) { let coloredOutput = colors.green(output); this.stdout.writeLine(coloredOutput); if (this.logOutputToConsole) { console.log(coloredOutput); } } }