Changeset View
Changeset View
Standalone View
Standalone View
src/land/ArcanistLandEngine.php
- This file was added.
<?php | |||||
abstract class ArcanistLandEngine extends Phobject { | |||||
private $workflow; | |||||
private $repositoryAPI; | |||||
private $targetRemote; | |||||
private $targetOnto; | |||||
private $sourceRef; | |||||
private $commitMessageFile; | |||||
private $shouldHold; | |||||
private $shouldKeep; | |||||
private $shouldSquash; | |||||
private $shouldDeleteRemote; | |||||
private $shouldPreview; | |||||
// TODO: This is really grotesque. | |||||
private $buildMessageCallback; | |||||
final public function setWorkflow(ArcanistWorkflow $workflow) { | |||||
$this->workflow = $workflow; | |||||
return $this; | |||||
} | |||||
final public function getWorkflow() { | |||||
return $this->workflow; | |||||
} | |||||
final public function setRepositoryAPI( | |||||
ArcanistRepositoryAPI $repository_api) { | |||||
$this->repositoryAPI = $repository_api; | |||||
return $this; | |||||
} | |||||
final public function getRepositoryAPI() { | |||||
return $this->repositoryAPI; | |||||
} | |||||
final public function setShouldHold($should_hold) { | |||||
$this->shouldHold = $should_hold; | |||||
return $this; | |||||
} | |||||
final public function getShouldHold() { | |||||
return $this->shouldHold; | |||||
} | |||||
final public function setShouldKeep($should_keep) { | |||||
$this->shouldKeep = $should_keep; | |||||
return $this; | |||||
} | |||||
final public function getShouldKeep() { | |||||
return $this->shouldKeep; | |||||
} | |||||
final public function setShouldSquash($should_squash) { | |||||
$this->shouldSquash = $should_squash; | |||||
return $this; | |||||
} | |||||
final public function getShouldSquash() { | |||||
return $this->shouldSquash; | |||||
} | |||||
final public function setShouldPreview($should_preview) { | |||||
$this->shouldPreview = $should_preview; | |||||
return $this; | |||||
} | |||||
final public function getShouldPreview() { | |||||
return $this->shouldPreview; | |||||
} | |||||
final public function setTargetRemote($target_remote) { | |||||
$this->targetRemote = $target_remote; | |||||
return $this; | |||||
} | |||||
final public function getTargetRemote() { | |||||
return $this->targetRemote; | |||||
} | |||||
final public function setTargetOnto($target_onto) { | |||||
$this->targetOnto = $target_onto; | |||||
return $this; | |||||
} | |||||
final public function getTargetOnto() { | |||||
return $this->targetOnto; | |||||
} | |||||
final public function setSourceRef($source_ref) { | |||||
$this->sourceRef = $source_ref; | |||||
return $this; | |||||
} | |||||
final public function getSourceRef() { | |||||
return $this->sourceRef; | |||||
} | |||||
final public function setBuildMessageCallback($build_message_callback) { | |||||
$this->buildMessageCallback = $build_message_callback; | |||||
return $this; | |||||
} | |||||
final public function getBuildMessageCallback() { | |||||
return $this->buildMessageCallback; | |||||
} | |||||
final public function setCommitMessageFile($commit_message_file) { | |||||
$this->commitMessageFile = $commit_message_file; | |||||
return $this; | |||||
} | |||||
final public function getCommitMessageFile() { | |||||
return $this->commitMessageFile; | |||||
} | |||||
abstract public function execute(); | |||||
abstract protected function getLandingCommits(); | |||||
protected function printLandingCommits() { | |||||
$logs = $this->getLandingCommits(); | |||||
if (!$logs) { | |||||
throw new ArcanistUsageException( | |||||
pht( | |||||
'There are no commits on "%s" which are not already present on '. | |||||
'the target.', | |||||
$this->getSourceRef())); | |||||
} | |||||
$list = id(new PhutilConsoleList()) | |||||
->setWrap(false) | |||||
->addItems($logs); | |||||
id(new PhutilConsoleBlock()) | |||||
->addParagraph( | |||||
pht( | |||||
'These %s commit(s) will be landed:', | |||||
new PhutilNumber(count($logs)))) | |||||
->addList($list) | |||||
->draw(); | |||||
} | |||||
protected function writeWarn($title, $message) { | |||||
return $this->getWorkflow()->writeWarn($title, $message); | |||||
} | |||||
protected function writeInfo($title, $message) { | |||||
return $this->getWorkflow()->writeInfo($title, $message); | |||||
} | |||||
protected function writeOkay($title, $message) { | |||||
return $this->getWorkflow()->writeOkay($title, $message); | |||||
} | |||||
} |