dpl/rollback.php

17 lines
816 B
PHP

<?php
// Field-scoped compare-before-restore. Preview unless explicitly --apply.
require __DIR__ . '/operations.php';
use DplOnboarding\PanelChange;
$opts=getopt('', ['backup:', 'apply', 'help']);
if (isset($opts['help'])) { echo "--backup=DIR [--apply]; restores new-format promotion journal only\n"; exit; }
try {
$dir=$opts['backup'] ?? throw new RuntimeException('Missing --backup');
DplOnboarding\boot();
$result=DplOnboarding\locked($dir, fn() => PanelChange::rollback($dir, array_key_exists('apply',$opts)));
echo json_encode($result, JSON_THROW_ON_ERROR | JSON_UNESCAPED_UNICODE) . PHP_EOL;
} catch (Throwable $e) {
$reason=get_class($e)===RuntimeException::class ? $e->getMessage() : "Inspect journal/conflicts";
fwrite(STDERR, "Rollback stopped: " . $reason . "\n");
exit(1);
}