diff --git a/bin/phage b/bin/phage new file mode 120000 --- /dev/null +++ b/bin/phage @@ -0,0 +1 @@ +../scripts/phage.php \ No newline at end of file diff --git a/scripts/phage.php b/scripts/phage.php new file mode 100755 --- /dev/null +++ b/scripts/phage.php @@ -0,0 +1,29 @@ +#!/usr/bin/env php +parseStandardArguments(); + +$args->parsePartial(array()); + + +// TODO: This is pretty minimal and should be shared with "arc". +$working_directory = getcwd(); +$working_copy = ArcanistWorkingCopyIdentity::newFromPath($working_directory); +$config = id(new ArcanistConfigurationManager()) + ->setWorkingCopyIdentity($working_copy); + +foreach ($config->getProjectConfig('load') as $load) { + $load = Filesystem::resolvePath($working_copy->getProjectRoot().'/'.$load); + phutil_load_library($load); +} + + +$workflows = id(new PhutilClassMapQuery()) + ->setAncestorClass('PhageWorkflow') + ->execute(); +$workflows[] = new PhutilHelpArgumentWorkflow(); +$args->parseWorkflows($workflows); diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php --- a/src/__phutil_library_map__.php +++ b/src/__phutil_library_map__.php @@ -473,6 +473,7 @@ 'PhagePHPAgent' => 'phage/agent/PhagePHPAgent.php', 'PhagePHPAgentBootloader' => 'phage/bootloader/PhagePHPAgentBootloader.php', 'PhagePlanAction' => 'phage/action/PhagePlanAction.php', + 'PhageWorkflow' => 'phage/workflow/PhageWorkflow.php', 'Phobject' => 'object/Phobject.php', 'PhobjectTestCase' => 'object/__tests__/PhobjectTestCase.php', 'PhpunitTestEngine' => 'unit/engine/PhpunitTestEngine.php', @@ -1348,6 +1349,7 @@ 'PhagePHPAgent' => 'Phobject', 'PhagePHPAgentBootloader' => 'PhageAgentBootloader', 'PhagePlanAction' => 'PhageAction', + 'PhageWorkflow' => 'PhutilArgumentWorkflow', 'Phobject' => 'Iterator', 'PhobjectTestCase' => 'PhutilTestCase', 'PhpunitTestEngine' => 'ArcanistUnitTestEngine', diff --git a/src/phage/workflow/PhageWorkflow.php b/src/phage/workflow/PhageWorkflow.php new file mode 100644 --- /dev/null +++ b/src/phage/workflow/PhageWorkflow.php @@ -0,0 +1,10 @@ +