Page MenuHomePhabricator

D21387.diff
No OneTemporary

D21387.diff

diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php
--- a/src/__phutil_library_map__.php
+++ b/src/__phutil_library_map__.php
@@ -126,6 +126,7 @@
'ArcanistComprehensiveLintEngine' => 'lint/engine/ArcanistComprehensiveLintEngine.php',
'ArcanistConcatenationOperatorXHPASTLinterRule' => 'lint/linter/xhpast/rules/ArcanistConcatenationOperatorXHPASTLinterRule.php',
'ArcanistConcatenationOperatorXHPASTLinterRuleTestCase' => 'lint/linter/xhpast/rules/__tests__/ArcanistConcatenationOperatorXHPASTLinterRuleTestCase.php',
+ 'ArcanistConduitAuthenticationException' => 'exception/ArcanistConduitAuthenticationException.php',
'ArcanistConduitCallFuture' => 'conduit/ArcanistConduitCallFuture.php',
'ArcanistConduitEngine' => 'conduit/ArcanistConduitEngine.php',
'ArcanistConduitException' => 'conduit/ArcanistConduitException.php',
@@ -1170,6 +1171,7 @@
'ArcanistComprehensiveLintEngine' => 'ArcanistLintEngine',
'ArcanistConcatenationOperatorXHPASTLinterRule' => 'ArcanistXHPASTLinterRule',
'ArcanistConcatenationOperatorXHPASTLinterRuleTestCase' => 'ArcanistXHPASTLinterRuleTestCase',
+ 'ArcanistConduitAuthenticationException' => 'Exception',
'ArcanistConduitCallFuture' => 'FutureProxy',
'ArcanistConduitEngine' => 'Phobject',
'ArcanistConduitException' => 'Exception',
diff --git a/src/conduit/ArcanistConduitCallFuture.php b/src/conduit/ArcanistConduitCallFuture.php
--- a/src/conduit/ArcanistConduitCallFuture.php
+++ b/src/conduit/ArcanistConduitCallFuture.php
@@ -15,61 +15,56 @@
}
private function raiseLoginRequired() {
- $conduit_uri = $this->getEngine()->getConduitURI();
- $conduit_uri = new PhutilURI($conduit_uri);
- $conduit_uri->setPath('/');
+ $conduit_domain = $this->getConduitDomain();
- $conduit_domain = $conduit_uri->getDomain();
-
- $block = id(new PhutilConsoleBlock())
- ->addParagraph(
- tsprintf(
- '**<bg:red> %s </bg>**',
- pht('LOGIN REQUIRED')))
- ->addParagraph(
+ $message = array(
+ tsprintf(
+ "\n\n%W\n\n",
pht(
'You are trying to connect to a server ("%s") that you do not '.
'have any stored credentials for, but the command you are '.
'running requires authentication.',
- $conduit_domain))
- ->addParagraph(
+ $conduit_domain)),
+ tsprintf(
+ "%W\n\n",
pht(
- 'To login and save credentials for this server, run this '.
- 'command:'))
- ->addParagraph(
- tsprintf(
- " $ arc install-certificate %s\n",
- $conduit_uri));
-
- throw new PhutilArgumentUsageException($block->drawConsoleString());
+ 'To log in and save credentials for this server, run this '.
+ 'command:')),
+ tsprintf(
+ '%>',
+ $this->getInstallCommand()),
+ );
+
+ $this->raiseException(
+ pht('Conduit API login required.'),
+ pht('LOGIN REQUIRED'),
+ $message);
}
private function raiseInvalidAuth() {
- $conduit_uri = $this->getEngine()->getConduitURI();
- $conduit_uri = new PhutilURI($conduit_uri);
- $conduit_uri->setPath('/');
-
- $conduit_domain = $conduit_uri->getDomain();
+ $conduit_domain = $this->getConduitDomain();
- $block = id(new PhutilConsoleBlock())
- ->addParagraph(
- tsprintf(
- '**<bg:red> %s </bg>**',
- pht('INVALID CREDENTIALS')))
- ->addParagraph(
+ $message = array(
+ tsprintf(
+ "\n\n%W\n\n",
pht(
- 'Your stored credentials for this server ("%s") are not valid.',
- $conduit_domain))
- ->addParagraph(
+ 'Your stored credentials for the server you are trying to connect '.
+ 'to ("%s") are not valid.',
+ $conduit_domain)),
+ tsprintf(
+ "%W\n\n",
pht(
- 'To login and save valid credentials for this server, run this '.
- 'command:'))
- ->addParagraph(
- tsprintf(
- " $ arc install-certificate %s\n",
- $conduit_uri));
-
- throw new PhutilArgumentUsageException($block->drawConsoleString());
+ 'To log in and save valid credentials for this server, run this '.
+ 'command:')),
+ tsprintf(
+ '%>',
+ $this->getInstallCommand()),
+ );
+
+ $this->raiseException(
+ pht('Invalid Conduit API credentials.'),
+ pht('INVALID CREDENTIALS'),
+ $message);
}
protected function didReceiveResult($result) {
@@ -91,4 +86,31 @@
throw $exception;
}
+ private function getInstallCommand() {
+ $conduit_uri = $this->getConduitURI();
+
+ return csprintf(
+ 'arc install-certificate %s',
+ $conduit_uri);
+ }
+
+ private function getConduitURI() {
+ $conduit_uri = $this->getEngine()->getConduitURI();
+ $conduit_uri = new PhutilURI($conduit_uri);
+ $conduit_uri->setPath('/');
+
+ return $conduit_uri;
+ }
+
+ private function getConduitDomain() {
+ $conduit_uri = $this->getConduitURI();
+ return $conduit_uri->getDomain();
+ }
+
+ private function raiseException($summary, $title, $body) {
+ throw id(new ArcanistConduitAuthenticationException($summary))
+ ->setTitle($title)
+ ->setBody($body);
+ }
+
}
diff --git a/src/exception/ArcanistConduitAuthenticationException.php b/src/exception/ArcanistConduitAuthenticationException.php
new file mode 100644
--- /dev/null
+++ b/src/exception/ArcanistConduitAuthenticationException.php
@@ -0,0 +1,27 @@
+<?php
+
+final class ArcanistConduitAuthenticationException
+ extends Exception {
+
+ private $title;
+ private $body;
+
+ public function setTitle($title) {
+ $this->title = $title;
+ return $this;
+ }
+
+ public function getTitle() {
+ return $this->title;
+ }
+
+ public function setBody($body) {
+ $this->body = $body;
+ return $this;
+ }
+
+ public function getBody() {
+ return $this->body;
+ }
+
+}
diff --git a/src/runtime/ArcanistRuntime.php b/src/runtime/ArcanistRuntime.php
--- a/src/runtime/ArcanistRuntime.php
+++ b/src/runtime/ArcanistRuntime.php
@@ -41,6 +41,8 @@
$log->writeError(pht('USAGE EXCEPTION'), $ex->getMessage());
} catch (ArcanistUserAbortException $ex) {
$log->writeError(pht('---'), $ex->getMessage());
+ } catch (ArcanistConduitAuthenticationException $ex) {
+ $log->writeError($ex->getTitle(), $ex->getBody());
}
return 1;

File Metadata

Mime Type
text/plain
Expires
Sun, May 12, 5:37 AM (3 w, 3 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
6269909
Default Alt Text
D21387.diff (6 KB)

Event Timeline