Skip to main content
Glama

CTX: Context as Code (CaC) tool

by context-hub
MIT License
235
  • Apple
  • Linux
ConfigLoader.php2.71 kB
<?php declare(strict_types=1); namespace Butschster\ContextGenerator\Config\Loader; use Butschster\ContextGenerator\Config\Exception\ConfigLoaderException; use Butschster\ContextGenerator\Config\Parser\ConfigParserInterface; use Butschster\ContextGenerator\Config\Reader\ReaderInterface; use Butschster\ContextGenerator\Config\Registry\ConfigRegistry; use Psr\Log\LoggerInterface; /** * Configuration loader that uses readers and parsers */ final readonly class ConfigLoader implements ConfigLoaderInterface { public function __construct( private string $configPath, private ReaderInterface $reader, private ConfigParserInterface $parser, private ?LoggerInterface $logger = null, ) {} public function load(): ConfigRegistry { $this->logger?->info('Loading configuration from config file', [ 'configFile' => $this->configPath, 'readerType' => $this->reader::class, ]); try { // Read configuration using the appropriate reader $config = $this->reader->read($this->configPath); // Parse configuration with the config parser $this->logger?->debug('Parsing configuration with config parser'); $configRegistry = $this->parser->parse($config); // Log the available registry types $registryTypes = \array_keys($configRegistry->all()); $this->logger?->info('Configuration loaded successfully', [ 'registryTypes' => $registryTypes, ]); return $configRegistry; } catch (\Throwable $e) { // Wrap exceptions in a ConfigLoaderException throw new ConfigLoaderException( \sprintf('Failed to load configuration from %s: %s', $this->configPath, $e->getMessage()), previous: $e, ); } } /** * Load the raw configuration without processing into a registry */ public function loadRawConfig(): array { $this->logger?->debug('Loading raw configuration', [ 'configFile' => $this->configPath, ]); try { // Read configuration using the appropriate reader return $this->reader->read($this->configPath); } catch (\Throwable $e) { // Wrap exceptions in a ConfigLoaderException throw new ConfigLoaderException( \sprintf('Failed to load raw configuration from %s: %s', $this->configPath, $e->getMessage()), previous: $e, ); } } public function isSupported(): bool { return $this->reader->supports($this->configPath); } }

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/context-hub/generator'

If you have feedback or need assistance with the MCP directory API, please join our Discord server