more fixes for recovery.window and recovery.flag

Signed-off-by: Andy Miller <rhuk@mac.com>
This commit is contained in:
Andy Miller
2025-10-19 17:32:55 -06:00
parent f437235eb9
commit 3cf616e609
4 changed files with 19 additions and 5 deletions

View File

@@ -303,7 +303,7 @@ class RecoveryManager
*/
private function windowPath(): string
{
return $this->rootPath . '/system/recovery.window';
return $this->userPath . '/data/recovery.window';
}
/**
@@ -403,7 +403,9 @@ class RecoveryManager
'expires_at' => $createdAt + $ttl,
];
file_put_contents($this->windowPath(), json_encode($payload, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES) . "\n");
$path = $this->windowPath();
Folder::create(dirname($path));
file_put_contents($path, json_encode($payload, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES) . "\n");
}
/**

View File

@@ -418,9 +418,15 @@ class SafeUpgradeService
*/
public function clearRecoveryFlag(): void
{
$flag = $this->rootPath . '/user/data/recovery.flag';
if (is_file($flag)) {
@unlink($flag);
$paths = [
$this->rootPath . '/user/data/recovery.flag',
$this->rootPath . '/user/data/recovery.window',
];
foreach ($paths as $path) {
if (is_file($path)) {
@unlink($path);
}
}
}

View File

@@ -235,6 +235,8 @@ class UpdateCommand extends GpmCommand
return 1;
}
$recovery->closeUpgradeWindow();
return 0;
}

View File

@@ -187,8 +187,11 @@ PHP;
{
[$root] = $this->prepareLiveEnvironment();
$flag = $root . '/user/data/recovery.flag';
$window = $root . '/user/data/recovery.window';
Folder::create(dirname($flag));
file_put_contents($flag, 'flag');
Folder::create(dirname($window));
file_put_contents($window, json_encode(['expires_at' => time() + 120]));
$service = new SafeUpgradeService([
'root' => $root,
@@ -196,6 +199,7 @@ PHP;
$service->clearRecoveryFlag();
self::assertFileDoesNotExist($flag);
self::assertFileDoesNotExist($window);
}
/**