Correct a parameter order swap in "diffusion.historyquery" for Mercurial
[phabricator.git] / src / applications / drydock / management / DrydockManagementCommandWorkflow.php
blobae0bd711b21d50b1306ed3e2972c3d10651cec18
1 <?php
3 final class DrydockManagementCommandWorkflow
4 extends DrydockManagementWorkflow {
6 protected function didConstruct() {
7 $this
8 ->setName('command')
9 ->setSynopsis(pht('Run a command on a leased resource.'))
10 ->setArguments(
11 array(
12 array(
13 'name' => 'lease',
14 'param' => 'id',
15 'help' => pht('Lease ID.'),
17 array(
18 'name' => 'argv',
19 'wildcard' => true,
20 'help' => pht('Command to execute.'),
22 ));
25 public function execute(PhutilArgumentParser $args) {
26 $lease_id = $args->getArg('lease');
27 if (!$lease_id) {
28 throw new PhutilArgumentUsageException(
29 pht(
30 'Use %s to specify a lease.',
31 '--lease'));
34 $argv = $args->getArg('argv');
35 if (!$argv) {
36 throw new PhutilArgumentUsageException(
37 pht(
38 'Specify a command to run.'));
41 $lease = id(new DrydockLeaseQuery())
42 ->setViewer($this->getViewer())
43 ->withIDs(array($lease_id))
44 ->executeOne();
45 if (!$lease) {
46 throw new Exception(
47 pht(
48 'Unable to load lease with ID "%s"!',
49 $lease_id));
52 // TODO: Check lease state, etc.
54 $interface = $lease->getInterface(DrydockCommandInterface::INTERFACE_TYPE);
56 list($stdout, $stderr) = call_user_func_array(
57 array($interface, 'execx'),
58 array('%Ls', $argv));
60 fwrite(STDOUT, $stdout);
61 fwrite(STDERR, $stderr);
63 return 0;