public function testEnvironmentEvent() { $dsm = $this->getMockBuilder('\\Yosymfony\\Spress\\Core\\DataSource\\DataSourceManager')->getMock(); $cm = $this->getMockBuilder('\\Yosymfony\\Spress\\Core\\ContentManager\\Converter\\ConverterManager')->getMock(); $gm = $this->getMockBuilder('\\Yosymfony\\Spress\\Core\\ContentManager\\Generator\\GeneratorManager')->getMock(); $renderizer = $this->getMockBuilder('\\Yosymfony\\Spress\\Core\\ContentManager\\Renderizer\\RenderizerInterface')->getMock(); $io = $this->getMockBuilder('\\Yosymfony\\Spress\\Core\\IO\\IOInterface')->getMock(); $dw = $this->getMockBuilder('\\Yosymfony\\Spress\\Core\\DataWriter\\DataWriterInterface')->getMock(); $configValues = ['name' => 'Yo! Symfony']; $event = new EnvironmentEvent($dsm, $dw, $cm, $gm, $renderizer, $io, $configValues); $this->assertInstanceOf('\\Yosymfony\\Spress\\Core\\DataSource\\DataSourceManager', $event->getDataSourceManager()); $this->assertInstanceOf('\\Yosymfony\\Spress\\Core\\DataWriter\\DataWriterInterface', $event->getDataWriter()); $this->assertInstanceOf('\\Yosymfony\\Spress\\Core\\ContentManager\\Converter\\ConverterManager', $event->getConverterManager()); $this->assertInstanceOf('\\Yosymfony\\Spress\\Core\\ContentManager\\Generator\\GeneratorManager', $event->getGeneratorManager()); $this->assertInstanceOf('\\Yosymfony\\Spress\\Core\\ContentManager\\Renderizer\\RenderizerInterface', $event->getRenderizer()); $this->assertInstanceOf('\\Yosymfony\\Spress\\Core\\IO\\IOInterface', $event->getIO()); $values = $event->getConfigValues(); $this->assertTrue(is_array($values)); $this->assertArrayHasKey('name', $values); $this->assertEquals('Yo! Symfony', $values['name']); $values['title'] = 'My blog page'; $event->setConfigValues($values); $this->assertArrayHasKey('name', $configValues); $this->assertEquals('My blog page', $configValues['title']); }
/** * Extract configuration and override the default DataWriter on startup * * @param EnvironmentEvent $event The start event */ public function onStart(EnvironmentEvent $event) { $configValues = $event->getConfigValues(); $configuration = new Configuration($configValues); $event->setConfigValues($configuration->get()); $event->setDataWriter(new FilesystemDataWriter($event->getDataWriter(), $configuration)); }
public function onStart(EnvironmentEvent $event) { $io = $event->getIO(); $configValues = $event->getConfigValues(); $io->write('Getting Github metadata...'); $repository = $this->getRepositoryComponents($configValues['repository']); if (2 != count($repository)) { $io->write('<error>Invalid repository name.</error>'); return; } $client = new \Github\Client(); $metadataRepo = $client->api('repo')->show($repository['vendor'], $repository['name']); $metadata = ['name' => $metadataRepo['name'], 'full_name' => $metadataRepo['full_name'], 'description' => $metadataRepo['description'], 'fork' => $metadataRepo['fork'], 'html_url' => $metadataRepo['html_url'], 'clone_url' => $metadataRepo['clone_url'], 'git_url' => $metadataRepo['git_url'], 'ssh_url' => $metadataRepo['ssh_url'], 'mirror_url' => $metadataRepo['mirror_url'], 'homepage' => $metadataRepo['homepage'], 'forks_count' => $metadataRepo['forks_count'], 'stargazers_count' => $metadataRepo['stargazers_count'], 'watchers_count' => $metadataRepo['watchers_count'], 'size' => $metadataRepo['size'], 'default_branch' => $metadataRepo['default_branch'], 'open_issues_count' => $metadataRepo['open_issues_count'], 'has_issues' => $metadataRepo['has_issues'], 'has_wiki' => $metadataRepo['has_wiki'], 'has_pages' => $metadataRepo['has_pages'], 'has_downloads' => $metadataRepo['has_downloads'], 'pushed_at' => $metadataRepo['pushed_at'], 'created_at' => $metadataRepo['created_at'], 'updated_at' => $metadataRepo['updated_at'], 'owner' => ['login' => $metadataRepo['owner']['login'], 'avatar_url' => $metadataRepo['owner']['avatar_url'], 'gravatar_id' => $metadataRepo['owner']['gravatar_id'], 'html_url' => $metadataRepo['owner']['html_url']], 'organization' => [], 'source' => [], 'contributors' => []]; if (isset($metadataRepo['organization'])) { $metadata['organization'] = ['login' => $metadataRepo['organization']['login'], 'avatar_url' => $metadataRepo['organization']['avatar_url'], 'html_url' => $metadataRepo['organization']['html_url']]; } if (isset($metadataRepo['source'])) { $metadata['source'] = ['name' => $metadataRepo['source']['name'], 'full_name' => $metadataRepo['source']['full_name'], 'description' => $metadataRepo['source']['description'], 'html_url' => $metadataRepo['source']['html_url'], 'clone_url' => $metadataRepo['source']['clone_url'], 'git_url' => $metadataRepo['source']['git_url'], 'ssh_url' => $metadataRepo['source']['ssh_url'], 'svn_url' => $metadataRepo['source']['svn_url'], 'mirror_url' => $metadataRepo['source']['mirror_url'], 'homepage' => $metadataRepo['source']['homepage'], 'forks_count' => $metadataRepo['source']['forks_count'], 'stargazers_count' => $metadataRepo['source']['stargazers_count'], 'watchers_count' => $metadataRepo['source']['watchers_count'], 'size' => $metadataRepo['source']['size'], 'default_branch' => $metadataRepo['source']['default_branch'], 'open_issues_count' => $metadataRepo['source']['open_issues_count'], 'has_issues' => $metadataRepo['source']['has_issues'], 'has_wiki' => $metadataRepo['source']['has_wiki'], 'has_pages' => $metadataRepo['source']['has_pages'], 'has_downloads' => $metadataRepo['source']['has_downloads'], 'pushed_at' => $metadataRepo['source']['pushed_at'], 'created_at' => $metadataRepo['source']['created_at'], 'updated_at' => $metadataRepo['source']['updated_at']]; } $contributors = $client->api('repo')->contributors($repository['vendor'], $repository['name']); foreach ($contributors as $contributor) { $metadata['contributors'][] = ['login' => $contributor['login'], 'avatar_url' => $contributor['avatar_url'], 'html_url' => $contributor['html_url'], 'type' => $contributor['type'], 'contributions' => $contributor['contributions']]; } $configValues['github'] = $metadata; $event->setConfigValues($configValues); }
/** * Load requested Twig extensions on startup * * @param EnvironmentEvent $event The start event */ public function onStart(EnvironmentEvent $event) { $configValues = $event->getConfigValues(); $configValues['twig_extensions'] = (new Configuration($configValues))->getExtensions(); $event->setConfigValues($configValues); $factory = new ExtensionFactory(); $renderizer = $event->getRenderizer(); foreach ($configValues['twig_extensions'] as $extension) { try { $factory->getExtension($extension)->load($renderizer); } catch (\UnexpectedValueException $e) { $event->getIO()->warning($e->getMessage()); } } }
public function onStart(EnvironmentEvent $event) { $configValues = $event->getConfigValues(); $dataDir = __DIR__ . '/../../../data'; $data = []; if (file_exists($dataDir) && is_dir($dataDir)) { if ($items = scandir($dataDir)) { foreach ($items as $item) { if ($splFile = $this->getSplFile($dataDir, $item)) { $data += $this->readJsonFile($splFile); } } } } $configValues['data'] = $data; $event->setConfigValues($configValues); }