Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

enh(execute): Let user know how to reset when a step has been cancelled in progress #472

Merged
merged 3 commits into from
Jul 28, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 8 additions & 2 deletions index.php
Original file line number Diff line number Diff line change
Expand Up @@ -1105,6 +1105,11 @@ public function currentStep() {
return $jsonData;
}

public function getUpdateStepFileLocation() {
$updaterDir = $this->getUpdateDirectoryLocation() . '/updater-'.$this->getConfigOption('instanceid');
marcelklehr marked this conversation as resolved.
Show resolved Hide resolved
return $updaterDir . '/.step';
}

/**
* Rollback the changes if $step has failed
*
Expand Down Expand Up @@ -1345,8 +1350,9 @@ public function isAuthenticated() {
if ($stepState === 'start') {
die(
sprintf(
'Step %s is currently in process. Please reload this page later.',
$stepNumber
'Step %s is currently in process. Please reload this page later or remove the following file to start from scratch: %s',
marcelklehr marked this conversation as resolved.
Show resolved Hide resolved
$stepNumber,
$this->updater->getUpdateStepFileLocation()
)
);
}
Expand Down
5 changes: 3 additions & 2 deletions index.web.php
Original file line number Diff line number Diff line change
Expand Up @@ -157,8 +157,9 @@ public function isAuthenticated() {
if ($stepState === 'start') {
die(
sprintf(
'Step %s is currently in process. Please reload this page later.',
$stepNumber
'Step %s is currently in process. Please reload this page later or remove the following file to start from scratch: %s',
marcelklehr marked this conversation as resolved.
Show resolved Hide resolved
$stepNumber,
$this->updater->getUpdateStepFileLocation()
)
);
}
Expand Down
5 changes: 3 additions & 2 deletions lib/UpdateCommand.php
Original file line number Diff line number Diff line change
Expand Up @@ -139,8 +139,9 @@ protected function execute(InputInterface $input, OutputInterface $output) {
if ($stepState === 'start') {
$output->writeln(
sprintf(
'Step %s is currently in process. Please call this command later.',
$stepNumber
'Step %s is currently in process. Please call this command later or remove the following file to start from scratch: %s',
marcelklehr marked this conversation as resolved.
Show resolved Hide resolved
$stepNumber,
$this->updater->getUpdateStepFileLocation()
)
);
return -1;
Expand Down
5 changes: 5 additions & 0 deletions lib/Updater.php
Original file line number Diff line number Diff line change
Expand Up @@ -1069,6 +1069,11 @@ public function currentStep() {
return $jsonData;
}

public function getUpdateStepFileLocation() {
marcelklehr marked this conversation as resolved.
Show resolved Hide resolved
$updaterDir = $this->getUpdateDirectoryLocation() . '/updater-'.$this->getConfigOption('instanceid');
marcelklehr marked this conversation as resolved.
Show resolved Hide resolved
return $updaterDir . '/.step';
}

/**
* Rollback the changes if $step has failed
*
Expand Down
Binary file modified updater.phar
Binary file not shown.
96 changes: 45 additions & 51 deletions vendor/composer/ClassLoader.php
Original file line number Diff line number Diff line change
Expand Up @@ -45,66 +45,63 @@ class ClassLoader
/** @var \Closure(string):void */
private static $includeFile;

/** @var ?string */
/** @var string|null */
private $vendorDir;

// PSR-4
/**
* @var array[]
* @psalm-var array<string, array<string, int>>
* @var array<string, array<string, int>>
*/
private $prefixLengthsPsr4 = array();
/**
* @var array[]
* @psalm-var array<string, array<int, string>>
* @var array<string, list<string>>
*/
private $prefixDirsPsr4 = array();
/**
* @var array[]
* @psalm-var array<string, string>
* @var list<string>
*/
private $fallbackDirsPsr4 = array();

// PSR-0
/**
* @var array[]
* @psalm-var array<string, array<string, string[]>>
* List of PSR-0 prefixes
*
* Structured as array('F (first letter)' => array('Foo\Bar (full prefix)' => array('path', 'path2')))
*
* @var array<string, array<string, list<string>>>
*/
private $prefixesPsr0 = array();
/**
* @var array[]
* @psalm-var array<string, string>
* @var list<string>
*/
private $fallbackDirsPsr0 = array();

/** @var bool */
private $useIncludePath = false;

/**
* @var string[]
* @psalm-var array<string, string>
* @var array<string, string>
*/
private $classMap = array();

/** @var bool */
private $classMapAuthoritative = false;

/**
* @var bool[]
* @psalm-var array<string, bool>
* @var array<string, bool>
*/
private $missingClasses = array();

/** @var ?string */
/** @var string|null */
private $apcuPrefix;

/**
* @var self[]
* @var array<string, self>
*/
private static $registeredLoaders = array();

/**
* @param ?string $vendorDir
* @param string|null $vendorDir
*/
public function __construct($vendorDir = null)
{
Expand All @@ -113,7 +110,7 @@ public function __construct($vendorDir = null)
}

/**
* @return string[]
* @return array<string, list<string>>
*/
public function getPrefixes()
{
Expand All @@ -125,44 +122,39 @@ public function getPrefixes()
}

/**
* @return array[]
* @psalm-return array<string, array<int, string>>
* @return array<string, list<string>>
*/
public function getPrefixesPsr4()
{
return $this->prefixDirsPsr4;
}

/**
* @return array[]
* @psalm-return array<string, string>
* @return list<string>
*/
public function getFallbackDirs()
{
return $this->fallbackDirsPsr0;
}

/**
* @return array[]
* @psalm-return array<string, string>
* @return list<string>
*/
public function getFallbackDirsPsr4()
{
return $this->fallbackDirsPsr4;
}

/**
* @return string[] Array of classname => path
* @psalm-return array<string, string>
* @return array<string, string> Array of classname => path
*/
public function getClassMap()
{
return $this->classMap;
}

/**
* @param string[] $classMap Class to filename map
* @psalm-param array<string, string> $classMap
* @param array<string, string> $classMap Class to filename map
*
* @return void
*/
Expand All @@ -179,24 +171,25 @@ public function addClassMap(array $classMap)
* Registers a set of PSR-0 directories for a given prefix, either
* appending or prepending to the ones previously set for this prefix.
*
* @param string $prefix The prefix
* @param string[]|string $paths The PSR-0 root directories
* @param bool $prepend Whether to prepend the directories
* @param string $prefix The prefix
* @param list<string>|string $paths The PSR-0 root directories
* @param bool $prepend Whether to prepend the directories
*
* @return void
*/
public function add($prefix, $paths, $prepend = false)
{
$paths = (array) $paths;
if (!$prefix) {
if ($prepend) {
$this->fallbackDirsPsr0 = array_merge(
(array) $paths,
$paths,
$this->fallbackDirsPsr0
);
} else {
$this->fallbackDirsPsr0 = array_merge(
$this->fallbackDirsPsr0,
(array) $paths
$paths
);
}

Expand All @@ -205,19 +198,19 @@ public function add($prefix, $paths, $prepend = false)

$first = $prefix[0];
if (!isset($this->prefixesPsr0[$first][$prefix])) {
$this->prefixesPsr0[$first][$prefix] = (array) $paths;
$this->prefixesPsr0[$first][$prefix] = $paths;

return;
}
if ($prepend) {
$this->prefixesPsr0[$first][$prefix] = array_merge(
(array) $paths,
$paths,
$this->prefixesPsr0[$first][$prefix]
);
} else {
$this->prefixesPsr0[$first][$prefix] = array_merge(
$this->prefixesPsr0[$first][$prefix],
(array) $paths
$paths
);
}
}
Expand All @@ -226,27 +219,28 @@ public function add($prefix, $paths, $prepend = false)
* Registers a set of PSR-4 directories for a given namespace, either
* appending or prepending to the ones previously set for this namespace.
*
* @param string $prefix The prefix/namespace, with trailing '\\'
* @param string[]|string $paths The PSR-4 base directories
* @param bool $prepend Whether to prepend the directories
* @param string $prefix The prefix/namespace, with trailing '\\'
* @param list<string>|string $paths The PSR-4 base directories
* @param bool $prepend Whether to prepend the directories
*
* @throws \InvalidArgumentException
*
* @return void
*/
public function addPsr4($prefix, $paths, $prepend = false)
{
$paths = (array) $paths;
if (!$prefix) {
// Register directories for the root namespace.
if ($prepend) {
$this->fallbackDirsPsr4 = array_merge(
(array) $paths,
$paths,
$this->fallbackDirsPsr4
);
} else {
$this->fallbackDirsPsr4 = array_merge(
$this->fallbackDirsPsr4,
(array) $paths
$paths
);
}
} elseif (!isset($this->prefixDirsPsr4[$prefix])) {
Expand All @@ -256,18 +250,18 @@ public function addPsr4($prefix, $paths, $prepend = false)
throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
}
$this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
$this->prefixDirsPsr4[$prefix] = (array) $paths;
$this->prefixDirsPsr4[$prefix] = $paths;
} elseif ($prepend) {
// Prepend directories for an already registered namespace.
$this->prefixDirsPsr4[$prefix] = array_merge(
(array) $paths,
$paths,
$this->prefixDirsPsr4[$prefix]
);
} else {
// Append directories for an already registered namespace.
$this->prefixDirsPsr4[$prefix] = array_merge(
$this->prefixDirsPsr4[$prefix],
(array) $paths
$paths
);
}
}
Expand All @@ -276,8 +270,8 @@ public function addPsr4($prefix, $paths, $prepend = false)
* Registers a set of PSR-0 directories for a given prefix,
* replacing any others previously set for this prefix.
*
* @param string $prefix The prefix
* @param string[]|string $paths The PSR-0 base directories
* @param string $prefix The prefix
* @param list<string>|string $paths The PSR-0 base directories
*
* @return void
*/
Expand All @@ -294,8 +288,8 @@ public function set($prefix, $paths)
* Registers a set of PSR-4 directories for a given namespace,
* replacing any others previously set for this namespace.
*
* @param string $prefix The prefix/namespace, with trailing '\\'
* @param string[]|string $paths The PSR-4 base directories
* @param string $prefix The prefix/namespace, with trailing '\\'
* @param list<string>|string $paths The PSR-4 base directories
*
* @throws \InvalidArgumentException
*
Expand Down Expand Up @@ -481,9 +475,9 @@ public function findFile($class)
}

/**
* Returns the currently registered loaders indexed by their corresponding vendor directories.
* Returns the currently registered loaders keyed by their corresponding vendor directories.
*
* @return self[]
* @return array<string, self>
*/
public static function getRegisteredLoaders()
{
Expand Down