Page MenuHomePhabricator

D9601.id.diff
No OneTemporary

D9601.id.diff

diff --git a/src/workflow/ArcanistTasksWorkflow.php b/src/workflow/ArcanistTasksWorkflow.php
--- a/src/workflow/ArcanistTasksWorkflow.php
+++ b/src/workflow/ArcanistTasksWorkflow.php
@@ -39,7 +39,6 @@
return true;
}
-
public function getArguments() {
return array(
'status' => array(
@@ -69,7 +68,7 @@
),
'unassigned' => array(
'help' => 'Only show tasks that are not assigned (upforgrabs).',
- )
+ ),
);
}
@@ -101,27 +100,24 @@
return 0;
}
- $task_rows = array();
+ $table = id(new PhutilConsoleTable())
+ ->setShowHeader(false)
+ ->addColumn('id', array('title' => 'ID'))
+ ->addColumn('title', array('title' => 'Title'))
+ ->addColumn('priority', array('title' => 'Priority'))
+ ->addColumn('status', array('title' => 'Status'));
+
foreach ($this->tasks as $task) {
$output = array();
// Render the "T123" column.
$task_id = 'T'.$task['id'];
- $formatted_task_id = phutil_console_format(
- '**%s**',
- $task_id);
- $output['id'] = array(
- 'text' => $formatted_task_id,
- 'len' => phutil_utf8_console_strlen($task_id),
- );
+ $formatted_task_id = phutil_console_format('**%s**', $task_id);
+ $output['id'] = $formatted_task_id;
// Render the "Title" column.
$formatted_title = rtrim($task['title']);
- $output['title'] = array(
- 'text' => $formatted_title,
- 'len' => phutil_utf8_console_strlen($formatted_title),
- );
-
+ $output['title'] = $formatted_title;
// Render the "Priority" column.
$web_to_terminal_colors = array(
@@ -142,7 +138,7 @@
'lightblue' => 'blue',
'lightsky' => 'blue',
'lightindigo' => 'magenta',
- 'lightviolet' => 'magenta'
+ 'lightviolet' => 'magenta',
);
if (isset($task['priorityColor'])) {
@@ -153,10 +149,7 @@
$formatted_priority = phutil_console_format(
"<bg:{$color}> </bg> %s",
$task['priority']);
- $output['priority'] = array(
- 'text' => $formatted_priority,
- 'len' => phutil_utf8_console_strlen($task['priority']) + 2,
- );
+ $output['priority'] = $formatted_priority;
// Render the "Status" column.
if (isset($task['isClosed'])) {
@@ -170,70 +163,15 @@
$formatted_status = phutil_console_format(
"<bg:{$status_color}> </bg> %s",
$status_text);
- $output['status'] = array(
- 'text' => $formatted_status,
- 'len' => phutil_utf8_console_strlen('status') + 2,
- );
+ $output['status'] = $formatted_status;
} else {
- $output['status'] = array(
- 'text' => '',
- 'len' => 0,
- );
- }
-
- $task_rows[] = $output;
- }
-
- // Find the longest string in each column.
- $col_size = array();
- foreach ($task_rows as $row) {
- foreach ($row as $key => $col) {
- if (empty($col_size[$key])) {
- $col_size[$key] = 0;
- }
- $col_size[$key] = max($col_size[$key], $col['len']);
+ $output['status'] = '';
}
- }
-
- // Determine the terminal width. If we can't figure it out, assume 80.
- $width = nonempty(phutil_console_get_terminal_width(), 80);
-
-
- // We're going to clip the titles so they'll all fit in one line on the
- // terminal. Figure out where to clip them.
- $padding_between_columns = 4;
- $clip_title_at = max(
- // Always show at least a little bit of text even if it will make the
- // UI wrap, since it's useless if we don't show anything.
- 16,
- $width -
- ($col_size['id'] + $col_size['priority'] + $col_size['status'] +
- ($padding_between_columns * 3)));
- $col_size['title'] = min($col_size['title'], $clip_title_at);
-
- foreach ($task_rows as $key => $cols) {
- $new_title = phutil_utf8_shorten($cols['title']['text'], $clip_title_at);
- $task_rows[$key]['title']['len'] = phutil_utf8_console_strlen($new_title);
- $task_rows[$key]['title']['text'] = $new_title;
+ $table->addRow($output);
}
- $table = array();
- foreach ($task_rows as $row) {
- $trow = array();
- foreach ($row as $col => $cell) {
- $text = $cell['text'];
- $pad_len = $col_size[$col] - $cell['len'];
- if ($pad_len) {
- $text .= str_repeat(' ', $pad_len);
- }
- $trow[] = $text;
- }
- $table[] = implode(str_repeat(' ', $padding_between_columns), $trow);
- }
- $table = implode("\n", $table)."\n";
-
- echo $table;
+ $table->draw();
}
private function findOwnerPHID($owner) {
@@ -268,11 +206,7 @@
$find_params['order'] = ($order ? 'order-'.$order : 'order-priority');
$find_params['status'] = ($status ? 'status-'.$status : 'status-open');
- $tasks = $conduit->callMethodSynchronous(
- 'maniphest.query',
- $find_params);
-
- return $tasks;
+ return $conduit->callMethodSynchronous('maniphest.query', $find_params);
}
}

File Metadata

Mime Type
text/plain
Expires
Fri, Oct 18, 10:49 PM (3 w, 4 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
6715123
Default Alt Text
D9601.id.diff (5 KB)

Event Timeline