1
0
Fork 0
mirror of https://we.phorge.it/source/arcanist.git synced 2024-09-20 08:58:55 +02:00

Make "arc list" use "differential.query", not "differential.find"

Summary: Move toward deprecating "differntial.find". Also update the output to
be more inline with "arc branch".

Test Plan: Ran "arc list", "arc branch".

Reviewers: btrahan, arice

Reviewed By: arice

CC: aran, epriestley

Maniphest Tasks: T838

Differential Revision: https://secure.phabricator.com/D1579
This commit is contained in:
epriestley 2012-02-06 13:08:01 -08:00
parent 6bb43de4bb
commit 84f9148655
3 changed files with 49 additions and 29 deletions

View file

@ -151,15 +151,13 @@ final class BranchInfo {
* Generates a colored status name * Generates a colored status name
*/ */
public function getFormattedStatus() { public function getFormattedStatus() {
return phutil_console_format( return self::renderColorizedRevisionStatus($this->status);
'<fg:'.$this->getColorForStatus().'>%s</fg>',
$this->status);
} }
/** /**
* Assigns a pretty color based on the status * Assigns a pretty color based on the status
*/ */
private function getColorForStatus() { private static function getColorForStatus($status) {
static $status_to_color = array( static $status_to_color = array(
'Committed' => 'cyan', 'Committed' => 'cyan',
'Needs Review' => 'magenta', 'Needs Review' => 'magenta',
@ -168,7 +166,13 @@ final class BranchInfo {
'No Revision' => 'blue', 'No Revision' => 'blue',
'Abandoned' => 'default', 'Abandoned' => 'default',
); );
return idx($status_to_color, $this->status, 'default'); return idx($status_to_color, $status, 'default');
}
public static function renderColorizedRevisionStatus($status) {
return phutil_console_format(
'<fg:'.self::getColorForStatus($status).'>%s</fg>',
$status);
} }
} }

View file

@ -26,7 +26,7 @@ final class ArcanistListWorkflow extends ArcanistBaseWorkflow {
public function getCommandHelp() { public function getCommandHelp() {
return phutil_console_format(<<<EOTEXT return phutil_console_format(<<<EOTEXT
**list** **list**
Supports: git, svn Supports: git, svn, hg
List your open Differential revisions. List your open Differential revisions.
EOTEXT EOTEXT
); );
@ -45,40 +45,55 @@ EOTEXT
} }
public function run() { public function run() {
$revisions = $this->getConduit()->callMethodSynchronous(
$conduit = $this->getConduit(); 'differential.query',
$repository_api = $this->getRepositoryAPI();
$revision_future = $conduit->callMethod(
'differential.find',
array( array(
'guids' => array($this->getUserPHID()), 'authors' => array($this->getUserPHID()),
'query' => 'open', 'status' => 'status-open',
)); ));
$revisions = array();
foreach ($revision_future->resolve() as $revision_dict) {
$revisions[] = ArcanistDifferentialRevisionRef::newFromDictionary(
$revision_dict);
}
if (!$revisions) { if (!$revisions) {
echo "You have no open Differential revisions.\n"; echo "You have no open Differential revisions.\n";
return 0; return 0;
} }
$repository_api = $this->getRepositoryAPI();
foreach ($revisions as $revision) { $info = array();
$revision_path = Filesystem::resolvePath($revision->getSourcePath());
$status_len = 0;
foreach ($revisions as $key => $revision) {
$revision_path = Filesystem::resolvePath($revision['sourcePath']);
$current_path = Filesystem::resolvePath($repository_api->getPath()); $current_path = Filesystem::resolvePath($repository_api->getPath());
$from_here = ($revision_path == $current_path); if ($revision_path == $current_path) {
$info[$key]['here'] = 1;
} else {
$info[$key]['here'] = 0;
}
$info[$key]['sort'] = sprintf(
'%d%04d%08d',
$info[$key]['here'],
$revision['status'],
$revision['id']);
$info[$key]['statusColorized'] =
BranchInfo::renderColorizedRevisionStatus(
$revision['statusName']);
$status_len = max(
$status_len,
strlen($info[$key]['statusColorized']));
}
$info = isort($info, 'sort');
foreach ($info as $key => $spec) {
$revision = $revisions[$key];
printf( printf(
" %15s | %s | D%d | %s\n", "%s %-".($status_len + 4)."s D%d: %s\n",
$revision->getStatusName(), $spec['here']
$from_here ? '*' : ' ', ? phutil_console_format('**%s**', '*')
$revision->getID(), : ' ',
$revision->getName()); $spec['statusColorized'],
$revision['id'],
$revision['title']);
} }
return 0; return 0;

View file

@ -6,11 +6,12 @@
phutil_require_module('arcanist', 'differential/revision'); phutil_require_module('arcanist', 'branch');
phutil_require_module('arcanist', 'workflow/base'); phutil_require_module('arcanist', 'workflow/base');
phutil_require_module('phutil', 'console'); phutil_require_module('phutil', 'console');
phutil_require_module('phutil', 'filesystem'); phutil_require_module('phutil', 'filesystem');
phutil_require_module('phutil', 'utils');
phutil_require_source('ArcanistListWorkflow.php'); phutil_require_source('ArcanistListWorkflow.php');