Fix issue 9172

This commit is contained in:
umpirsky 2014-04-30 19:04:41 +02:00 committed by Fabien Potencier
parent 8f8b20c16f
commit 25f1d85d6b
5 changed files with 40 additions and 1 deletions

View File

@ -5,6 +5,7 @@ CHANGELOG
-----
* Added `translation:debug` command
* Added `--no-backup` option to `translation:update` command
* Added `config:debug` command
* Added `yaml:lint` command
* Deprecated the `RouterApacheDumperCommand` which will be removed in Symfony 3.0.

View File

@ -52,6 +52,10 @@ class TranslationUpdateCommand extends ContainerAwareCommand
'force', null, InputOption::VALUE_NONE,
'Should the update be done'
),
new InputOption(
'no-backup', null, InputOption::VALUE_NONE,
'Should backup be disabled'
),
new InputOption(
'clean', null, InputOption::VALUE_NONE,
'Should clean not found messages'
@ -139,6 +143,10 @@ EOF
}
}
if ($input->getOption('no-backup') === true) {
$writer->disableBackup();
}
// save the files
if ($input->getOption('force') === true) {
$output->writeln('Writing files');

View File

@ -5,6 +5,7 @@ CHANGELOG
-----
* added relative file path template to the file dumpers
* added optional backup to the file dumpers
* changed IcuResFileDumper to extend FileDumper
2.3.0

View File

@ -31,6 +31,13 @@ abstract class FileDumper implements DumperInterface
*/
protected $relativePathTemplate = '%domain%.%locale%.%extension%';
/**
* Make file backup before the dump.
*
* @var bool
*/
private $backup = true;
/**
* Sets the template for the relative paths to files.
*
@ -41,6 +48,16 @@ abstract class FileDumper implements DumperInterface
$this->relativePathTemplate = $relativePathTemplate;
}
/**
* Sets backup flag.
*
* @param bool
*/
public function setBackup($backup)
{
$this->backup = $backup;
}
/**
* {@inheritdoc}
*/
@ -55,7 +72,9 @@ abstract class FileDumper implements DumperInterface
// backup
$fullpath = $options['path'].'/'.$this->getRelativePath($domain, $messages->getLocale());
if (file_exists($fullpath)) {
copy($fullpath, $fullpath.'~');
if ($this->backup) {
copy($fullpath, $fullpath.'~');
}
} else {
$directory = dirname($fullpath);
if (!file_exists($directory) && !@mkdir($directory, 0777, true)) {

View File

@ -39,6 +39,16 @@ class TranslationWriter
$this->dumpers[$format] = $dumper;
}
/**
* Disables dumper backup.
*/
public function disableBackup()
{
foreach ($this->dumpers as $dumper) {
$dumper->setBackup(false);
}
}
/**
* Obtains the list of supported formats.
*