@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Add a `./bin/storage shell` command

Summary: Fixes T7078. Adds a `./bin/storage shell` command which passes through to a MySQL shell. This is slightly more convenient than running `mysql` manually.

Test Plan: Ran `./bin/storage shell` and got a MySQL shell.

Reviewers: epriestley, #blessed_reviewers

Reviewed By: epriestley, #blessed_reviewers

Subscribers: Korvin, epriestley

Maniphest Tasks: T7078

Differential Revision: https://secure.phabricator.com/D11548

+55 -16
+2
src/__phutil_library_map__.php
··· 2462 2462 'PhabricatorStorageManagementDumpWorkflow' => 'infrastructure/storage/management/workflow/PhabricatorStorageManagementDumpWorkflow.php', 2463 2463 'PhabricatorStorageManagementProbeWorkflow' => 'infrastructure/storage/management/workflow/PhabricatorStorageManagementProbeWorkflow.php', 2464 2464 'PhabricatorStorageManagementQuickstartWorkflow' => 'infrastructure/storage/management/workflow/PhabricatorStorageManagementQuickstartWorkflow.php', 2465 + 'PhabricatorStorageManagementShellWorkflow' => 'infrastructure/storage/management/workflow/PhabricatorStorageManagementShellWorkflow.php', 2465 2466 'PhabricatorStorageManagementStatusWorkflow' => 'infrastructure/storage/management/workflow/PhabricatorStorageManagementStatusWorkflow.php', 2466 2467 'PhabricatorStorageManagementUpgradeWorkflow' => 'infrastructure/storage/management/workflow/PhabricatorStorageManagementUpgradeWorkflow.php', 2467 2468 'PhabricatorStorageManagementWorkflow' => 'infrastructure/storage/management/workflow/PhabricatorStorageManagementWorkflow.php', ··· 5753 5754 'PhabricatorStorageManagementDumpWorkflow' => 'PhabricatorStorageManagementWorkflow', 5754 5755 'PhabricatorStorageManagementProbeWorkflow' => 'PhabricatorStorageManagementWorkflow', 5755 5756 'PhabricatorStorageManagementQuickstartWorkflow' => 'PhabricatorStorageManagementWorkflow', 5757 + 'PhabricatorStorageManagementShellWorkflow' => 'PhabricatorStorageManagementWorkflow', 5756 5758 'PhabricatorStorageManagementStatusWorkflow' => 'PhabricatorStorageManagementWorkflow', 5757 5759 'PhabricatorStorageManagementUpgradeWorkflow' => 'PhabricatorStorageManagementWorkflow', 5758 5760 'PhabricatorStorageManagementWorkflow' => 'PhabricatorManagementWorkflow',
-16
src/infrastructure/storage/management/workflow/PhabricatorStorageManagementDumpWorkflow.php
··· 32 32 list($host, $port) = $this->getBareHostAndPort($api->getHost()); 33 33 34 34 $flag_password = ''; 35 - 36 35 $password = $api->getPassword(); 37 36 if ($password) { 38 37 if (strlen($password->openEnvelope())) { ··· 52 51 $host, 53 52 $flag_port, 54 53 $databases); 55 - } 56 - 57 - private function getBareHostAndPort($host) { 58 - // Split out port information, since the command-line client requires a 59 - // separate flag for the port. 60 - $uri = new PhutilURI('mysql://'.$host); 61 - if ($uri->getPort()) { 62 - $port = $uri->getPort(); 63 - $bare_hostname = $uri->getDomain(); 64 - } else { 65 - $port = null; 66 - $bare_hostname = $host; 67 - } 68 - 69 - return array($bare_hostname, $port); 70 54 } 71 55 72 56 }
+38
src/infrastructure/storage/management/workflow/PhabricatorStorageManagementShellWorkflow.php
··· 1 + <?php 2 + 3 + final class PhabricatorStorageManagementShellWorkflow 4 + extends PhabricatorStorageManagementWorkflow { 5 + 6 + protected function didConstruct() { 7 + $this 8 + ->setName('shell') 9 + ->setExamples('**shell** [__options__]') 10 + ->setSynopsis('Launch an interactive shell.'); 11 + } 12 + 13 + public function execute(PhutilArgumentParser $args) { 14 + $api = $this->getAPI(); 15 + list($host, $port) = $this->getBareHostAndPort($api->getHost()); 16 + 17 + $flag_port = $port 18 + ? csprintf('--port %d', $port) 19 + : ''; 20 + 21 + $flag_password = ''; 22 + $password = $api->getPassword(); 23 + if ($password) { 24 + if (strlen($password->openEnvelope())) { 25 + $flag_password = csprintf('--password=%P', $password); 26 + } 27 + } 28 + 29 + return phutil_passthru( 30 + 'mysql --default-character-set=utf8 '. 31 + '-u %s %C -h %s %C', 32 + $api->getUser(), 33 + $flag_password, 34 + $host, 35 + $flag_port); 36 + } 37 + 38 + }
+15
src/infrastructure/storage/management/workflow/PhabricatorStorageManagementWorkflow.php
··· 663 663 return 2; 664 664 } 665 665 666 + protected final function getBareHostAndPort($host) { 667 + // Split out port information, since the command-line client requires a 668 + // separate flag for the port. 669 + $uri = new PhutilURI('mysql://'.$host); 670 + if ($uri->getPort()) { 671 + $port = $uri->getPort(); 672 + $bare_hostname = $uri->getDomain(); 673 + } else { 674 + $port = null; 675 + $bare_hostname = $host; 676 + } 677 + 678 + return array($bare_hostname, $port); 679 + } 680 + 666 681 }