Exemple #1
0
        /// <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();
        }
Exemple #2
0
        /// <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();
            }
        }