Correct a parameter order swap in "diffusion.historyquery" for Mercurial
[phabricator.git] / src / applications / drydock / management / DrydockManagementReleaseLeaseWorkflow.php
blob20af18ec212496bb24a8d92dda293a13136cba74
1 <?php
3 final class DrydockManagementReleaseLeaseWorkflow
4 extends DrydockManagementWorkflow {
6 protected function didConstruct() {
7 $this
8 ->setName('release-lease')
9 ->setSynopsis(pht('Release a lease.'))
10 ->setArguments(
11 array(
12 array(
13 'name' => 'id',
14 'param' => 'id',
15 'repeat' => true,
16 'help' => pht('Lease ID to release.'),
18 ));
21 public function execute(PhutilArgumentParser $args) {
22 $ids = $args->getArg('id');
23 if (!$ids) {
24 throw new PhutilArgumentUsageException(
25 pht(
26 'Specify one or more lease IDs to release with "%s".',
27 '--id'));
30 $viewer = $this->getViewer();
31 $drydock_phid = id(new PhabricatorDrydockApplication())->getPHID();
33 $leases = id(new DrydockLeaseQuery())
34 ->setViewer($viewer)
35 ->withIDs($ids)
36 ->execute();
38 PhabricatorWorker::setRunAllTasksInProcess(true);
39 foreach ($ids as $id) {
40 $lease = idx($leases, $id);
41 if (!$lease) {
42 echo tsprintf(
43 "%s\n",
44 pht('Lease "%s" does not exist.', $id));
45 continue;
48 if (!$lease->canRelease()) {
49 echo tsprintf(
50 "%s\n",
51 pht('Lease "%s" is not releasable.', $id));
52 continue;
55 $command = DrydockCommand::initializeNewCommand($viewer)
56 ->setTargetPHID($lease->getPHID())
57 ->setAuthorPHID($drydock_phid)
58 ->setCommand(DrydockCommand::COMMAND_RELEASE)
59 ->save();
61 $lease->scheduleUpdate();
63 echo tsprintf(
64 "%s\n",
65 pht('Scheduled release of lease "%s".', $id));