<?php 
declare(strict_types=1); 
namespace ParagonIE\Chronicle\CliTests; 
 
use GuzzleHttp\Client; 
use ParagonIE\Chronicle\Chronicle; 
use ParagonIE\EasyDB\EasyDB; 
use ParagonIE\EasyDB\Factory; 
use ParagonIE\Sapient\Adapter\Guzzle; 
use ParagonIE\Sapient\Sapient; 
use GetOpt\{ 
    GetOpt, 
    Option 
}; 
 
require_once dirname(dirname(__DIR__)) . '/cli-autoload.php'; 
 
 
if (!\is_readable(CHRONICLE_APP_ROOT . '/local/settings.json')) { 
    echo 'Settings are not loaded.', PHP_EOL; 
    exit(1); 
} 
 
$settings = \json_decode( 
    (string) \file_get_contents(CHRONICLE_APP_ROOT . '/local/settings.json'), 
    true 
); 
 
/** @var EasyDB $db */ 
$db = Factory::create( 
    $settings['database']['dsn'], 
    $settings['database']['username'] ?? '', 
    $settings['database']['password'] ?? '', 
    $settings['database']['options'] ?? [] 
); 
Chronicle::setDatabase($db); 
 
/** 
 * @var GetOpt 
 * 
 * This defines the Command Line options. 
 */ 
$getopt = new GetOpt([ 
    new Option(null, 'base-url', GetOpt::REQUIRED_ARGUMENT) 
]); 
$getopt->process(); 
$baseUrl = $getopt->getOption('base-url') ?? 'http://localhost:8080'; 
 
$http = new Client(); 
$sapient = new Sapient(new Guzzle($http)); 
$serverPublicKey = Chronicle::getSigningKey()->getPublickey(); 
 
 |