@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 an owners package generator for Lipsum

Summary: Ref T12319. Allow `bin/lipsum generate` to generate owners packages.

Test Plan: Generated ~4,000 packages with ~150,000 paths.

Reviewers: chad

Reviewed By: chad

Maniphest Tasks: T12319

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

+203
+6
src/__phutil_library_map__.php
··· 3163 3163 'PhabricatorOwnersPackage' => 'applications/owners/storage/PhabricatorOwnersPackage.php', 3164 3164 'PhabricatorOwnersPackageAuditingTransaction' => 'applications/owners/xaction/PhabricatorOwnersPackageAuditingTransaction.php', 3165 3165 'PhabricatorOwnersPackageAutoreviewTransaction' => 'applications/owners/xaction/PhabricatorOwnersPackageAutoreviewTransaction.php', 3166 + 'PhabricatorOwnersPackageContextFreeGrammar' => 'applications/owners/lipsum/PhabricatorOwnersPackageContextFreeGrammar.php', 3166 3167 'PhabricatorOwnersPackageDatasource' => 'applications/owners/typeahead/PhabricatorOwnersPackageDatasource.php', 3167 3168 'PhabricatorOwnersPackageDescriptionTransaction' => 'applications/owners/xaction/PhabricatorOwnersPackageDescriptionTransaction.php', 3168 3169 'PhabricatorOwnersPackageDominionTransaction' => 'applications/owners/xaction/PhabricatorOwnersPackageDominionTransaction.php', ··· 3181 3182 'PhabricatorOwnersPackageSearchEngine' => 'applications/owners/query/PhabricatorOwnersPackageSearchEngine.php', 3182 3183 'PhabricatorOwnersPackageStatusTransaction' => 'applications/owners/xaction/PhabricatorOwnersPackageStatusTransaction.php', 3183 3184 'PhabricatorOwnersPackageTestCase' => 'applications/owners/storage/__tests__/PhabricatorOwnersPackageTestCase.php', 3185 + 'PhabricatorOwnersPackageTestDataGenerator' => 'applications/owners/lipsum/PhabricatorOwnersPackageTestDataGenerator.php', 3184 3186 'PhabricatorOwnersPackageTransaction' => 'applications/owners/storage/PhabricatorOwnersPackageTransaction.php', 3185 3187 'PhabricatorOwnersPackageTransactionEditor' => 'applications/owners/editor/PhabricatorOwnersPackageTransactionEditor.php', 3186 3188 'PhabricatorOwnersPackageTransactionQuery' => 'applications/owners/query/PhabricatorOwnersPackageTransactionQuery.php', 3187 3189 'PhabricatorOwnersPackageTransactionType' => 'applications/owners/xaction/PhabricatorOwnersPackageTransactionType.php', 3188 3190 'PhabricatorOwnersPath' => 'applications/owners/storage/PhabricatorOwnersPath.php', 3191 + 'PhabricatorOwnersPathContextFreeGrammar' => 'applications/owners/lipsum/PhabricatorOwnersPathContextFreeGrammar.php', 3189 3192 'PhabricatorOwnersPathsController' => 'applications/owners/controller/PhabricatorOwnersPathsController.php', 3190 3193 'PhabricatorOwnersPathsSearchEngineAttachment' => 'applications/owners/engineextension/PhabricatorOwnersPathsSearchEngineAttachment.php', 3191 3194 'PhabricatorOwnersSchemaSpec' => 'applications/owners/storage/PhabricatorOwnersSchemaSpec.php', ··· 8285 8288 ), 8286 8289 'PhabricatorOwnersPackageAuditingTransaction' => 'PhabricatorOwnersPackageTransactionType', 8287 8290 'PhabricatorOwnersPackageAutoreviewTransaction' => 'PhabricatorOwnersPackageTransactionType', 8291 + 'PhabricatorOwnersPackageContextFreeGrammar' => 'PhutilContextFreeGrammar', 8288 8292 'PhabricatorOwnersPackageDatasource' => 'PhabricatorTypeaheadDatasource', 8289 8293 'PhabricatorOwnersPackageDescriptionTransaction' => 'PhabricatorOwnersPackageTransactionType', 8290 8294 'PhabricatorOwnersPackageDominionTransaction' => 'PhabricatorOwnersPackageTransactionType', ··· 8303 8307 'PhabricatorOwnersPackageSearchEngine' => 'PhabricatorApplicationSearchEngine', 8304 8308 'PhabricatorOwnersPackageStatusTransaction' => 'PhabricatorOwnersPackageTransactionType', 8305 8309 'PhabricatorOwnersPackageTestCase' => 'PhabricatorTestCase', 8310 + 'PhabricatorOwnersPackageTestDataGenerator' => 'PhabricatorTestDataGenerator', 8306 8311 'PhabricatorOwnersPackageTransaction' => 'PhabricatorModularTransaction', 8307 8312 'PhabricatorOwnersPackageTransactionEditor' => 'PhabricatorApplicationTransactionEditor', 8308 8313 'PhabricatorOwnersPackageTransactionQuery' => 'PhabricatorApplicationTransactionQuery', 8309 8314 'PhabricatorOwnersPackageTransactionType' => 'PhabricatorModularTransactionType', 8310 8315 'PhabricatorOwnersPath' => 'PhabricatorOwnersDAO', 8316 + 'PhabricatorOwnersPathContextFreeGrammar' => 'PhutilContextFreeGrammar', 8311 8317 'PhabricatorOwnersPathsController' => 'PhabricatorOwnersController', 8312 8318 'PhabricatorOwnersPathsSearchEngineAttachment' => 'PhabricatorSearchEngineAttachment', 8313 8319 'PhabricatorOwnersSchemaSpec' => 'PhabricatorConfigSchemaSpec',
+60
src/applications/owners/lipsum/PhabricatorOwnersPackageContextFreeGrammar.php
··· 1 + <?php 2 + 3 + final class PhabricatorOwnersPackageContextFreeGrammar 4 + extends PhutilContextFreeGrammar { 5 + 6 + protected function getRules() { 7 + return array( 8 + 'start' => array( 9 + '[package]', 10 + ), 11 + 'package' => array( 12 + '[adjective] [noun]', 13 + '[adjective] [noun]', 14 + '[adjective] [noun]', 15 + '[adjective] [noun]', 16 + '[adjective] [adjective] [noun]', 17 + '[adjective] [noun] [noun]', 18 + '[adjective] [adjective] [noun] [noun]', 19 + ), 20 + 'adjective' => array( 21 + 'Temporary', 22 + 'Backend', 23 + 'External', 24 + 'Emergency', 25 + 'Applied', 26 + 'Advanced', 27 + 'Experimental', 28 + 'Logging', 29 + 'Test', 30 + 'Network', 31 + 'Ephemeral', 32 + 'Clustered', 33 + 'Mining', 34 + 'Core', 35 + 'Remote', 36 + ), 37 + 'noun' => array( 38 + 'Support', 39 + 'Services', 40 + 'Infrastructure', 41 + 'Mail', 42 + 'Security', 43 + 'Application', 44 + 'Microservices', 45 + 'Monoservices', 46 + 'Megaservices', 47 + 'API', 48 + 'Storage', 49 + 'Records', 50 + 'Package', 51 + 'Directories', 52 + 'Library', 53 + 'Concern', 54 + 'Cluster', 55 + 'Engine', 56 + ), 57 + ); 58 + } 59 + 60 + }
+89
src/applications/owners/lipsum/PhabricatorOwnersPackageTestDataGenerator.php
··· 1 + <?php 2 + 3 + final class PhabricatorOwnersPackageTestDataGenerator 4 + extends PhabricatorTestDataGenerator { 5 + 6 + const GENERATORKEY = 'owners'; 7 + 8 + public function getGeneratorName() { 9 + return pht('Owners Packages'); 10 + } 11 + 12 + public function generateObject() { 13 + $author = $this->loadRandomUser(); 14 + 15 + $name = id(new PhabricatorOwnersPackageContextFreeGrammar()) 16 + ->generate(); 17 + 18 + switch ($this->roll(1, 4)) { 19 + case 1: 20 + case 2: 21 + // Most packages own only one path. 22 + $path_count = 1; 23 + break; 24 + case 3: 25 + // Some packages own a few paths. 26 + $path_count = mt_rand(1, 4); 27 + break; 28 + case 4: 29 + // Some packages own a very large number of paths. 30 + $path_count = mt_rand(1, 1024); 31 + break; 32 + } 33 + 34 + $xactions = array(); 35 + 36 + $xactions[] = array( 37 + 'type' => 'name', 38 + 'value' => $name, 39 + ); 40 + 41 + $xactions[] = array( 42 + 'type' => 'owners', 43 + 'value' => array($author->getPHID()), 44 + ); 45 + 46 + $dominion = PhabricatorOwnersPackage::getDominionOptionsMap(); 47 + $dominion = array_rand($dominion); 48 + $xactions[] = array( 49 + 'type' => 'dominion', 50 + 'value' => $dominion, 51 + ); 52 + 53 + $paths = id(new PhabricatorOwnersPathContextFreeGrammar()) 54 + ->generateSeveral($path_count, "\n"); 55 + $paths = explode("\n", $paths); 56 + $paths = array_unique($paths); 57 + 58 + $repository_phid = $this->loadOneRandom('PhabricatorRepository') 59 + ->getPHID(); 60 + 61 + $paths_value = array(); 62 + foreach ($paths as $path) { 63 + $paths_value[] = array( 64 + 'repositoryPHID' => $repository_phid, 65 + 'path' => $path, 66 + 67 + // Excluded paths are relatively rare. 68 + 'excluded' => (mt_rand(1, 10) == 1), 69 + ); 70 + } 71 + 72 + $xactions[] = array( 73 + 'type' => 'paths.set', 74 + 'value' => $paths_value, 75 + ); 76 + 77 + $params = array( 78 + 'transactions' => $xactions, 79 + ); 80 + 81 + $result = id(new ConduitCall('owners.edit', $params)) 82 + ->setUser($author) 83 + ->execute(); 84 + 85 + return $result['object']['phid']; 86 + } 87 + 88 + 89 + }
+48
src/applications/owners/lipsum/PhabricatorOwnersPathContextFreeGrammar.php
··· 1 + <?php 2 + 3 + final class PhabricatorOwnersPathContextFreeGrammar 4 + extends PhutilContextFreeGrammar { 5 + 6 + protected function getRules() { 7 + return array( 8 + 'start' => array( 9 + '[path]', 10 + ), 11 + 'path' => array( 12 + '/', 13 + '/[directories]', 14 + ), 15 + 'directories' => array( 16 + '[directory-name]', 17 + '[directories][directory-name]', 18 + ), 19 + 'directory-name' => array( 20 + '[directory-part]/', 21 + ), 22 + 'directory-part' => array( 23 + 'src', 24 + 'doc', 25 + 'bin', 26 + 'tmp', 27 + 'log', 28 + 'bak', 29 + 'applications', 30 + 'var', 31 + 'home', 32 + 'user', 33 + 'lib', 34 + 'tests', 35 + 'webroot', 36 + 'externals', 37 + 'third-party', 38 + 'libraries', 39 + 'config', 40 + 'media', 41 + 'resources', 42 + 'support', 43 + 'scripts', 44 + ), 45 + ); 46 + } 47 + 48 + }