1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-11-22 06:42:42 +01:00

Add an Aphlict CLI client

Summary: Depends on D2926. Adds a simple CLI client for Aphlict to make it easier to debug stuff.

Test Plan: Ran client, saw debug messages.

Reviewers: btrahan

Reviewed By: btrahan

CC: aran

Differential Revision: https://secure.phabricator.com/D2927
This commit is contained in:
epriestley 2012-07-05 16:04:04 -07:00
parent 63be89ba00
commit 78d2f08fcd
2 changed files with 76 additions and 0 deletions

View file

@ -76,6 +76,10 @@ You can run `aphlict` in the foreground to get output to your console:
phabricator/ $ ./bin/aphlict --foreground
You can run `support/aphlict/client/aphlict_test_client.php` to connect to the
Aphlict server from the command line. Messages the client receives will be
printed to stdout.
You can set `notification.debug` in your configuration to get additional
output in your browser.

View file

@ -0,0 +1,72 @@
#!/usr/bin/env php
<?php
/*
* Copyright 2012 Facebook, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
$root = dirname(dirname(dirname(dirname(__FILE__))));
require_once $root.'/scripts/__init_script__.php';
$args = new PhutilArgumentParser($argv);
$args->setTagline('test client for Aphlict server');
$args->setSynopsis(<<<EOHELP
**aphlict_test_client.php** [__options__]
Connect to the Aphlict server configured in the Phabricator config.
EOHELP
);
$args->parseStandardArguments();
$args->parse(
array(
array(
'name' => 'server',
'param' => 'uri',
'default' => PhabricatorEnv::getEnvConfig('notification.client-uri'),
'help' => 'Connect to __uri__ instead of the default server.',
),
));
$console = PhutilConsole::getConsole();
$errno = null;
$errstr = null;
$uri = $args->getArg('server');
$uri = new PhutilURI($uri);
$uri->setProtocol('tcp');
$console->writeErr("Connecting...\n");
$socket = stream_socket_client(
$uri,
$errno,
$errstr);
if (!$socket) {
$console->writeErr(
"Unable to connect to Aphlict (at '$uri'). Error #{$errno}: {$errstr}");
exit(1);
} else {
$console->writeErr("Connected.\n");
}
$io_channel = new PhutilSocketChannel($socket);
$proto_channel = new PhutilJSONProtocolChannel($io_channel);
$json = new PhutilJSON();
while (true) {
$message = $proto_channel->waitForMessage();
$console->writeOut($json->encodeFormatted($message));
}