Exemplo n.º 1
0
 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();
 }
Exemplo n.º 2
0
 /**
  * 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();
 }
Exemplo n.º 3
0
 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']);
     });
 }
Exemplo n.º 4
0
 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();
 }
Exemplo n.º 5
0
                $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();
Exemplo n.º 6
0
        }
        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);
Exemplo n.º 7
0
<?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);