'method', ); } public function shouldShellComplete() { return false; } public function requiresConduit() { return true; } public function requiresAuthentication() { return true; } public function run() { $method = $this->getArgument('method', array()); if (count($method) !== 1) { throw new ArcanistUsageException( "Provide exactly one Conduit method name."); } $method = reset($method); $console = PhutilConsole::getConsole(); $console->writeOut("%s\n", pht('Waiting for JSON parameters on stdin...')); $params = @file_get_contents('php://stdin'); $params = json_decode($params, true); if (!is_array($params)) { throw new ArcanistUsageException( "Provide method parameters on stdin as a JSON blob."); } $error = null; $error_message = null; try { $result = $this->getConduit()->callMethodSynchronous( $method, $params); } catch (ConduitClientException $ex) { $error = $ex->getErrorCode(); $error_message = $ex->getMessage(); $result = null; } echo json_encode(array( 'error' => $error, 'errorMessage' => $error_message, 'response' => $result, ))."\n"; return 0; } }