public function setUp() { $this->pluginDir = __DIR__ . '/../fixtures/project/src/plugins'; $vendorDir = __DIR__ . '/../fixtures/project/vendor'; $autoloaders = spl_autoload_functions(); $embeddedComposerBuilder = new EmbeddedComposerBuilder($autoloaders[0][0]); $this->embeddedComposer = $embeddedComposerBuilder->setComposerFilename('composer.json')->setVendorDirectory($vendorDir)->build(); $this->embeddedComposer->processAdditionalAutoloads(); }
/** * Returns an EmbeddedComposer instance. * * @return Dflydev\EmbeddedComposer\Core\EmbeddedComposer */ public function getEmbeddedComposer($siteDir, $composerFilename, $vendorDir) { $classloader = $this->getClassloader(); $builder = new EmbeddedComposerBuilder($classloader, $siteDir); return $builder->setComposerFilename($composerFilename)->setVendorDirectory($vendorDir)->build(); }
public function __construct() { parent::__construct(); $this['spress.version'] = self::VERSION; $this['spress.version.details'] = ['id' => self::VERSION_ID, 'major' => self::MAJOR_VERSION, 'minor' => self::MINOR_VERSION, 'release' => self::RELEASE_VERSION, 'extra' => self::EXTRA_VERSION]; $this['spress.externals'] = []; $this['spress.config.default_filename'] = __DIR__ . '/config/default.yml'; $this['spress.config.site_dir'] = realpath('./'); $this['spress.config.build_dir'] = function ($c) { return $c['spress.config.site_dir'] . '/build'; }; $this['spress.config.plugin_dir'] = function ($c) { return $c['spress.config.site_dir'] . '/src/plugins'; }; $this['spress.config.vendor_dir'] = function ($c) { return 'vendor'; }; $this['spress.config.composer_filename'] = 'composer.json'; $this['spress.config.env'] = null; $this['spress.config.safe'] = null; $this['spress.config.drafts'] = null; $this['spress.config.url'] = null; $this['spress.config.timezone'] = null; $this['spress.config.values'] = function ($c) { $configLoader = $c['spress.config']; $attributes = $configLoader->loadConfiguration($c['spress.config.site_dir'], $c['spress.config.env']); if (is_null($this['spress.config.drafts']) === false) { $attributes['drafts'] = (bool) $this['spress.config.drafts']; } if (is_null($this['spress.config.safe']) === false) { $attributes['safe'] = (bool) $this['spress.config.safe']; } if (is_null($this['spress.config.timezone']) === false) { $attributes['timezone'] = $this['spress.config.timezone']; } if (is_null($this['spress.config.url']) === false) { $attributes['url'] = $this['spress.config.url']; } return $attributes; }; $this['spress.config'] = function ($c) { return new Configuration($c['lib.configLoader'], $c['spress.config.default_filename']); }; $this['lib.configLoader'] = function ($c) { $locator = new FileLocator([]); return new Config([new \Yosymfony\ConfigLoader\Loaders\YamlLoader($locator), new \Yosymfony\ConfigLoader\Loaders\JsonLoader($locator)]); }; $this['lib.eventDispatcher'] = function ($c) { return new EventDispatcher(); }; $this['lib.twig.loader_array'] = function ($c) { return new \Twig_Loader_Array([]); }; $this['lib.twig.options'] = function ($c) { return ['autoescape' => false, 'debug' => $c['spress.config.values']['debug']]; }; $this['lib.twig'] = function ($c) { $options = $c['lib.twig.options']; $twig = new \Twig_Environment($c['lib.twig.loader_array'], $options); if ($options['debug'] === true) { $twig->addExtension(new \Twig_Extension_Debug()); } return $twig; }; $this['lib.embeddedComposer'] = function ($c) { $embeddedComposerBuilder = new EmbeddedComposerBuilder($c['spress.plugin.classLoader'], $c['spress.config.site_dir']); $embeddedComposer = $embeddedComposerBuilder->setComposerFilename($c['spress.config.composer_filename'])->setVendorDirectory($c['spress.config.vendor_dir'])->build(); return $embeddedComposer; }; $this['spress.io'] = function ($c) { return new NullIO(); }; $this['spress.plugin.classLoader'] = function ($c) { $autoloaders = spl_autoload_functions(); return $autoloaders[0][0]; }; $this['spress.plugin.pluginManager'] = function ($c) { $pathComposerFilename = $c['spress.config.site_dir'] . '/' . $c['spress.config.composer_filename']; if (file_exists($pathComposerFilename) === true) { $embeddedComposer = $c['lib.embeddedComposer']; $embeddedComposer->processAdditionalAutoloads(); } $excludePath = $c['spress.config.values']['plugin_manager_builder']['exclude_path']; $builder = new PluginManagerBuilder($c['spress.config.plugin_dir'], $c['lib.eventDispatcher'], $excludePath); return $builder->build(); }; $this['spress.dataWriter'] = function ($c) { $fs = new Filesystem(); return new FilesystemDataWriter($fs, $c['spress.config.build_dir']); }; $this['spress.dataSourceManager.parameters'] = function ($c) { return ['%site_dir%' => $c['spress.config.site_dir'], '%include%' => $c['spress.config.values']['include'], '%exclude%' => $c['spress.config.values']['exclude'], '%text_extensions%' => $c['spress.config.values']['text_extensions'], '%attribute_syntax%' => $c['spress.config.values']['attribute_syntax'], '%avoid_renderizer_path%' => $c['spress.config.values']['avoid_renderizer']['paths'], '%avoid_renderizer_extension%' => $c['spress.config.values']['avoid_renderizer']['filename_extensions']]; }; $this['spress.dataSourceManager'] = function ($c) { $parameters = $c['spress.dataSourceManager.parameters']; $builder = new DataSourceManagerBuilder($parameters); $dataSources = $c['spress.config.values']['data_sources']; return $builder->buildFromConfigArray($dataSources); }; $this['spress.cms.generatorManager'] = function ($c) { $pagination = new \Yosymfony\Spress\Core\ContentManager\Generator\Pagination\PaginationGenerator(); $taxonomy = new \Yosymfony\Spress\Core\ContentManager\Generator\Taxonomy\TaxonomyGenerator(); $manager = new GeneratorManager(); $manager->addGenerator('pagination', $pagination); $manager->addGenerator('taxonomy', $taxonomy); return $manager; }; $this['spress.cms.converterManager.converters'] = function ($c) { $markdownExts = $c['spress.config.values']['markdown_ext']; $extensionMappingTable = $c['spress.config.values']['map_converter_extension']; return ['MapConverter' => new \Yosymfony\Spress\Core\ContentManager\Converter\MapConverter($extensionMappingTable), 'MichelfMarkdownConverter' => new \Yosymfony\Spress\Core\ContentManager\Converter\MichelfMarkdownConverter($markdownExts)]; }; $this['spress.cms.converterManager'] = function ($c) { $cm = new ConverterManager($c['spress.config.values']['text_extensions']); $converters = $c['spress.cms.converterManager.converters']; foreach ($converters as $converter) { $cm->addConverter($converter); } return $cm; }; $this['spress.cms.collectionManager'] = function ($c) { $builder = new CollectionManagerBuilder(); return $builder->buildFromConfigArray($c['spress.config.values']['collections']); }; $this['spress.cms.permalinkGenerator'] = function ($c) { $permalink = $c['spress.config.values']['permalink']; $preservePathTitle = $c['spress.config.values']['preserve_path_title']; $noHtmlExtension = $c['spress.config.values']['no_html_extension']; return new PermalinkGenerator($permalink, $preservePathTitle, $noHtmlExtension); }; $this['spress.cms.renderizer'] = function ($c) { $twig = $c['lib.twig']; $loader = $c['lib.twig.loader_array']; $layoutExts = $c['spress.config.values']['layout_ext']; return new TwigRenderizer($twig, $loader, $layoutExts); }; $this['spress.cms.siteAttribute'] = function ($c) { return new SiteAttribute(); }; $this['spress.cms.contentManager'] = $this->factory(function ($c) { return new ContentManager($c['spress.dataSourceManager'], $c['spress.dataWriter'], $c['spress.cms.generatorManager'], $c['spress.cms.converterManager'], $c['spress.cms.collectionManager'], $c['spress.cms.permalinkGenerator'], $c['spress.cms.renderizer'], $c['spress.cms.siteAttribute'], $c['spress.plugin.pluginManager'], $c['lib.eventDispatcher'], $c['spress.io']); }); }
private function updateClassLoader() { $baseDir = $this->contentLocator->getPluginDir(); $vendorDir = $baseDir . '/' . $this->options['vendors_dir']; if (false == file_exists($vendorDir)) { return; } $embeddedComposerBuilder = new EmbeddedComposerBuilder($this->classLoader, $this->contentLocator->getSourceDir()); $embeddedComposer = $embeddedComposerBuilder->setComposerFilename($this->options['composer_filename'])->setVendorDirectory($vendorDir)->build(); $embeddedComposer->processAdditionalAutoloads(); }
$value *= 1024; } return $value; }; $memoryLimit = trim(ini_get('memory_limit')); // Increase memory_limit if it is lower than 512M if ($memoryLimit != -1 && $memoryInBytes($memoryLimit) < 512 * 1024 * 1024) { @ini_set('memory_limit', '512M'); } unset($memoryInBytes, $memoryLimit); } use Dflydev\EmbeddedComposer\Core\EmbeddedComposerBuilder; use Symfony\Component\Console\Input\ArgvInput; $input = new ArgvInput(); if ($projectDir = $input->getParameterOption('--project-dir')) { if (false !== strpos($projectDir, '~') && function_exists('posix_getuid')) { $info = posix_getpwuid(posix_getuid()); $projectDir = str_replace('~', $info['dir'], $projectDir); } if (!is_dir($projectDir)) { throw new \InvalidArgumentException(sprintf("Specified project directory %s does not exist", $projectDir)); } chdir($projectDir); } if (!($vendorDir = $input->getParameterOption('--vendor-dir'))) { $vendorDir = '.bldr/vendor/'; } $embeddedComposerBuilder = new EmbeddedComposerBuilder($classLoader); $embeddedComposer = $embeddedComposerBuilder->setComposerFilename('bldr.json')->setVendorDirectory($vendorDir)->build(); $embeddedComposer->processAdditionalAutoloads(); Bldr\Application::create($embeddedComposer)->run();
} return $value; }; $memoryLimit = trim(ini_get('memory_limit')); // Increase memory_limit if it is lower than 512M if ($memoryLimit != -1 && $memoryInBytes($memoryLimit) < 512 * 1024 * 1024) { @ini_set('memory_limit', '512M'); } unset($memoryInBytes, $memoryLimit); } use Dflydev\EmbeddedComposer\Core\EmbeddedComposerBuilder; use Sculpin\Bundle\SculpinBundle\Console\Application; use Sculpin\Bundle\SculpinBundle\HttpKernel\KernelFactory; use Symfony\Component\Console\Input\ArgvInput; $input = new ArgvInput(); if ($projectDir = $input->getParameterOption('--project-dir')) { if (false !== strpos($projectDir, '~') && function_exists('posix_getuid')) { $info = posix_getpwuid(posix_getuid()); $projectDir = str_replace('~', $info['dir'], $projectDir); } if (!is_dir($projectDir)) { throw new \InvalidArgumentException(sprintf("Specified project directory %s does not exist", $projectDir)); } chdir($projectDir); } $embeddedComposerBuilder = new EmbeddedComposerBuilder($classLoader); $embeddedComposer = $embeddedComposerBuilder->setComposerFilename('sculpin.json')->setVendorDirectory('.sculpin')->build(); $embeddedComposer->processAdditionalAutoloads(); $kernel = KernelFactory::create($input); $application = new Application($kernel, $embeddedComposer); $application->run($input);
<?php set_time_limit(0); define('NANBANDO_DIR', getenv('NANBANDO_DIR') ?: '.nanbando'); use Dflydev\EmbeddedComposer\Core\EmbeddedComposerBuilder; use Nanbando\Application\Application; use Nanbando\Application\Kernel; use Puli\Discovery\JsonDiscovery; use Symfony\Component\Console\Input\ArgvInput; use Webmozart\PathUtil\Path; $input = new ArgvInput(); if ($projectDir = $input->getParameterOption('--root-dir')) { if (false !== strpos($projectDir, '~') && function_exists('posix_getuid')) { $info = posix_getpwuid(posix_getuid()); $projectDir = str_replace('~', $info['dir'], $projectDir); } if (!is_dir($projectDir)) { throw new \InvalidArgumentException(sprintf('Specified project directory %s does not exist', $projectDir)); } chdir($projectDir); } $discovery = new JsonDiscovery(Path::join([getcwd(), NANBANDO_DIR, '.puli', 'bindings.json'])); $embeddedComposerBuilder = new EmbeddedComposerBuilder($classLoader); $embeddedComposer = $embeddedComposerBuilder->setComposerFilename('nanbando.json')->setVendorDirectory(NANBANDO_DIR)->build(); $embeddedComposer->processAdditionalAutoloads(); $kernel = new Kernel('prod', true, Path::getHomeDirectory(), $discovery); $kernel->boot(); $input = $kernel->getContainer()->get('input'); $output = $kernel->getContainer()->get('output'); $application = new Application($kernel, $embeddedComposer); $application->run($input, $output);