Example #1
0
 /**
  * Returns Git info
  *
  * @return array
  */
 public static function getGitInfo()
 {
     $gitBinary = VP_GIT_BINARY;
     $info = [];
     $process = new Process(ProcessUtils::escapeshellarg($gitBinary) . " --version");
     $process->run();
     $info['git-binary-as-configured'] = $gitBinary;
     $info['git-available'] = $process->getErrorOutput() === null || !strlen($process->getErrorOutput());
     if ($info['git-available'] === false) {
         $info['output'] = ['stdout' => trim($process->getOutput()), 'stderr' => trim($process->getErrorOutput())];
         $info['env-path'] = getenv('PATH');
         return $info;
     }
     $output = trim($process->getOutput());
     $match = Strings::match($output, "~git version (\\d[\\d\\.]+\\d).*~");
     $version = $match[1];
     $gitPath = "unknown";
     if ($gitBinary == "git") {
         $osSpecificWhereCommand = strtoupper(substr(PHP_OS, 0, 3)) === 'WIN' ? "where" : "which";
         $process = new Process("{$osSpecificWhereCommand} git");
         $process->run();
         if ($process->isSuccessful()) {
             $gitPath = $process->getOutput();
         }
     } else {
         $gitPath = $gitBinary;
     }
     $info['git-version'] = $version;
     $info['git-binary-as-called-by-vp'] = $gitBinary;
     $info['git-full-path'] = $gitPath;
     $info['versionpress-min-required-version'] = RequirementsChecker::GIT_MINIMUM_REQUIRED_VERSION;
     $info['matches-min-required-version'] = RequirementsChecker::gitMatchesMinimumRequiredVersion($version);
     return $info;
 }
 /**
  * Executes a command. If the command is WP-CLI command (starts with "wp ...")
  *
  * @param string $command
  * @param string $executionPath Working directory for the command. If null, the path will be determined
  *   automatically.
  *
  * @param bool $debug
  * @param null|array $env
  * @return string When process execution is not successful
  * @throws Exception
  */
 private function exec($command, $executionPath = null, $debug = false, $env = null)
 {
     $command = $this->rewriteWpCliCommand($command);
     if (!$executionPath) {
         $executionPath = $this->siteConfig->path;
     }
     // Changing env variables for debugging
     // We don't need the xdebug enabled in the subprocesses,
     // but sometimes on the other hand we need it enabled only in the subprocess.
     $isDebug = isset($_SERVER["XDEBUG_CONFIG"]);
     $childEnv = $_SERVER;
     if ($isDebug == $debug) {
         // same as this process
     } elseif ($debug) {
         $childEnv["XDEBUG_CONFIG"] = "idekey=xdebug";
         // turn debug on
     } else {
         unset($childEnv["XDEBUG_CONFIG"]);
         // turn debug off
     }
     $childEnv = array_merge($childEnv, (array) $env);
     $process = new Process($command, $executionPath, $childEnv);
     $process->run();
     if (!$process->isSuccessful()) {
         throw new Exception("Error executing cmd '{$command}' from working directory " . "'{$executionPath}':\n{$process->getConsoleOutput()}");
     }
     return $process->getOutput();
 }