diff --git a/bin/repository b/bin/repository new file mode 120000 index 0000000000..9da13e8ae7 --- /dev/null +++ b/bin/repository @@ -0,0 +1 @@ +../scripts/repository/manage_repositories.php \ No newline at end of file diff --git a/scripts/repository/discover.php b/scripts/repository/discover.php index 8e74bc63ca..253a9db087 100755 --- a/scripts/repository/discover.php +++ b/scripts/repository/discover.php @@ -17,38 +17,8 @@ * limitations under the License. */ -$root = dirname(dirname(dirname(__FILE__))); -require_once $root.'/scripts/__init_script__.php'; - -$args = new PhutilArgumentParser($argv); -$args->setTagline('manually discover working copies'); -$args->setSynopsis(<<parseStandardArguments(); -$args->parse( - array( - array( - 'name' => 'repositories', - 'wildcard' => true, - ), - )); - -$repo_names = $args->getArg('repositories'); -if (!$repo_names) { - echo "Specify one or more repositories to pull, by callsign or PHID.\n"; - exit(1); -} - -$repos = PhabricatorRepository::loadAllByPHIDOrCallsign($repo_names); -foreach ($repos as $repo) { - $callsign = $repo->getCallsign(); - echo "Discovering '{$callsign}'...\n"; - - $daemon = new PhabricatorRepositoryPullLocalDaemon(array()); - $daemon->setVerbose(true); - $daemon->discoverRepository($repo); -} -echo "Done.\n"; +echo + "This script has moved. All repository management is now performed through ". + "'bin/repository'. Use this command instead:\n\n". + " phabricator/ $ ./bin/repository discover ...\n"; +exit(1); diff --git a/scripts/repository/manage_repositories.php b/scripts/repository/manage_repositories.php new file mode 100755 index 0000000000..bcf163096d --- /dev/null +++ b/scripts/repository/manage_repositories.php @@ -0,0 +1,41 @@ +#!/usr/bin/env php +setTagline('manage repositories'); +$args->setSynopsis(<<parseStandardArguments(); + +$workflows = array( + new PhabricatorRepositoryManagementPullWorkflow(), + new PhabricatorRepositoryManagementDiscoverWorkflow(), + new PhabricatorRepositoryManagementListWorkflow(), + new PhutilHelpArgumentWorkflow(), +); + +$args->parseWorkflows($workflows); diff --git a/scripts/repository/pull.php b/scripts/repository/pull.php index 53abee38eb..f4f62fc7b3 100755 --- a/scripts/repository/pull.php +++ b/scripts/repository/pull.php @@ -17,38 +17,8 @@ * limitations under the License. */ -$root = dirname(dirname(dirname(__FILE__))); -require_once $root.'/scripts/__init_script__.php'; - -$args = new PhutilArgumentParser($argv); -$args->setTagline('manually pull working copies'); -$args->setSynopsis(<<parseStandardArguments(); -$args->parse( - array( - array( - 'name' => 'repositories', - 'wildcard' => true, - ), - )); - -$repo_names = $args->getArg('repositories'); -if (!$repo_names) { - echo "Specify one or more repositories to pull, by callsign or PHID.\n"; - exit(1); -} - -$repos = PhabricatorRepository::loadAllByPHIDOrCallsign($repo_names); -foreach ($repos as $repo) { - $callsign = $repo->getCallsign(); - echo "Pulling '{$callsign}'...\n"; - - $daemon = new PhabricatorRepositoryPullLocalDaemon(array()); - $daemon->setVerbose(true); - $daemon->pullRepository($repo); -} -echo "Done.\n"; +echo + "This script has moved. All repository management is now performed through ". + "'bin/repository'. Use this command instead:\n\n". + " phabricator/ $ ./bin/repository pull ...\n"; +exit(1); diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php index 4be33f8125..ea44bae3a9 100644 --- a/src/__phutil_library_map__.php +++ b/src/__phutil_library_map__.php @@ -893,6 +893,10 @@ phutil_register_library_map(array( 'PhabricatorRepositoryGitCommitChangeParserWorker' => 'applications/repository/worker/commitchangeparser/PhabricatorRepositoryGitCommitChangeParserWorker.php', 'PhabricatorRepositoryGitCommitMessageParserWorker' => 'applications/repository/worker/commitmessageparser/PhabricatorRepositoryGitCommitMessageParserWorker.php', 'PhabricatorRepositoryListController' => 'applications/repository/controller/PhabricatorRepositoryListController.php', + 'PhabricatorRepositoryManagementDiscoverWorkflow' => 'applications/repository/management/PhabricatorRepositoryManagementDiscoverWorkflow.php', + 'PhabricatorRepositoryManagementListWorkflow' => 'applications/repository/management/PhabricatorRepositoryManagementListWorkflow.php', + 'PhabricatorRepositoryManagementPullWorkflow' => 'applications/repository/management/PhabricatorRepositoryManagementPullWorkflow.php', + 'PhabricatorRepositoryManagementWorkflow' => 'applications/repository/management/PhabricatorRepositoryManagementWorkflow.php', 'PhabricatorRepositoryMercurialCommitChangeParserWorker' => 'applications/repository/worker/commitchangeparser/PhabricatorRepositoryMercurialCommitChangeParserWorker.php', 'PhabricatorRepositoryMercurialCommitMessageParserWorker' => 'applications/repository/worker/commitmessageparser/PhabricatorRepositoryMercurialCommitMessageParserWorker.php', 'PhabricatorRepositoryPullLocalDaemon' => 'applications/repository/daemon/PhabricatorRepositoryPullLocalDaemon.php', @@ -1854,6 +1858,10 @@ phutil_register_library_map(array( 'PhabricatorRepositoryGitCommitChangeParserWorker' => 'PhabricatorRepositoryCommitChangeParserWorker', 'PhabricatorRepositoryGitCommitMessageParserWorker' => 'PhabricatorRepositoryCommitMessageParserWorker', 'PhabricatorRepositoryListController' => 'PhabricatorRepositoryController', + 'PhabricatorRepositoryManagementDiscoverWorkflow' => 'PhabricatorRepositoryManagementWorkflow', + 'PhabricatorRepositoryManagementListWorkflow' => 'PhabricatorRepositoryManagementWorkflow', + 'PhabricatorRepositoryManagementPullWorkflow' => 'PhabricatorRepositoryManagementWorkflow', + 'PhabricatorRepositoryManagementWorkflow' => 'PhutilArgumentWorkflow', 'PhabricatorRepositoryMercurialCommitChangeParserWorker' => 'PhabricatorRepositoryCommitChangeParserWorker', 'PhabricatorRepositoryMercurialCommitMessageParserWorker' => 'PhabricatorRepositoryCommitMessageParserWorker', 'PhabricatorRepositoryPullLocalDaemon' => 'PhabricatorDaemon', diff --git a/src/applications/repository/management/PhabricatorRepositoryManagementDiscoverWorkflow.php b/src/applications/repository/management/PhabricatorRepositoryManagementDiscoverWorkflow.php new file mode 100644 index 0000000000..c053983da7 --- /dev/null +++ b/src/applications/repository/management/PhabricatorRepositoryManagementDiscoverWorkflow.php @@ -0,0 +1,63 @@ +setName('discover') + ->setExamples('**discover** __repository__ ...') + ->setSynopsis('Discover __repository__, named by callsign or PHID.') + ->setArguments( + array( + array( + 'name' => 'verbose', + 'help' => 'Show additional debugging information.', + ), + array( + 'name' => 'repos', + 'wildcard' => true, + ), + )); + } + + public function execute(PhutilArgumentParser $args) { + $names = $args->getArg('repos'); + $repos = PhabricatorRepository::loadAllByPHIDOrCallsign($names); + + if (!$repos) { + throw new PhutilArgumentUsageException( + "Specify one or more repositories to discover, by callsign or PHID."); + } + + $console = PhutilConsole::getConsole(); + foreach ($repos as $repo) { + $console->writeOut("Discovering '%s'...\n", $repo->getCallsign()); + + $daemon = new PhabricatorRepositoryPullLocalDaemon(array()); + $daemon->setVerbose($args->getArg('verbose')); + $daemon->discoverRepository($repo); + } + + $console->writeOut("Done.\n"); + + return 0; + } + +} diff --git a/src/applications/repository/management/PhabricatorRepositoryManagementListWorkflow.php b/src/applications/repository/management/PhabricatorRepositoryManagementListWorkflow.php new file mode 100644 index 0000000000..f243a0b32a --- /dev/null +++ b/src/applications/repository/management/PhabricatorRepositoryManagementListWorkflow.php @@ -0,0 +1,44 @@ +setName('list') + ->setSynopsis('Show a list of repositories.') + ->setArguments(array()); + } + + public function execute(PhutilArgumentParser $args) { + $console = PhutilConsole::getConsole(); + + $repos = id(new PhabricatorRepository())->loadAll(); + if ($repos) { + foreach ($repos as $repo) { + $console->writeOut("%s\n", $repo->getCallsign()); + } + } else { + $console->writeErr("%s\n", 'There are no repositories.'); + } + + return 0; + } + +} diff --git a/src/applications/repository/management/PhabricatorRepositoryManagementPullWorkflow.php b/src/applications/repository/management/PhabricatorRepositoryManagementPullWorkflow.php new file mode 100644 index 0000000000..3614cdab8d --- /dev/null +++ b/src/applications/repository/management/PhabricatorRepositoryManagementPullWorkflow.php @@ -0,0 +1,63 @@ +setName('pull') + ->setExamples('**pull** __repository__ ...') + ->setSynopsis('Pull __repository__, named by callsign or PHID.') + ->setArguments( + array( + array( + 'name' => 'verbose', + 'help' => 'Show additional debugging information.', + ), + array( + 'name' => 'repos', + 'wildcard' => true, + ), + )); + } + + public function execute(PhutilArgumentParser $args) { + $names = $args->getArg('repos'); + $repos = PhabricatorRepository::loadAllByPHIDOrCallsign($names); + + if (!$repos) { + throw new PhutilArgumentUsageException( + "Specify one or more repositories to pull, by callsign or PHID."); + } + + $console = PhutilConsole::getConsole(); + foreach ($repos as $repo) { + $console->writeOut("Pulling '%s'...\n", $repo->getCallsign()); + + $daemon = new PhabricatorRepositoryPullLocalDaemon(array()); + $daemon->setVerbose($args->getArg('verbose')); + $daemon->pullRepository($repo); + } + + $console->writeOut("Done.\n"); + + return 0; + } + +} diff --git a/src/applications/repository/management/PhabricatorRepositoryManagementWorkflow.php b/src/applications/repository/management/PhabricatorRepositoryManagementWorkflow.php new file mode 100644 index 0000000000..372d244199 --- /dev/null +++ b/src/applications/repository/management/PhabricatorRepositoryManagementWorkflow.php @@ -0,0 +1,26 @@ +