/// <summary> /// Validate required things such as folders, files. /// Write the error and exit program if failed to validate. /// </summary> /// <param name="configJson">Path to phpswitch.json config file.</param> public void ValidateRequired(FileInfo configJson) { this.ValidateJSONFile(configJson); // check property values in json config must exists. -------------- this.ConsoleStyle.WriteVerbose("--Checking PHP directories."); // check php versions directory. (the directory wher contain PHP multiple version in directories.) if ( String.IsNullOrEmpty(this.MPHPSwitchConfig.PHPSwitchJSO.phpVersionsDir) || Directory.Exists(this.MPHPSwitchConfig.PHPSwitchJSO.phpVersionsDir) == false ) { ConsoleStyle.ErrorExit("You did not specify `phpVersionsDir` property in json file or the directory you specified does not exists. (" + this.MPHPSwitchConfig.PHPSwitchJSO.phpVersionsDir + ")"); } else { this.ConsoleStyle.WriteVerbose(" --phpVersionsDir: {0} OK.", this.MPHPSwitchConfig.PHPSwitchJSO.phpVersionsDir); } // check "php-running" directory. (where php will be execute in CLI.) if ( String.IsNullOrEmpty(this.MPHPSwitchConfig.PHPSwitchJSO.phpRunningDir) || Directory.Exists(this.MPHPSwitchConfig.PHPSwitchJSO.phpRunningDir) == false ) { ConsoleStyle.ErrorExit("You did not specify `phpRunningDir` property in json file or the \"php-running\" directory does not exists. (" + this.MPHPSwitchConfig.PHPSwitchJSO.phpRunningDir + ")"); } else { this.ConsoleStyle.WriteVerbose(" --phpRunningDir: {0} OK.", this.MPHPSwitchConfig.PHPSwitchJSO.phpRunningDir); } // check selected php version number directory which is inside php versions directory. if ( Directory.Exists(this.MPHPSwitchConfig.PHPSwitchJSO.phpVersionsDir + Path.DirectorySeparatorChar + "php" + this.MPHPSwitchConfig.PhpVersion) == false ) { ConsoleStyle.ErrorExit("The selected PHP version does not exists. (" + this.MPHPSwitchConfig.PHPSwitchJSO.phpVersionsDir + Path.DirectorySeparatorChar + "php" + this.MPHPSwitchConfig.PhpVersion + ")"); } else { this.ConsoleStyle.WriteVerbose( " --selected PHP version directory: {0} OK.", FileSystem.NormalizePath(this.MPHPSwitchConfig.PHPSwitchJSO.phpVersionsDir + Path.DirectorySeparatorChar + "php" + this.MPHPSwitchConfig.PhpVersion) ); } this.ConsoleStyle.WriteVerbose("--Finish checking PHP directories."); // end check property values in json config must exists. ---------- if (this.MPHPSwitchConfig.PHPSwitchJSO.apacheUpdateConfig == true) { this.WSApache.ValidateRequired(); } this.ConsoleStyle.WriteVerbose(); }
/// <summary> /// Start the services that specified in JSON config file. /// </summary> public void StartServices() { bool foundService = false; foreach (string eachService in this.SearchedServices) { if (foundService == false) { foundService = true; } Console.WriteLine("Found service: " + eachService); Console.WriteLine(" Trying to start, please wait..."); try { if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { // if Windows OS. var proc = new Process { StartInfo = new ProcessStartInfo { FileName = "cmd.exe", Arguments = $"/C net start \"{eachService}\"", UseShellExecute = false, RedirectStandardOutput = true, RedirectStandardError = true,// prevent error echo out. CreateNoWindow = true } }; proc.Start(); proc.WaitForExit();// wait for response. ConsoleStyle.ClearCurrentConsoleLine(); Console.WriteLine(" The " + eachService + " service is now started."); } else { // if other OS. var proc = new Process { StartInfo = new ProcessStartInfo { FileName = "/bin/bash", Arguments = $"-c \" service {eachService} start \"", UseShellExecute = false, RedirectStandardOutput = true, RedirectStandardError = true,// prevent error echo out. CreateNoWindow = true } }; proc.Start(); proc.WaitForExit();// wait for response. ConsoleStyle.ClearCurrentConsoleLine(); Console.WriteLine(" The " + eachService + " service is now started."); } } catch (InvalidOperationException) { ConsoleStyle.ClearCurrentConsoleLine(); ConsoleStyle.ErrorExit("Could not start the " + eachService + " service."); } }// endforeach; if (foundService == true) { Console.WriteLine(); } }