/** * @see Command * * @throws \InvalidArgumentException When the target directory does not exist */ protected function execute(InputInterface $input, OutputInterface $output) { if (!is_dir($input->getArgument('target'))) { throw new \InvalidArgumentException(sprintf('The target directory "%s" does not exist.', $input->getArgument('target'))); } $filesystem = new Filesystem(); foreach ($this->container->getKernelService()->getBundles() as $bundle) { if (is_dir($originDir = $bundle->getPath() . '/Resources/public')) { $output->writeln(sprintf('Installing assets for <comment>%s\\%s</comment>', $bundle->getNamespacePrefix(), $bundle->getName())); $targetDir = $input->getArgument('target') . '/bundles/' . preg_replace('/bundle$/', '', strtolower($bundle->getName())); $filesystem->remove($targetDir); mkdir($targetDir, 0755, true); $filesystem->mirror($originDir, $targetDir); } } }
/** * @see Command */ protected function execute(InputInterface $input, OutputInterface $output) { if (!is_dir($input->getArgument('target'))) { throw new \InvalidArgumentException(sprintf('The target directory "%s" does not exist.', $input->getArgument('target'))); } $filesystem = new Filesystem(); $dirs = $this->container->getKernelService()->getBundleDirs(); foreach ($this->container->getKernelService()->getBundles() as $bundle) { $tmp = dirname(str_replace('\\', '/', get_class($bundle))); $namespace = dirname($tmp); $class = basename($tmp); if (isset($dirs[$namespace]) && is_dir($originDir = $dirs[$namespace] . '/' . $class . '/Resources/public')) { $output->writeln(sprintf('Installing assets for <comment>%s\\%s</comment>', $namespace, $class)); $targetDir = $input->getArgument('target') . '/bundles/' . preg_replace('/bundle$/', '', strtolower($class)); $filesystem->remove($targetDir); mkdir($targetDir, 0755, true); $filesystem->mirror($originDir, $targetDir); } } }
/** * @see Command * * @throws \InvalidArgumentException When namespace doesn't end with Bundle * @throws \RuntimeException When bundle can't be executed */ protected function execute(InputInterface $input, OutputInterface $output) { if (!preg_match('/Bundle$/', $namespace = $input->getArgument('namespace'))) { throw new \InvalidArgumentException('The namespace must end with Bundle.'); } $dirs = $this->container->getKernelService()->getBundleDirs(); $tmp = str_replace('\\', '/', $namespace); $namespace = str_replace('/', '\\', dirname($tmp)); $bundle = basename($tmp); if (!isset($dirs[$namespace])) { throw new \InvalidArgumentException(sprintf('Unable to initialize the bundle (%s not defined).', $namespace)); } $dir = $dirs[$namespace]; $output->writeln(sprintf('Initializing bundle "<info>%s</info>" in "<info>%s</info>"', $bundle, realpath($dir))); if (file_exists($targetDir = $dir . '/' . $bundle)) { throw new \RuntimeException(sprintf('Bundle "%s" already exists.', $bundle)); } $filesystem = new Filesystem(); $filesystem->mirror(__DIR__ . '/../Resources/skeleton/bundle', $targetDir); Mustache::renderDir($targetDir, array('namespace' => $namespace, 'bundle' => $bundle)); }
/** * @see Command */ protected function execute(InputInterface $input, OutputInterface $output) { if (file_exists($targetDir = $input->getArgument('path'))) { throw new \RuntimeException(sprintf('The directory "%s" already exists.', $targetDir)); } if (!file_exists($webDir = $input->getArgument('web_path'))) { mkdir($webDir, 0777, true); } $parameters = array('class' => $input->getArgument('name'), 'application' => strtolower($input->getArgument('name'))); $format = $input->getOption('yaml') ? 'yaml' : 'xml'; $filesystem = new Filesystem(); $filesystem->mirror(__DIR__ . '/../Resources/skeleton/application/' . $format, $targetDir); Mustache::renderDir($targetDir, $parameters); $filesystem->chmod($targetDir . '/console', 0777); $filesystem->chmod($targetDir . '/logs', 0777); $filesystem->chmod($targetDir . '/cache', 0777); $filesystem->rename($targetDir . '/Kernel.php', $targetDir . '/' . $input->getArgument('name') . 'Kernel.php'); $filesystem->copy(__DIR__ . '/../Resources/skeleton/web/front_controller.php', $file = $webDir . '/' . (file_exists($webDir . '/index.php') ? strtolower($input->getArgument('name')) : 'index') . '.php'); Mustache::renderFile($file, $parameters); $filesystem->copy(__DIR__ . '/../Resources/skeleton/web/front_controller_debug.php', $file = $webDir . '/' . strtolower($input->getArgument('name')) . '_dev.php'); Mustache::renderFile($file, $parameters); }
protected function callPhing($taskName, $properties = array()) { $kernel = $this->application->getKernel(); $tmpDir = sys_get_temp_dir() . '/propel-gen'; $filesystem = new Filesystem(); $filesystem->remove($tmpDir); $filesystem->mkdirs($tmpDir); foreach ($kernel->getBundles() as $bundle) { if (is_dir($dir = $bundle->getPath() . '/Resources/config')) { $finder = new Finder(); $schemas = $finder->files()->name('*schema.xml')->followLinks()->in($dir); $parts = explode(DIRECTORY_SEPARATOR, realpath($bundle->getPath())); $prefix = implode('.', array_slice($parts, 1, -2)); foreach ($schemas as $schema) { $filesystem->copy((string) $schema, $file = $tmpDir . DIRECTORY_SEPARATOR . md5($schema) . '_' . $schema->getBaseName()); $content = file_get_contents($file); $content = preg_replace_callback('/package\\s*=\\s*"(.*?)"/', function ($matches) use($prefix) { return sprintf('package="%s"', $prefix . '.' . $matches[1]); }, $content); file_put_contents($file, $content); } } } $filesystem->touch($tmpDir . '/build.properties'); $args = array(); // $bufferPhingOutput = !$this->commandApplication->withTrace(); $properties = array_merge(array('propel.database' => 'mysql', 'project.dir' => $tmpDir, 'propel.output.dir' => $kernel->getRootDir() . '/propel', 'propel.php.dir' => '/'), $properties); foreach ($properties as $key => $value) { $args[] = "-D{$key}={$value}"; } // Build file $args[] = '-f'; $args[] = realpath($kernel->getContainer()->getParameter('propel.path') . '/generator/build.xml'); /* // Logger if (DIRECTORY_SEPARATOR != '\\' && (function_exists('posix_isatty') && @posix_isatty(STDOUT))) { $args[] = '-logger'; $args[] = 'phing.listener.AnsiColorLogger'; } // Add our listener to detect errors $args[] = '-listener'; $args[] = 'sfPhingListener'; */ // Add any arbitrary arguments last foreach ($this->additionalPhingArgs as $arg) { if (in_array($arg, array('verbose', 'debug'))) { $bufferPhingOutput = false; } $args[] = '-' . $arg; } $args[] = $taskName; // enable output buffering Phing::setOutputStream(new \OutputStream(fopen('php://output', 'w'))); Phing::startup(); Phing::setProperty('phing.home', getenv('PHING_HOME')); // $this->logSection('propel', 'Running "'.$taskName.'" phing task'); $bufferPhingOutput = false; if ($bufferPhingOutput) { ob_start(); } $m = new Phing(); $m->execute($args); $m->runBuild(); if ($bufferPhingOutput) { ob_end_clean(); } print $bufferPhingOutput; chdir($kernel->getRootDir()); /* // any errors? $ret = true; if (sfPhingListener::hasErrors()) { $messages = array('Some problems occurred when executing the task:'); foreach (sfPhingListener::getExceptions() as $exception) { $messages[] = ''; $messages[] = preg_replace('/^.*build\-propel\.xml/', 'build-propel.xml', $exception->getMessage()); $messages[] = ''; } if (count(sfPhingListener::getErrors())) { $messages[] = 'If the exception message is not clear enough, read the output of the task for'; $messages[] = 'more information'; } $this->logBlock($messages, 'ERROR_LARGE'); $ret = false; } */ $ret = true; return $ret; }
public function tearDown() { $filesystem = new Filesystem(); $filesystem->remove($this->dir); }