19 declare(strict_types=1);
    55         $this->agent_finder = $agent_finder;
    61         $this->setDescription(
"Starts and manages migrations needed after an update of ILIAS");
    62         $this->addOption(
"yes", 
"y", InputOption::VALUE_NONE, 
"Confirm every message of the installation.");
    63         $this->addOption(
"run", 
"R", InputOption::VALUE_REQUIRED, 
"Run the migration with the name given.");
    67             InputOption::VALUE_REQUIRED,
    68             "Run the selected migration with X steps. Pass " . 
Migration::INFINITE . 
" for all remaining steps."    73     protected function execute(InputInterface $input, OutputInterface $output): 
int    76         $io->printLicenseMessage();
    77         $io->title(
"Trigger migrations in ILIAS");
    80         if ($input->hasOption(
'run') && !empty($input->getOption(
'run'))) {
    93         $migration_name = $input->getOption(
'run');
    94         $migrations = $agent->getMigrations();
    95         if (!isset($migrations[$migration_name]) || !($migrations[$migration_name] instanceof 
Migration)) {
    96             $io->
error(
"Aborting Migration, did not find $migration_name.");
    99         $migration = $migrations[$migration_name];
   101         $steps = (
int) $input->getOption(
'steps');
   105                 $io->
text(
"Determined infinite steps to run.");
   108                 $steps = $migration->getDefaultAmountOfStepsPerRun();
   109                 $io->
text(
"no --steps option found, fallback to default amount of steps of migration. ($steps)");
   112                 $io->
text(
"Determined $steps step(s) to run.");
   115         $objective = 
new Objective\MigrationObjective($migration, $steps);
   121         $preconditions = $migration->getPreconditions($env);
   122         if ($preconditions !== []) {
   123             $objective = 
new Objective\ObjectiveWithPreconditions(
   129         $io->
inform(
"Preparing Environment for {$steps_text} steps in {$migration_name}");
   131             $this->achieveObjective($objective, $env, $io);
   140         $migrations = $agent->getMigrations();
   141         $count = count($migrations);
   143             $io->
inform(
"There are currently no migrations to run.");
   151         $io->
inform(
"Found $count migrations:");
   152         foreach ($migrations as $migration_key => $migration) {
   154             $migration->prepare($env);
   155             $steps = $migration->getRemainingAmountOfSteps();
   156             $status = $steps === 0 ? 
"[done]" : 
"[remaining steps: $steps]";
   157             $io->
text($migration_key . 
": " . $migration->getLabel() . 
" " . $status);
   159         $io->
inform(
'Run them by passing --run <migration_id>, e.g. --run ' . $migration_key);
   167         if ($preconditions !== []) {
   168             $objective = 
new Objective\ObjectiveWithPreconditions(
   173             $environment = $this->achieveObjective($objective, $environment);
 Wrapper around symfonies input and output facilities to provide just the functionality required for t...
 
An objective is a desired state of the system that is supposed to be created by the setup...
 
A migration is a potentially long lasting operation that can be broken into discrete steps...
 
execute(InputInterface $input, OutputInterface $output)
 
__construct(AgentFinder $agent_finder, array $preconditions)
 
A non-objective, nothing to do to achieve it... 
 
getRelevantAgent(InputInterface $input)
 
prepareEnvironmentForMigration(Environment $environment, Migration $migration)
 
runMigration(InputInterface $input, IOWrapper $io)
 
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
 
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
 
An environment holds resources to be used in the setup process. 
 
configureCommandForPlugins()
 
const RESOURCE_ADMIN_INTERACTION
 
trait HasAgent
Add this to an Command that has an agent. 
 
getRequestedConfirmation()
 
listMigrations(InputInterface $input, IOWrapper $io)
 
Signals that a necessary confirmation from the admin is missing. 
 
getPreconditions(Environment $environment)
Objectives the migration depend on. 
 
array $preconditions
var Objective[]