Path: blob/master/src/applications/cache/management/PhabricatorCacheManagementPurgeWorkflow.php
12242 views
<?php12final class PhabricatorCacheManagementPurgeWorkflow3extends PhabricatorCacheManagementWorkflow {45protected function didConstruct() {6$this7->setName('purge')8->setSynopsis(pht('Drop data from readthrough caches.'))9->setArguments(10array(11array(12'name' => 'all',13'help' => pht('Purge all caches.'),14),15array(16'name' => 'caches',17'param' => 'keys',18'help' => pht('Purge a specific set of caches.'),19),20));21}2223public function execute(PhutilArgumentParser $args) {24$all_purgers = PhabricatorCachePurger::getAllPurgers();2526$is_all = $args->getArg('all');27$key_list = $args->getArg('caches');2829if ($is_all && phutil_nonempty_string($key_list)) {30throw new PhutilArgumentUsageException(31pht(32'Specify either "--all" or "--caches", not both.'));33} else if (!$is_all && !phutil_nonempty_string($key_list)) {34throw new PhutilArgumentUsageException(35pht(36'Select caches to purge with "--all" or "--caches". Available '.37'caches are: %s.',38implode(', ', array_keys($all_purgers))));39}4041if ($is_all) {42$purgers = $all_purgers;43} else {44$key_list = preg_split('/[\s,]+/', $key_list);45$purgers = array();46foreach ($key_list as $key) {47if (isset($all_purgers[$key])) {48$purgers[$key] = $all_purgers[$key];49} else {50throw new PhutilArgumentUsageException(51pht(52'Cache purger "%s" is not recognized. Available caches '.53'are: %s.',54$key,55implode(', ', array_keys($all_purgers))));56}57}58if (!$purgers) {59throw new PhutilArgumentUsageException(60pht(61'When using "--caches", you must select at least one valid '.62'cache to purge.'));63}64}6566$viewer = $this->getViewer();6768foreach ($purgers as $key => $purger) {69$purger->setViewer($viewer);7071echo tsprintf(72"%s\n",73pht(74'Purging "%s" cache...',75$key));7677$purger->purgeCache();78}7980return 0;81}8283}848586