Pimcore\Update::isComposerAvailable PHP Метод

isComposerAvailable() публичный статический Метод

public static isComposerAvailable ( ) : boolean
Результат boolean
    public static function isComposerAvailable()
    {
        return (bool) \Pimcore\Tool\Console::getExecutable("composer");
    }

Usage Example

Пример #1
0
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $currentRevision = null;
     if ($input->getOption("source-build")) {
         $currentRevision = $input->getOption("source-build");
     }
     $availableUpdates = Update::getAvailableUpdates($currentRevision);
     if ($input->getOption("list")) {
         if (count($availableUpdates["releases"])) {
             $rows = [];
             foreach ($availableUpdates["releases"] as $release) {
                 $rows[] = [$release["version"], date("Y-m-d", $release["date"]), $release["id"]];
             }
             $table = new Table($output);
             $table->setHeaders(['Version', 'Date', 'Build'])->setRows($rows);
             $table->render();
         }
         if (count($availableUpdates["revisions"])) {
             $this->output->writeln("The latest available build is: <comment>" . $availableUpdates["revisions"][0]["id"] . "</comment> (" . date("Y-m-d", $availableUpdates["revisions"][0]["date"]) . ")");
         }
         if (!count($availableUpdates["releases"]) && !count($availableUpdates["revisions"])) {
             $this->output->writeln("<info>No updates available</info>");
         }
     }
     if ($input->getOption("update")) {
         $returnMessages = [];
         $build = null;
         $updateInfo = trim($input->getOption("update"));
         if (is_numeric($updateInfo)) {
             $build = $updateInfo;
         } else {
             // get build nr. by version number
             foreach ($availableUpdates["releases"] as $release) {
                 if ($release["version"] == $updateInfo) {
                     $build = $release["id"];
                     break;
                 }
             }
         }
         if (!$build) {
             $this->writeError("Update with build / version " . $updateInfo . " not found.");
             exit;
         }
         if (!Update::isWriteable()) {
             $this->writeError(PIMCORE_PATH . " is not recursivly writable, please check!");
             exit;
         }
         if (!Update::isComposerAvailable()) {
             $this->writeError("Composer is not installed properly, please ensure composer is in your PATH variable.");
             exit;
         }
         $helper = $this->getHelper('question');
         $question = new ConfirmationQuestion("You are going to update to build {$build}! Continue with this action? (y/n)", false);
         if (!$helper->ask($input, $output, $question)) {
             return;
         }
         $this->output->writeln("Starting the update process ...");
         if ($input->getOption("dry-run")) {
             $this->output->writeln("<info>---------- DRY-RUN ----------</info>");
         }
         $jobs = Update::getJobs($build, $currentRevision);
         $steps = count($jobs["parallel"]) + count($jobs["procedural"]);
         $progress = new ProgressBar($output, $steps);
         $progress->start();
         foreach ($jobs["parallel"] as $job) {
             if ($job["type"] == "download") {
                 Update::downloadData($job["revision"], $job["url"]);
             }
             $progress->advance();
         }
         $maintenanceModeId = 'cache-warming-dummy-session-id';
         Admin::activateMaintenanceMode($maintenanceModeId);
         $stoppedByError = false;
         foreach ($jobs["procedural"] as $job) {
             if ($input->getOption("dry-run")) {
                 $job["dry-run"] = true;
             }
             $script = realpath(PIMCORE_PATH . DIRECTORY_SEPARATOR . "cli" . DIRECTORY_SEPARATOR . "console.php");
             $return = Console::runPhpScript($script, "internal:update-processor " . escapeshellarg(json_encode($job)));
             $return = trim($return);
             $returnData = @json_decode($return, true);
             if (is_array($returnData)) {
                 if (trim($returnData["message"])) {
                     $returnMessages[] = [$job["revision"], strip_tags($returnData["message"])];
                 }
                 if (!$returnData["success"]) {
                     $stoppedByError = true;
                     break;
                 }
             } else {
                 $stoppedByError = true;
                 break;
             }
             $progress->advance();
         }
         $progress->finish();
         Update::composerDumpAutoload();
         Admin::deactivateMaintenanceMode();
         $this->output->writeln("\n");
         if ($stoppedByError) {
             $this->output->writeln("<error>Update stopped by error! Please check your logs</error>");
             $this->output->writeln("Last return value was: " . $return);
         } else {
             $this->output->writeln("<info>Update done!</info>");
             if (count($returnMessages)) {
                 $table = new Table($output);
                 $table->setHeaders(['Build', 'Message'])->setRows($returnMessages);
                 $table->render();
             }
         }
     }
 }
All Usage Examples Of Pimcore\Update::isComposerAvailable