Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Loading…

[Generator] removed Filesystem class. Propel now relies on the standalon... #295

Merged
merged 1 commit into from

3 participants

@hhamon
Collaborator

...e Filesystem component of the Symfony2 framework installable via Composer.

@hhamon hhamon [Generator] removed Filesystem class. Propel now relies on the standa…
…lone Filesystem component of the Symfony2 framework installable via Composer.
cd22336
@travisbot

This pull request fails (merged cd22336 into 338752a).

@willdurand willdurand merged commit a24f5fe into from
@willdurand
Owner

Great, thank you Hugo!

@willdurand
Owner

Oh shhhh...

@hhamon
Collaborator

Why is it failing?

@willdurand
Owner
@hhamon
Collaborator

Is it my fault? I haven't changed any permissions and tests pass on my machine...

@hhamon
Collaborator

Ok I see why now. The Filesystem::mkdir() method of Symfony2 does not return a boolean value. It returns nothing or throw an exception. I'm fixing the problem.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Commits on Aug 22, 2012
  1. @hhamon

    [Generator] removed Filesystem class. Propel now relies on the standa…

    hhamon authored
    …lone Filesystem component of the Symfony2 framework installable via Composer.
This page is out of date. Refresh to see the latest.
View
3  composer.json
@@ -21,7 +21,8 @@
"symfony/console": "2.1.*",
"monolog/monolog": "1.0.*",
"symfony/finder": "2.1.*",
- "symfony/validator": "2.1.*"
+ "symfony/validator": "2.1.*",
+ "symfony/filesystem": "2.1.*"
},
"require-dev": {
"behat/behat": "2.4@stable"
View
19 src/Propel/Generator/Command/AbstractCommand.php
@@ -13,7 +13,7 @@
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Finder\Finder;
-
+use Symfony\Component\Filesystem\Filesystem;
use Propel\Generator\Exception\RuntimeException;
/**
@@ -22,9 +22,10 @@
abstract class AbstractCommand extends Command
{
const DEFAULT_INPUT_DIRECTORY = '.';
-
const DEFAULT_PLATFORM = 'MysqlPlatform';
+ protected $filesystem;
+
/**
* {@inheritdoc}
*/
@@ -72,6 +73,20 @@ protected function getSchemas($directory)
);
}
+ /**
+ * Returns a Filesystem instance.
+ *
+ * @return Filesystem
+ */
+ protected function getFilesystem()
+ {
+ if (null === $this->filesystem) {
+ $this->filesystem = new Filesystem();
+ }
+
+ return $this->filesystem;
+ }
+
protected function parseConnection($connection)
{
$pos = strpos($connection, '=');
View
6 src/Propel/Generator/Command/ConfigConvertXmlCommand.php
@@ -10,16 +10,14 @@
namespace Propel\Generator\Command;
-use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Console\Output\Output;
use Propel\Generator\Config\XmlToArrayConverter;
use Propel\Generator\Config\ArrayToPhpConverter;
-use Propel\Generator\Util\Filesystem;
-class ConfigConvertXmlCommand extends Command
+class ConfigConvertXmlCommand extends AbstractCommand
{
const DEFAULT_INPUT_DIRECTORY = '.';
const DEFAULT_INPUT_FILE = 'runtime-conf.xml';
@@ -51,7 +49,7 @@ protected function execute(InputInterface $input, OutputInterface $output)
throw new \RuntimeException(sprintf('Unable to find the "%s" configuration file', $inputFilePath));
}
- $filesystem = new Filesystem();
+ $filesystem = $this->getFilesystem();
if (!$filesystem->mkdir($input->getOption('output-dir'))) {
throw new \RuntimeException(sprintf('Unable to write the "%s" output directory', $input->getOption('output-dir')));
};
View
3  src/Propel/Generator/Command/DatabaseReverseCommand.php
@@ -17,7 +17,6 @@
use Symfony\Component\Console\Output\Output;
use Propel\Generator\Config\GeneratorConfig;
use Propel\Generator\Manager\ReverseManager;
-use Propel\Generator\Util\Filesystem;
/**
* @author William Durand <william.durand1@gmail.com>
@@ -61,7 +60,7 @@ protected function execute(InputInterface $input, OutputInterface $output)
'propel.reverse.parser.class' => sprintf('\\Propel\\Generator\\Reverse\\%sSchemaParser', $vendor),
));
- $filesystem = new Filesystem();
+ $filesystem = $this->getFilesystem();
$filesystem->mkdir($input->getOption('output-dir'));
$manager = new ReverseManager();
View
3  src/Propel/Generator/Command/GraphvizGenerateCommand.php
@@ -16,7 +16,6 @@
use Symfony\Component\Console\Output\Output;
use Propel\Generator\Config\GeneratorConfig;
use Propel\Generator\Manager\GraphvizManager;
-use Propel\Generator\Util\Filesystem;
/**
* @author William Durand <william.durand1@gmail.com>
@@ -49,7 +48,7 @@ protected function execute(InputInterface $input, OutputInterface $output)
'propel.packageObjectModel' => true,
));
- $filesystem = new Filesystem();
+ $filesystem = $this->getFilesystem();
$filesystem->mkdir($input->getOption('output-dir'));
$manager = new GraphvizManager();
View
3  src/Propel/Generator/Command/MigrationDiffCommand.php
@@ -18,7 +18,6 @@
use Propel\Generator\Exception\RuntimeException;
use Propel\Generator\Manager\MigrationManager;
use Propel\Generator\Model\IdMethod;
-use Propel\Generator\Util\Filesystem;
/**
* @author William Durand <william.durand1@gmail.com>
@@ -55,7 +54,7 @@ protected function execute(InputInterface $input, OutputInterface $output)
'propel.platform.class' => $input->getOption('platform'),
));
- $filesystem = new Filesystem();
+ $filesystem = $this->getFilesystem();
$filesystem->mkdir($input->getOption('output-dir'));
$manager = new MigrationManager();
View
3  src/Propel/Generator/Command/MigrationDownCommand.php
@@ -16,7 +16,6 @@
use Symfony\Component\Console\Output\Output;
use Propel\Generator\Config\GeneratorConfig;
use Propel\Generator\Manager\MigrationManager;
-use Propel\Generator\Util\Filesystem;
/**
* @author William Durand <william.durand1@gmail.com>
@@ -52,7 +51,7 @@ protected function execute(InputInterface $input, OutputInterface $output)
'propel.platform.class' => $input->getOption('platform'),
));
- $filesystem = new Filesystem();
+ $filesystem = $this->getFilesystem();
$filesystem->mkdir($input->getOption('output-dir'));
$manager = new MigrationManager();
View
3  src/Propel/Generator/Command/MigrationMigrateCommand.php
@@ -16,7 +16,6 @@
use Symfony\Component\Console\Output\Output;
use Propel\Generator\Config\GeneratorConfig;
use Propel\Generator\Manager\MigrationManager;
-use Propel\Generator\Util\Filesystem;
/**
* @author William Durand <william.durand1@gmail.com>
@@ -52,7 +51,7 @@ protected function execute(InputInterface $input, OutputInterface $output)
'propel.platform.class' => $input->getOption('platform'),
));
- $filesystem = new Filesystem();
+ $filesystem = $this->getFilesystem();
$filesystem->mkdir($input->getOption('output-dir'));
$manager = new MigrationManager();
View
3  src/Propel/Generator/Command/MigrationStatusCommand.php
@@ -16,7 +16,6 @@
use Symfony\Component\Console\Output\Output;
use Propel\Generator\Config\GeneratorConfig;
use Propel\Generator\Manager\MigrationManager;
-use Propel\Generator\Util\Filesystem;
/**
* @author William Durand <william.durand1@gmail.com>
@@ -52,7 +51,7 @@ protected function execute(InputInterface $input, OutputInterface $output)
'propel.platform.class' => $input->getOption('platform'),
));
- $filesystem = new Filesystem();
+ $filesystem = $this->getFilesystem();
$filesystem->mkdir($input->getOption('output-dir'));
$manager = new MigrationManager();
View
3  src/Propel/Generator/Command/MigrationUpCommand.php
@@ -16,7 +16,6 @@
use Symfony\Component\Console\Output\Output;
use Propel\Generator\Config\GeneratorConfig;
use Propel\Generator\Manager\MigrationManager;
-use Propel\Generator\Util\Filesystem;
/**
* @author William Durand <william.durand1@gmail.com>
@@ -52,7 +51,7 @@ protected function execute(InputInterface $input, OutputInterface $output)
'propel.platform.class' => $input->getOption('platform'),
));
- $filesystem = new Filesystem();
+ $filesystem = $this->getFilesystem();
$filesystem->mkdir($input->getOption('output-dir'));
$manager = new MigrationManager();
View
3  src/Propel/Generator/Command/ModelBuildCommand.php
@@ -16,7 +16,6 @@
use Symfony\Component\Console\Output\Output;
use Propel\Generator\Config\GeneratorConfig;
use Propel\Generator\Manager\ModelManager;
-use Propel\Generator\Util\Filesystem;
/**
* @author Florian Klein <florian.klein@free.fr>
@@ -133,7 +132,7 @@ protected function execute(InputInterface $input, OutputInterface $output)
'propel.mysql.tableEngineKeyword' => 'ENGINE',
), $this->getBuildProperties($input->getOption('input-dir') . '/build.properties')));
- $filesystem = new Filesystem();
+ $filesystem = $this->getFilesystem();
$filesystem->mkdir($input->getOption('output-dir'));
$manager = new ModelManager();
View
3  src/Propel/Generator/Command/SqlBuildCommand.php
@@ -16,7 +16,6 @@
use Symfony\Component\Console\Output\Output;
use Propel\Generator\Config\GeneratorConfig;
use Propel\Generator\Manager\SqlManager;
-use Propel\Generator\Util\Filesystem;
/**
* @author William Durand <william.durand1@gmail.com>
@@ -64,7 +63,7 @@ protected function execute(InputInterface $input, OutputInterface $output)
'propel.mysql.tableEngineKeyword' => 'ENGINE',
), $this->getBuildProperties($input->getOption('input-dir') . '/build.properties')));
- $filesystem = new Filesystem();
+ $filesystem = $this->getFilesystem();
$filesystem->mkdir($input->getOption('output-dir'));
$manager = new SqlManager();
View
275 src/Propel/Generator/Util/Filesystem.php
@@ -1,275 +0,0 @@
-<?php
-
-/**
- * This file is part of the Propel package.
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- *
- * @license MIT License
- */
-
-namespace Propel\Generator\Util;
-
-/**
- * Provides basic utility to manipulate the file system.
- * This class comes from the Symfony2 framework.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Filesystem
-{
- /**
- * Copies a file.
- *
- * This method only copies the file if the origin file is newer than the target file.
- *
- * By default, if the target already exists, it is not overridden.
- *
- * @param string $originFile The original filename
- * @param string $targetFile The target filename
- * @param array $override Whether to override an existing file or not
- */
- public function copy($originFile, $targetFile, $override = false)
- {
- $this->mkdir(dirname($targetFile));
-
- if (!$override && is_file($targetFile)) {
- $doCopy = filemtime($originFile) > filemtime($targetFile);
- } else {
- $doCopy = true;
- }
-
- if ($doCopy) {
- copy($originFile, $targetFile);
- }
- }
-
- /**
- * Creates a directory recursively.
- *
- * @param string|array|\Traversable $dirs The directory path
- * @param int $mode The directory mode
- *
- * @return boolean true if the directory has been created, false otherwise
- */
- public function mkdir($dirs, $mode = 0777)
- {
- $ret = true;
- foreach ($this->toIterator($dirs) as $dir) {
- if (is_dir($dir)) {
- continue;
- }
-
- $ret = @mkdir($dir, $mode, true) && $ret;
- }
-
- return $ret;
- }
-
- /**
- * Creates empty files.
- *
- * @param string|array|\Traversable $files A filename, an array of files, or a \Traversable instance to remove
- */
- public function touch($files)
- {
- foreach ($this->toIterator($files) as $file) {
- touch($file);
- }
- }
-
- /**
- * Removes files or directories.
- *
- * @param string|array|\Traversable $files A filename, an array of files, or a \Traversable instance to remove
- */
- public function remove($files)
- {
- $files = iterator_to_array($this->toIterator($files));
- $files = array_reverse($files);
- foreach ($files as $file) {
- if (!file_exists($file)) {
- continue;
- }
-
- if (is_dir($file) && !is_link($file)) {
- $this->remove(new \FilesystemIterator($file));
-
- rmdir($file);
- } else {
- unlink($file);
- }
- }
- }
-
- /**
- * Change mode for an array of files or directories.
- *
- * @param string|array|\Traversable $files A filename, an array of files, or a \Traversable instance to remove
- * @param integer $mode The new mode
- * @param integer $umask The mode mask (octal)
- */
- public function chmod($files, $mode, $umask = 0000)
- {
- $currentUmask = umask();
- umask($umask);
-
- foreach ($this->toIterator($files) as $file) {
- chmod($file, $mode);
- }
-
- umask($currentUmask);
- }
-
- /**
- * Renames a file.
- *
- * @param string $origin The origin filename
- * @param string $target The new filename
- *
- * @throws \RuntimeException When target file already exists
- */
- public function rename($origin, $target)
- {
- // we check that target does not exist
- if (is_readable($target)) {
- throw new \RuntimeException(sprintf('Cannot rename because the target "%s" already exist.', $target));
- }
-
- rename($origin, $target);
- }
-
- /**
- * Creates a symbolic link or copy a directory.
- *
- * @param string $originDir The origin directory path
- * @param string $targetDir The symbolic link name
- * @param boolean $copyOnWindows Whether to copy files if on Windows
- */
- public function symlink($originDir, $targetDir, $copyOnWindows = false)
- {
- if (!function_exists('symlink') && $copyOnWindows) {
- $this->mirror($originDir, $targetDir);
-
- return;
- }
-
- $ok = false;
- if (is_link($targetDir)) {
- if (readlink($targetDir) != $originDir) {
- unlink($targetDir);
- } else {
- $ok = true;
- }
- }
-
- if (!$ok) {
- symlink($originDir, $targetDir);
- }
- }
-
- /**
- * Given an existing path, convert it to a path relative to a given starting path
- *
- * @var string Absolute path of target
- * @var string Absolute path where traversal begins
- *
- * @return string Path of target relative to starting path
- */
- public function makePathRelative($endPath, $startPath)
- {
- // Find for which character the the common path stops
- $offset = 0;
- while ($startPath[$offset] === $endPath[$offset]) {
- $offset++;
- }
-
- // Determine how deep the start path is relative to the common path (ie, "web/bundles" = 2 levels)
- $depth = substr_count(substr($startPath, $offset), DIRECTORY_SEPARATOR) + 1;
-
- // Repeated "../" for each level need to reach the common path
- $traverser = str_repeat('../', $depth);
-
- // Construct $endPath from traversing to the common path, then to the remaining $endPath
- return $traverser.substr($endPath, $offset);
- }
-
- /**
- * Mirrors a directory to another.
- *
- * @param string $originDir The origin directory
- * @param string $targetDir The target directory
- * @param \Traversable $iterator A Traversable instance
- * @param array $options An array of boolean options
- * Valid options are:
- * - $options['override'] Whether to override an existing file on copy or not (see copy())
- * - $options['copy_on_windows'] Whether to copy files instead of links on Windows (see symlink())
- *
- * @throws \RuntimeException When file type is unknown
- */
- public function mirror($originDir, $targetDir, \Traversable $iterator = null, $options = array())
- {
- $copyOnWindows = false;
- if (isset($options['copy_on_windows']) && !function_exists('symlink')) {
- $copyOnWindows = $options['copy_on_windows'];
- }
-
- if (null === $iterator) {
- $flags = $copyOnWindows ? \FilesystemIterator::SKIP_DOTS | \FilesystemIterator::FOLLOW_SYMLINKS : \FilesystemIterator::SKIP_DOTS;
- $iterator = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($originDir, $flags), \RecursiveIteratorIterator::SELF_FIRST);
- }
-
- if ('/' === substr($targetDir, -1) || '\\' === substr($targetDir, -1)) {
- $targetDir = substr($targetDir, 0, -1);
- }
-
- if ('/' === substr($originDir, -1) || '\\' === substr($originDir, -1)) {
- $originDir = substr($originDir, 0, -1);
- }
-
- foreach ($iterator as $file) {
- $target = $targetDir.'/'.str_replace($originDir.DIRECTORY_SEPARATOR, '', $file->getPathname());
-
- if (is_link($file)) {
- $this->symlink($file, $target);
- } elseif (is_dir($file)) {
- $this->mkdir($target);
- } elseif (is_file($file) || ($copyOnWindows && is_link($file))) {
- $this->copy($file, $target, isset($options['override']) ? $options['override'] : false);
- } else {
- throw new \RuntimeException(sprintf('Unable to guess "%s" file type.', $file));
- }
- }
- }
-
- /**
- * Returns whether the file path is an absolute path.
- *
- * @param string $file A file path
- *
- * @return boolean
- */
- public function isAbsolutePath($file)
- {
- if ($file[0] == '/' || $file[0] == '\\'
- || (strlen($file) > 3 && ctype_alpha($file[0])
- && $file[1] == ':'
- && ($file[2] == '\\' || $file[2] == '/')
- )
- || null !== parse_url($file, PHP_URL_SCHEME)
- ) {
- return true;
- }
-
- return false;
- }
-
- private function toIterator($files)
- {
- if (!$files instanceof \Traversable) {
- $files = new \ArrayObject(is_array($files) ? $files : array($files));
- }
-
- return $files;
- }
-}
Something went wrong with that request. Please try again.