/** * 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; }
VersionPress needs a one-time activation step that initializes its internal storage. <strong>This step is resource-intensive and might take a while</strong> if your site has many entities (posts, comments etc.). The site will be put in maintanenance mode until it finishes. </p> <div class="checks-and-warnings"> <div class="left"> <h4>System requirements check</h4> <ul class="vp-requirements-check"> <?php global $versionPressContainer; /** @var GitRepository $repository */ $repository = $versionPressContainer->resolve(VersionPressServices::GIT_REPOSITORY); $database = $versionPressContainer->resolve(VersionPressServices::DATABASE); $schema = $versionPressContainer->resolve(VersionPressServices::DB_SCHEMA); $requirementsChecker = new RequirementsChecker($database, $schema); $report = $requirementsChecker->getRequirements(); foreach ($report as $requirement) { $iconClass = $requirement["fulfilled"] ? "vp-icon-checkmark" : "vp-icon-warning"; ?> <li> <span class="icon <?php echo esc_attr($iconClass); ?> "></span> <?php echo esc_html($requirement["name"]); ?> <p class="<?php echo $requirement["fulfilled"] ? 'closed' : 'open'; ?>
/** * @param $assoc_args * @param $requirementsScope string of the requirements */ private function checkVpRequirements($assoc_args, $requirementsScope) { require_once ABSPATH . WPINC . '/formatting.php'; require_once ABSPATH . WPINC . '/theme.php'; require_once ABSPATH . WPINC . '/link-template.php'; global $versionPressContainer; $database = $versionPressContainer->resolve(VersionPressServices::WPDB); $schema = $requirementsScope === RequirementsChecker::ENVIRONMENT ? null : $versionPressContainer->resolve(VersionPressServices::DB_SCHEMA); $requirementsChecker = new RequirementsChecker($database, $schema, $requirementsScope); $report = $requirementsChecker->getRequirements(); foreach ($report as $requirement) { if ($requirement['fulfilled']) { WP_CLI::success($requirement['name']); } else { if ($requirement['level'] === 'critical') { WP_CLI::error($requirement['name'], false); } else { VPCommandUtils::warning($requirement['name']); } WP_CLI::log(' ' . $requirement['help']); } } WP_CLI::line(''); if (!$requirementsChecker->isWithoutCriticalErrors()) { WP_CLI::error('VersionPress cannot be fully activated.'); } if (!$requirementsChecker->isEverythingFulfilled()) { WP_CLI::confirm('There are some warnings. Continue?', $assoc_args); } }
<p class="about-description">VersionPress needs a one-time activation step that initializes its internal storage. <strong>This step is resource-intensive and might take a while</strong> if your site has many entities (posts, comments etc.). The site will be put in maintanenance mode until it finishes.</p> <div class="checks-and-warnings"> <div class="left"> <h4>System requirements check</h4> <ul class="vp-requirements-check"> <?php global $versionPressContainer; /** @var GitRepository $repository */ $repository = $versionPressContainer->resolve(VersionPressServices::REPOSITORY); $database = $versionPressContainer->resolve(VersionPressServices::WPDB); $schema = $versionPressContainer->resolve(VersionPressServices::DB_SCHEMA); $requirementsChecker = new RequirementsChecker($database, $schema); $report = $requirementsChecker->getRequirements(); foreach ($report as $requirement) { $iconClass = $requirement["fulfilled"] ? "icon-checkmark" : "icon-warning"; ?> <li> <span class="icon <?php echo $iconClass; ?> "></span> <?php echo $requirement["name"]; ?> <p class="<?php echo $requirement["fulfilled"] ? 'closed' : 'open'; ?>
/** * @test */ public function gitCheckPassesForGit220() { $this->assertTrue(RequirementsChecker::gitMatchesMinimumRequiredVersion("2.2.0", "1.9")); }