Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F15331417
D21387.id50912.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
6 KB
Referenced Files
None
Subscribers
None
D21387.id50912.diff
View Options
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
Details
Attached
Mime Type
text/plain
Expires
Sat, Mar 8, 10:15 AM (3 w, 5 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7381748
Default Alt Text
D21387.id50912.diff (6 KB)
Attached To
Mode
D21387: Improve login/auth messages from Arcanist toolset workflows
Attached
Detach File
Event Timeline
Log In to Comment