1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-12-30 09:20:58 +01:00

Remove PhabricatorRepository::loadAllByPHIDOrCallsign()

Summary: Ref T603. Move to real Query classes.

Test Plan:
  - Ran `phd debug pull X` (where `X` does not match a repository).
  - Ran `phd debug pull Y` (where `Y` does match a repository).
  - Ran `phd debug pull`.
  - Ran `repository pull`.
  - Ran `repository pull X`.
  - Ran `repository pull Y`.
  - Ran `repository discover`.
  - Ran `repository delete`.
  - Ran `grep`.

Reviewers: btrahan

Reviewed By: btrahan

CC: aran

Maniphest Tasks: T603

Differential Revision: https://secure.phabricator.com/D7137
This commit is contained in:
epriestley 2013-09-26 12:36:24 -07:00
parent be4024c9c2
commit 79abe6653e
7 changed files with 57 additions and 34 deletions

View file

@ -176,11 +176,26 @@ final class PhabricatorRepositoryPullLocalDaemon
* @task pull
*/
protected function loadRepositories(array $names) {
if (!count($names)) {
return id(new PhabricatorRepository())->loadAll();
} else {
return PhabricatorRepository::loadAllByPHIDOrCallsign($names);
$query = id(new PhabricatorRepositoryQuery())
->setViewer($this->getViewer());
if ($names) {
$query->withCallsigns($names);
}
$repos = $query->execute();
if ($names) {
$by_callsign = mpull($repos, null, 'getCallsign');
foreach ($names as $name) {
if (empty($by_callsign[$name])) {
throw new Exception(
"No repository exists with callsign '{$name}'!");
}
}
}
return $repos;
}
public function discoverRepository(PhabricatorRepository $repository) {

View file

@ -7,7 +7,7 @@ final class PhabricatorRepositoryManagementDeleteWorkflow
$this
->setName('delete')
->setExamples('**delete** __repository__ ...')
->setSynopsis('Delete __repository__, named by callsign or PHID.')
->setSynopsis('Delete __repository__, named by callsign.')
->setArguments(
array(
array(
@ -22,12 +22,11 @@ final class PhabricatorRepositoryManagementDeleteWorkflow
}
public function execute(PhutilArgumentParser $args) {
$names = $args->getArg('repos');
$repos = PhabricatorRepository::loadAllByPHIDOrCallsign($names);
$repos = $this->loadRepositories($args, 'repos');
if (!$repos) {
throw new PhutilArgumentUsageException(
"Specify one or more repositories to delete, by callsign or PHID.");
"Specify one or more repositories to delete, by callsign.");
}
$console = PhutilConsole::getConsole();

View file

@ -7,7 +7,7 @@ final class PhabricatorRepositoryManagementDiscoverWorkflow
$this
->setName('discover')
->setExamples('**discover** [__options__] __repository__ ...')
->setSynopsis('Discover __repository__, named by callsign or PHID.')
->setSynopsis('Discover __repository__, named by callsign.')
->setArguments(
array(
array(
@ -27,12 +27,11 @@ final class PhabricatorRepositoryManagementDiscoverWorkflow
}
public function execute(PhutilArgumentParser $args) {
$names = $args->getArg('repos');
$repos = PhabricatorRepository::loadAllByPHIDOrCallsign($names);
$repos = $this->loadRepositories($args, 'repos');
if (!$repos) {
throw new PhutilArgumentUsageException(
"Specify one or more repositories to discover, by callsign or PHID.");
"Specify one or more repositories to discover, by callsign.");
}
$console = PhutilConsole::getConsole();

View file

@ -7,7 +7,7 @@ final class PhabricatorRepositoryManagementPullWorkflow
$this
->setName('pull')
->setExamples('**pull** __repository__ ...')
->setSynopsis('Pull __repository__, named by callsign or PHID.')
->setSynopsis('Pull __repository__, named by callsign.')
->setArguments(
array(
array(
@ -22,12 +22,11 @@ final class PhabricatorRepositoryManagementPullWorkflow
}
public function execute(PhutilArgumentParser $args) {
$names = $args->getArg('repos');
$repos = PhabricatorRepository::loadAllByPHIDOrCallsign($names);
$repos = $this->loadRepositories($args, 'repos');
if (!$repos) {
throw new PhutilArgumentUsageException(
"Specify one or more repositories to pull, by callsign or PHID.");
"Specify one or more repositories to pull, by callsign.");
}
$console = PhutilConsole::getConsole();

View file

@ -7,4 +7,28 @@ abstract class PhabricatorRepositoryManagementWorkflow
return true;
}
protected function loadRepositories(PhutilArgumentParser $args, $param) {
$callsigns = $args->getArg($param);
if (!$callsigns) {
return null;
}
$repos = id(new PhabricatorRepositoryQuery())
->setViewer(PhabricatorUser::getOmnipotentUser())
->withCallsigns($callsigns)
->execute();
$repos = mpull($repos, null, 'getCallsign');
foreach ($callsigns as $callsign) {
if (empty($repos[$callsign])) {
throw new PhutilArgumentUsageException(
"No repository with callsign '{$callsign}' exists!");
}
}
return $repos;
}
}

View file

@ -451,24 +451,6 @@ final class PhabricatorRepository extends PhabricatorRepositoryDAO
return 'r'.$this->getCallsign().$short_identifier;
}
public static function loadAllByPHIDOrCallsign(array $names) {
// TODO: (T603) Get rid of this.
$repositories = array();
foreach ($names as $name) {
$repo = id(new PhabricatorRepository())->loadOneWhere(
'phid = %s OR callsign = %s',
$name,
$name);
if (!$repo) {
throw new Exception(
"No repository with PHID or callsign '{$name}' exists!");
}
$repositories[$repo->getID()] = $repo;
}
return $repositories;
}
/* -( Repository URI Management )------------------------------------------ */

View file

@ -14,4 +14,9 @@ abstract class PhabricatorDaemon extends PhutilDaemon {
LiskDAO::closeAllConnections();
return;
}
public function getViewer() {
return PhabricatorUser::getOmnipotentUser();
}
}