mirror of
https://we.phorge.it/source/arcanist.git
synced 2024-11-26 00:32:41 +01:00
Make arc shell-complete
more robust.
Summary: Fixes T5122. Add some basic error handling to the `shell-complete` workflow. Test Plan: `arc shell-complete` no longer throws errors. Reviewers: epriestley, #blessed_reviewers Reviewed By: epriestley, #blessed_reviewers Subscribers: epriestley, Korvin Maniphest Tasks: T5122 Differential Revision: https://secure.phabricator.com/D9268
This commit is contained in:
parent
f64dee022e
commit
85b8b2e5f8
1 changed files with 10 additions and 7 deletions
|
@ -30,8 +30,9 @@ EOTEXT
|
|||
public function getArguments() {
|
||||
return array(
|
||||
'current' => array(
|
||||
'help' => 'Current term in the argument list being completed.',
|
||||
'param' => 'cursor_position',
|
||||
'paramtype' => 'int',
|
||||
'help' => 'Current term in the argument list being completed.',
|
||||
),
|
||||
'*' => 'argv',
|
||||
);
|
||||
|
@ -42,7 +43,6 @@ EOTEXT
|
|||
}
|
||||
|
||||
public function run() {
|
||||
|
||||
$pos = $this->getArgument('current');
|
||||
$argv = $this->getArgument('argv', array());
|
||||
$argc = count($argv);
|
||||
|
@ -50,6 +50,11 @@ EOTEXT
|
|||
$pos = $argc - 1;
|
||||
}
|
||||
|
||||
if ($pos > $argc) {
|
||||
throw new ArcanistUsageException(
|
||||
'Specified position is greater than the number of arguments provided.');
|
||||
}
|
||||
|
||||
// Determine which revision control system the working copy uses, so we
|
||||
// can filter out commands and flags which aren't supported. If we can't
|
||||
// figure it out, just return all flags/commands.
|
||||
|
@ -70,7 +75,7 @@ EOTEXT
|
|||
|
||||
$arc_config = $this->getArcanistConfiguration();
|
||||
|
||||
if ($pos == 1) {
|
||||
if ($pos <= 1) {
|
||||
$workflows = $arc_config->buildAllWorkflows();
|
||||
|
||||
$complete = array();
|
||||
|
@ -81,8 +86,7 @@ EOTEXT
|
|||
|
||||
$supported = $workflow->getSupportedRevisionControlSystems();
|
||||
|
||||
$ok = (in_array('any', $supported)) ||
|
||||
(in_array($vcs, $supported));
|
||||
$ok = (in_array('any', $supported) || in_array($vcs, $supported));
|
||||
if (!$ok) {
|
||||
continue;
|
||||
}
|
||||
|
@ -146,7 +150,6 @@ EOTEXT
|
|||
}
|
||||
return 0;
|
||||
} else {
|
||||
|
||||
$output = array();
|
||||
foreach ($arguments as $argument => $spec) {
|
||||
if ($argument == '*') {
|
||||
|
@ -181,7 +184,7 @@ EOTEXT
|
|||
$branches = ipull($branches, 'name');
|
||||
$output = $branches;
|
||||
} else {
|
||||
$output = array("FILE");
|
||||
$output = array('FILE');
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue