Path: blob/master/src/applications/harbormaster/management/HarbormasterManagementPublishWorkflow.php
12256 views
<?php12final class HarbormasterManagementPublishWorkflow3extends HarbormasterManagementWorkflow {45protected function didConstruct() {6$this7->setName('publish')8->setExamples(pht('**publish** __buildable__ ...'))9->setSynopsis(10pht(11'Publish a buildable. This is primarily useful for developing '.12'and debugging applications which have buildable objects.'))13->setArguments(14array(15array(16'name' => 'buildable',17'wildcard' => true,18),19));20}2122public function execute(PhutilArgumentParser $args) {23$viewer = $this->getViewer();2425$buildable_names = $args->getArg('buildable');26if (!$buildable_names) {27throw new PhutilArgumentUsageException(28pht(29'Name one or more buildables to publish, like "B123".'));30}3132$query = id(new PhabricatorObjectQuery())33->setViewer($viewer)34->withNames($buildable_names);3536$query->execute();3738$result_map = $query->getNamedResults();3940foreach ($buildable_names as $name) {41if (!isset($result_map[$name])) {42throw new PhutilArgumentUsageException(43pht(44'Argument "%s" does not name a buildable. Provide one or more '.45'valid buildable monograms or PHIDs.',46$name));47}48}4950foreach ($result_map as $name => $result) {51if (!($result instanceof HarbormasterBuildable)) {52throw new PhutilArgumentUsageException(53pht(54'Object "%s" is not a HarbormasterBuildable (it is a "%s"). '.55'Name one or more buildables to publish, like "B123".',56$name,57get_class($result)));58}59}6061foreach ($result_map as $buildable) {62echo tsprintf(63"%s\n",64pht(65'Publishing "%s"...',66$buildable->getMonogram()));6768// Reload the buildable to pick up builds.69$buildable = id(new HarbormasterBuildableQuery())70->setViewer($viewer)71->withIDs(array($buildable->getID()))72->needBuilds(true)73->executeOne();7475$engine = id(new HarbormasterBuildEngine())76->setViewer($viewer)77->publishBuildable($buildable, $buildable);78}7980echo tsprintf(81"%s\n",82pht('Done.'));8384return 0;85}8687}888990