1
0
Fork 0
mirror of https://we.phorge.it/source/arcanist.git synced 2024-12-01 19:22:41 +01:00
phorge-arcanist/src/workflow/ArcanistTodoWorkflow.php
Alan Huang 1f65a115cc Create an arc todo workflow for quickly creating a task.
Summary:
Run `arc todo o rly?` to create a Maniphest task
titled 'o rly?'. Pass --cc to add CCs besides yourself.

Test Plan: Ran `arc todo o rly?`. Behaved as expected.

Reviewers: epriestley

Reviewed By: epriestley

CC: aran, Korvin

Maniphest Tasks: T749, T1325

Differential Revision: https://secure.phabricator.com/D2952
2012-07-10 17:32:36 -07:00

98 lines
2.1 KiB
PHP

<?php
/*
* Copyright 2012 Facebook, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* Quickly create a task
*
* @group workflow
*/
final class ArcanistTodoWorkflow extends ArcanistBaseWorkflow {
public function getCommandSynopses() {
return phutil_console_format(<<<EOTEXT
**todo** __summary__ [__options__]
EOTEXT
);
}
public function getCommandHelp() {
return phutil_console_format(<<<EOTEXT
Quickly create a task for yourself.
EOTEXT
);
}
public function requiresConduit() {
return true;
}
public function desiresWorkingCopy() {
return true;
}
public function requiresAuthentication() {
return true;
}
public function getArguments() {
return array(
'*' => 'summary',
'cc' => array(
'param' => 'cc',
'short' => 'C',
'repeat' => true,
'help' => 'Other users to CC on the new task.',
),
);
}
public function run() {
$summary = implode(' ', $this->getArgument('summary'));
$ccs = $this->getArgument('cc');
$conduit = $this->getConduit();
if (trim($summary) == '') {
echo "Please provide a summary.\n";
return;
}
$args = array(
'title' => $summary,
'ownerPHID' => $this->getUserPHID()
);
if ($ccs) {
$phids = array();
$users = $conduit->callMethodSynchronous(
'user.query',
array(
'usernames' => $ccs
));
foreach ($users as $user => $info) {
$phids[] = $info['phid'];
}
$args['ccPHIDs'] = $phids;
}
$conduit->callMethodSynchronous(
'maniphest.createtask',
$args);
}
}