Path: blob/master/src/applications/harbormaster/management/HarbormasterManagementRestartWorkflow.php
12256 views
<?php12final class HarbormasterManagementRestartWorkflow3extends HarbormasterManagementWorkflow {45protected function didConstruct() {6$this7->setName('restart')8->setExamples(9"**restart** --active\n".10'**restart** --id id')11->setSynopsis(pht('Restart Harbormaster builds.'))12->setArguments(13array(14array(15'name' => 'id',16'param' => 'id',17'repeat' => true,18'help' => pht('Select one or more builds by ID.'),19),20array(21'name' => 'active',22'help' => pht('Select all active builds.'),23),24));25}2627public function execute(PhutilArgumentParser $args) {28$viewer = $this->getViewer();29$ids = $args->getArg('id');30$active = $args->getArg('active');3132if (!$ids && !$active) {33throw new PhutilArgumentUsageException(34pht('Use "--id" or "--active" to select builds.'));35} if ($ids && $active) {36throw new PhutilArgumentUsageException(37pht('Use one of "--id" or "--active" to select builds, but not both.'));38}3940$query = id(new HarbormasterBuildQuery())41->setViewer($viewer);42if ($ids) {43$query->withIDs($ids);44} else {45$query->withBuildStatuses(46HarbormasterBuildStatus::getActiveStatusConstants());47}48$builds = $query->execute();4950$count = count($builds);51if (!$count) {52$this->logSkip(53pht('SKIP'),54pht('No builds to restart.'));55return 0;56}5758$prompt = pht('Restart %s build(s)?', new PhutilNumber($count));59if (!phutil_console_confirm($prompt)) {60throw new ArcanistUserAbortException();61}6263$message = new HarbormasterBuildMessageRestartTransaction();6465foreach ($builds as $build) {66$this->logInfo(67pht('RESTARTING'),68pht('Build %d: %s', $build->getID(), $build->getName()));6970try {71$message->assertCanSendMessage($viewer, $build);72} catch (HarbormasterMessageException $ex) {73$this->logWarn(74pht('INVALID'),75$ex->newDisplayString());76}7778$build->sendMessage(79$viewer,80$message->getHarbormasterBuildMessageType());8182$this->logOkay(83pht('QUEUED'),84pht('Sent a restart message to build.'));85}8687return 0;88}8990}919293