Adding overwrite option to the i18n extract task

This commit is contained in:
Jelle Henkens 2012-05-25 17:01:56 +01:00
parent af4a2efc33
commit 5656461025
2 changed files with 31 additions and 0 deletions

View file

@ -302,6 +302,11 @@ class ExtractTask extends AppShell {
->addOption('exclude', array( ->addOption('exclude', array(
'help' => __d('cake_console', 'Comma separated list of directories to exclude.' . 'help' => __d('cake_console', 'Comma separated list of directories to exclude.' .
' Any path containing a path segment with the provided values will be skipped. E.g. test,vendors') ' Any path containing a path segment with the provided values will be skipped. E.g. test,vendors')
))
->addOption('overwrite', array(
'boolean' => true,
'default' => false,
'help' => __d('cake_console', 'Always overwrite existing .pot files.')
)); ));
} }
@ -537,6 +542,10 @@ class ExtractTask extends AppShell {
*/ */
protected function _writeFiles() { protected function _writeFiles() {
$overwriteAll = false; $overwriteAll = false;
if (!empty($this->params['overwrite'])) {
$overwriteAll = true;
}
foreach ($this->_storage as $domain => $sentences) { foreach ($this->_storage as $domain => $sentences) {
$output = $this->_writeHeader(); $output = $this->_writeHeader();
foreach ($sentences as $sentence => $header) { foreach ($sentences as $sentence => $header) {

View file

@ -399,4 +399,26 @@ class ExtractTaskTest extends CakeTestCase {
$pattern = '#Plugin/TestPlugin/Model/TestPluginPost.php:validation for field title#'; $pattern = '#Plugin/TestPlugin/Model/TestPluginPost.php:validation for field title#';
$this->assertNotRegExp($pattern, $result); $this->assertNotRegExp($pattern, $result);
} }
/**
* Test that the extract shell overwrites existing files with the overwrite parameter
*
* @return void
*/
public function testExtractOverwrite() {
$this->Task->interactive = false;
$this->Task->params['paths'] = CAKE . 'Test' . DS . 'test_app' . DS;
$this->Task->params['output'] = $this->path . DS;
$this->Task->params['overwrite'] = true;
file_put_contents($this->path . DS . 'default.pot', 'will be overwritten');
$this->assertTrue(file_exists($this->path . DS . 'default.pot'));
$original = file_get_contents($this->path . DS . 'default.pot');
$this->Task->execute();
$result = file_get_contents($this->path . DS . 'default.pot');
$this->assertNotEquals($original, $result);
}
} }