Skip to main content
Glama

CTX: Context as Code (CaC) tool

by context-hub
MIT License
235
  • Apple
  • Linux
CoreBootloader.php2.58 kB
<?php declare(strict_types=1); namespace Butschster\ContextGenerator\Application\Bootloader; use Butschster\ContextGenerator\Console\GenerateCommand; use Butschster\ContextGenerator\Console\SchemaCommand; use Butschster\ContextGenerator\Console\SelfUpdateCommand; use Butschster\ContextGenerator\Console\VersionCommand; use Butschster\ContextGenerator\Directories; use Dotenv\Dotenv; use Psr\Container\ContainerInterface; use Spiral\Boot\Bootloader\Bootloader; use Spiral\Boot\DirectoriesInterface; use Spiral\Boot\EnvironmentInterface; use Spiral\Core\Config\Proxy; use Spiral\Files\Files; use Spiral\Files\FilesInterface; final class CoreBootloader extends Bootloader { private bool $init = false; #[\Override] public function defineSingletons(): array { return [ FilesInterface::class => Files::class, \Butschster\ContextGenerator\DirectoriesInterface::class => new Proxy( interface: \Butschster\ContextGenerator\DirectoriesInterface::class, fallbackFactory: static function (ContainerInterface $container) { $dirs = $container->get(DirectoriesInterface::class); $jsonSchemaPath = $dirs->get('json-schema'); return new Directories( rootPath: $dirs->get('root'), outputPath: $dirs->get('output'), configPath: $dirs->get('config'), jsonSchemaPath: $jsonSchemaPath . 'json-schema.json', ); }, ), ]; } public function init(DirectoriesInterface $dirs, EnvironmentInterface $env): void { $this->loadEnvVariables($dirs, $env); } public function boot(ConsoleBootloader $console): void { $console->addCommand( VersionCommand::class, SchemaCommand::class, SelfUpdateCommand::class, GenerateCommand::class, ); } public function loadEnvVariables(DirectoriesInterface $dirs, EnvironmentInterface $env): void { if ($this->init) { return; } $this->init = true; $dotenvPath = $env->get('DOTENV_PATH', $dirs->get('root') . '.env'); if (!\file_exists($dotenvPath)) { return; } $path = \dirname((string) $dotenvPath); $file = \basename((string) $dotenvPath); foreach (Dotenv::createImmutable($path, $file)->load() as $key => $value) { $env->set($key, $value); } } }

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