Page MenuHomePhabricator

D12165.diff
No OneTemporary

D12165.diff

diff --git a/src/workflow/ArcanistTasksWorkflow.php b/src/workflow/ArcanistTasksWorkflow.php
--- a/src/workflow/ArcanistTasksWorkflow.php
+++ b/src/workflow/ArcanistTasksWorkflow.php
@@ -53,6 +53,11 @@
'unassigned' => '--owner suppresses unassigned',
),
),
+ 'project' => array(
+ 'param' => 'project',
+ 'help' => 'Only show tasks associated with the given project,'.
+ 'also accepts project hastags.',
+ ),
'order' => array(
'param' => 'task_order',
'help' =>
@@ -75,6 +80,7 @@
$status = $this->getArgument('status');
$owner = $this->getArgument('owner');
+ $project = $this->getArgument('project');
$order = $this->getArgument('order');
$limit = $this->getArgument('limit');
$unassigned = $this->getArgument('unassigned');
@@ -87,9 +93,16 @@
$owner_phid = $this->getUserPHID();
}
+ if ($project) {
+ $project_phid = $this->findProjectPHID($project);
+ } else {
+ $project_phid = null;
+ }
+
$this->tasks = $this->loadManiphestTasks(
($status == 'all' ? 'any' : $status),
$owner_phid,
+ $project_phid,
$order,
$limit);
@@ -189,7 +202,36 @@
return idx($user, 'phid');
}
- private function loadManiphestTasks($status, $owner_phid, $order, $limit) {
+ private function findProjectPHID($project_name) {
+ $conduit = $this->getConduit();
+
+ // Converts "My Project" to slug-equivalent "my_project".
+ $project_slug = str_replace(' ', '_', $project_name);
+ $project_slug = phutil_utf8_strtolower($project_slug);
+
+ $projects = $conduit->callMethodSynchronous(
+ 'project.query',
+ array(
+ 'slugs' => array($project_slug),
+ ));
+
+ $project = head(head($projects));
+
+ if (!$project) {
+ $error = "Couldn't find project with name or hashtag \"$project_name\".";
+ throw new ArcanistUsageException($error);
+ }
+
+ return idx($project, 'phid');
+ }
+
+ private function loadManiphestTasks(
+ $status,
+ $owner_phid,
+ $project_phid,
+ $order,
+ $limit) {
+
$conduit = $this->getConduit();
$find_params = array();
@@ -197,6 +239,10 @@
$find_params['ownerPHIDs'] = array($owner_phid);
}
+ if ($project_phid != null) {
+ $find_params['projectPHIDs'] = array($project_phid);
+ }
+
if ($limit !== false) {
$find_params['limit'] = $limit;
}

File Metadata

Mime Type
text/plain
Expires
Wed, May 22, 4:11 AM (3 w, 4 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
6298274
Default Alt Text
D12165.diff (2 KB)

Event Timeline