Page MenuHomePhabricator

D21101.id50260.diff
No OneTemporary

D21101.id50260.diff

diff --git a/src/parser/argument/PhutilArgumentParser.php b/src/parser/argument/PhutilArgumentParser.php
--- a/src/parser/argument/PhutilArgumentParser.php
+++ b/src/parser/argument/PhutilArgumentParser.php
@@ -627,6 +627,16 @@
return $this;
}
+ public function setWorkflows($workflows) {
+ $workflows = mpull($workflows, null, 'getName');
+ $this->workflows = $workflows;
+ return $this;
+ }
+
+ public function getWorkflows() {
+ return $this->workflows;
+ }
+
/* -( Command Help )------------------------------------------------------- */
diff --git a/src/parser/argument/workflow/PhutilHelpArgumentWorkflow.php b/src/parser/argument/workflow/PhutilHelpArgumentWorkflow.php
--- a/src/parser/argument/workflow/PhutilHelpArgumentWorkflow.php
+++ b/src/parser/argument/workflow/PhutilHelpArgumentWorkflow.php
@@ -2,6 +2,17 @@
final class PhutilHelpArgumentWorkflow extends PhutilArgumentWorkflow {
+ private $runtime;
+
+ public function setRuntime($runtime) {
+ $this->runtime = $runtime;
+ return $this;
+ }
+
+ public function getRuntime() {
+ return $this->runtime;
+ }
+
protected function didConstruct() {
$this->setName('help');
$this->setExamples(<<<EOHELP
@@ -28,6 +39,45 @@
public function execute(PhutilArgumentParser $args) {
$with = $args->getArg('help-with-what');
+ $runtime = $this->getRuntime();
+ $toolset = $runtime->getToolset();
+ if ($toolset->getToolsetKey() === 'arc') {
+ $workflows = $args->getWorkflows();
+
+ $legacy = array();
+
+ $legacy[] = new ArcanistCloseRevisionWorkflow();
+ $legacy[] = new ArcanistCommitWorkflow();
+ $legacy[] = new ArcanistCoverWorkflow();
+ $legacy[] = new ArcanistDiffWorkflow();
+ $legacy[] = new ArcanistExportWorkflow();
+ $legacy[] = new ArcanistGetConfigWorkflow();
+ $legacy[] = new ArcanistSetConfigWorkflow();
+ $legacy[] = new ArcanistInstallCertificateWorkflow();
+ $legacy[] = new ArcanistLandWorkflow();
+ $legacy[] = new ArcanistLintersWorkflow();
+ $legacy[] = new ArcanistLintWorkflow();
+ $legacy[] = new ArcanistListWorkflow();
+ $legacy[] = new ArcanistPatchWorkflow();
+ $legacy[] = new ArcanistPasteWorkflow();
+ $legacy[] = new ArcanistTasksWorkflow();
+ $legacy[] = new ArcanistTodoWorkflow();
+ $legacy[] = new ArcanistUnitWorkflow();
+ $legacy[] = new ArcanistWhichWorkflow();
+
+ foreach ($legacy as $workflow) {
+ // If this workflow has been updated but not removed from the list
+ // above yet, just skip it.
+ if ($workflow instanceof ArcanistArcWorkflow) {
+ continue;
+ }
+
+ $workflows[] = $workflow->newLegacyPhutilWorkflow();
+ }
+
+ $args->setWorkflows($workflows);
+ }
+
if (!$with) {
$args->printHelpAndExit();
} else {
diff --git a/src/runtime/ArcanistRuntime.php b/src/runtime/ArcanistRuntime.php
--- a/src/runtime/ArcanistRuntime.php
+++ b/src/runtime/ArcanistRuntime.php
@@ -9,6 +9,7 @@
private $stack = array();
private $viewer;
+ private $toolset;
private $hardpointEngine;
private $symbolEngine;
private $conduitEngine;
@@ -107,6 +108,7 @@
$config->validateConfiguration($this);
$toolset = $this->newToolset($argv);
+ $this->setToolset($toolset);
$args->parsePartial($toolset->getToolsetArguments());
@@ -118,13 +120,13 @@
$phutil_workflows = array();
foreach ($workflows as $key => $workflow) {
- $phutil_workflows[$key] = $workflow->newPhutilWorkflow();
-
$workflow
->setRuntime($this)
->setConfigurationEngine($config_engine)
->setConfigurationSourceList($config)
->setConduitEngine($conduit_engine);
+
+ $phutil_workflows[$key] = $workflow->newPhutilWorkflow();
}
@@ -858,4 +860,13 @@
return $this->conduitEngine;
}
+ public function setToolset($toolset) {
+ $this->toolset = $toolset;
+ return $this;
+ }
+
+ public function getToolset() {
+ return $this->toolset;
+ }
+
}
diff --git a/src/toolset/workflow/ArcanistHelpWorkflow.php b/src/toolset/workflow/ArcanistHelpWorkflow.php
--- a/src/toolset/workflow/ArcanistHelpWorkflow.php
+++ b/src/toolset/workflow/ArcanistHelpWorkflow.php
@@ -8,7 +8,8 @@
}
public function newPhutilWorkflow() {
- return new PhutilHelpArgumentWorkflow();
+ return id(new PhutilHelpArgumentWorkflow())
+ ->setRuntime($this->getRuntime());
}
public function supportsToolset(ArcanistToolset $toolset) {
diff --git a/src/workflow/ArcanistWorkflow.php b/src/workflow/ArcanistWorkflow.php
--- a/src/workflow/ArcanistWorkflow.php
+++ b/src/workflow/ArcanistWorkflow.php
@@ -166,6 +166,47 @@
return $phutil_workflow;
}
+ final public function newLegacyPhutilWorkflow() {
+ $phutil_workflow = id(new ArcanistPhutilWorkflow())
+ ->setName($this->getWorkflowName());
+
+ $arguments = $this->getArguments();
+
+ $specs = array();
+ foreach ($arguments as $key => $argument) {
+ if ($key == '*') {
+ $key = $argument;
+ $argument = array(
+ 'wildcard' => true,
+ );
+ }
+
+ unset($argument['paramtype']);
+ unset($argument['supports']);
+ unset($argument['nosupport']);
+ unset($argument['passthru']);
+ unset($argument['conflict']);
+
+ $spec = array(
+ 'name' => $key,
+ ) + $argument;
+
+ $specs[] = $spec;
+ }
+
+ $phutil_workflow->setArguments($specs);
+
+ $synopses = $this->getCommandSynopses();
+ $phutil_workflow->setSynopsis($synopses);
+
+ $help = $this->getCommandHelp();
+ if (strlen($help)) {
+ $phutil_workflow->setHelp($help);
+ }
+
+ return $phutil_workflow;
+ }
+
final protected function newWorkflowArgument($key) {
return id(new ArcanistWorkflowArgument())
->setKey($key);

File Metadata

Mime Type
text/plain
Expires
Thu, Mar 27, 5:28 PM (2 w, 4 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7722390
Default Alt Text
D21101.id50260.diff (5 KB)

Event Timeline