mirror of
https://we.phorge.it/source/phorge.git
synced 2025-02-10 13:58:34 +01:00
Summary: Ref T12470. Provides an "integrity" utility which runs in these modes: - Verify: check that hashes match. - Compute: backfill missing hashes. - Strip: remove hashes. Useful for upgrading across a hash change. - Corrupt: intentionally corrupt hashes. Useful for debugging. - Overwrite: force hash recomputation. Users normally shouldn't need to run any of this stuff, but this provides a reasonable toolkit for managing integrity hashes. I'll recommend existing installs use `bin/files integrity --compute all` in the upgrade guidance to backfill hashes for existing files. Test Plan: - Ran the script in many modes against various files, saw expected operation, including: - Verified a file, corrupted it, saw it fail. - Verified a file, stripped it, saw it have no hash. - Stripped a file, computed it, got a clean verify. - Stripped a file, overwrote it, got a clean verify. - Corrupted a file, overwrote it, got a clean verify. - Overwrote a file, overwrote again, got a no-op. Reviewers: chad Reviewed By: chad Maniphest Tasks: T12470 Differential Revision: https://secure.phabricator.com/D17629
70 lines
1.5 KiB
PHP
70 lines
1.5 KiB
PHP
<?php
|
|
|
|
abstract class PhabricatorManagementWorkflow extends PhutilArgumentWorkflow {
|
|
|
|
public function isExecutable() {
|
|
return true;
|
|
}
|
|
|
|
public function getViewer() {
|
|
// Some day, we might provide a more general viewer mechanism to scripts.
|
|
// For now, workflows can call this method for convenience and future
|
|
// flexibility.
|
|
return PhabricatorUser::getOmnipotentUser();
|
|
}
|
|
|
|
protected function parseTimeArgument($time) {
|
|
if (!strlen($time)) {
|
|
return null;
|
|
}
|
|
|
|
$epoch = strtotime($time);
|
|
if ($epoch <= 0) {
|
|
throw new PhutilArgumentUsageException(
|
|
pht('Unable to parse time "%s".', $time));
|
|
}
|
|
return $epoch;
|
|
}
|
|
|
|
protected function newContentSource() {
|
|
return PhabricatorContentSource::newForSource(
|
|
PhabricatorConsoleContentSource::SOURCECONST);
|
|
}
|
|
|
|
protected function logInfo($label, $message) {
|
|
$this->logRaw(
|
|
tsprintf(
|
|
"**<bg:blue> %s </bg>** %s\n",
|
|
$label,
|
|
$message));
|
|
}
|
|
|
|
protected function logOkay($label, $message) {
|
|
$this->logRaw(
|
|
tsprintf(
|
|
"**<bg:green> %s </bg>** %s\n",
|
|
$label,
|
|
$message));
|
|
}
|
|
|
|
protected function logWarn($label, $message) {
|
|
$this->logRaw(
|
|
tsprintf(
|
|
"**<bg:yellow> %s </bg>** %s\n",
|
|
$label,
|
|
$message));
|
|
}
|
|
|
|
protected function logFail($label, $message) {
|
|
$this->logRaw(
|
|
tsprintf(
|
|
"**<bg:red> %s </bg>** %s\n",
|
|
$label,
|
|
$message));
|
|
}
|
|
|
|
private function logRaw($message) {
|
|
fprintf(STDERR, '%s', $message);
|
|
}
|
|
|
|
}
|