setDescription('Generate template files');
return $this;
}
public function requireSetup()
{
return false;
}
protected function doExecute(InputInterface $input, OutputInterface $output)
{
$tplDirs = array(
realpath(__DIR__ . '/../../../../templates/web/'),
realpath(__DIR__ . '/../../../../templates/mobile/')
);
$n_ok = $n_error = 0;
foreach ($tplDirs as $tplDir) {
$tmpDir = __DIR__ . '/../../../../tmp/cache_twig/';
$loader = new Twig_Loader_Filesystem($tplDir);
$twig = new Twig_Environment($loader, array(
'cache' => $tmpDir,
'auto_reload' => true
));
$twig->addExtension(new Twig_Extensions_Extension_I18n());
$twig->addExtension(new \Alchemy\Phrasea\Twig\JSUniqueID());
$twig->addTest('null', new \Twig_Test_Function('is_null'));
$twig->addFilter('AppName', new \Twig_Filter_Function('Alchemy\Phrasea\Controller\Admin\ConnectedUsers::appName'));
$twig->addFilter('serialize', new \Twig_Filter_Function('serialize'));
$twig->addFilter('stristr', new \Twig_Filter_Function('stristr'));
$twig->addFilter('implode', new \Twig_Filter_Function('implode'));
$twig->addFilter('get_class', new \Twig_Filter_Function('get_class'));
$twig->addFilter('stripdoublequotes', new \Twig_Filter_Function('stripdoublequotes'));
$twig->addFilter('geoname_display', new \Twig_Filter_Function('geonames::name_from_id'));
$twig->addFilter('get_collection_logo', new \Twig_Filter_Function('collection::getLogo'));
$twig->addFilter('floor', new \Twig_Filter_Function('floor'));
$twig->addFilter('bas_names', new \Twig_Filter_Function('phrasea::bas_names'));
$twig->addFilter('sbas_names', new \Twig_Filter_Function('phrasea::sbas_names'));
$twig->addFilter('urlencode', new \Twig_Filter_Function('urlencode'));
$twig->addFilter('sbasFromBas', new \Twig_Filter_Function('phrasea::sbasFromBas'));
$twig->addFilter('key_exists', new \Twig_Filter_Function('array_key_exists'));
$twig->addFilter('array_keys', new \Twig_Filter_Function('array_keys'));
$twig->addFilter('round', new \Twig_Filter_Function('round'));
$twig->addFilter('formatDate', new \Twig_Filter_Function('phraseadate::getDate'));
$twig->addFilter('prettyDate', new \Twig_Filter_Function('phraseadate::getPrettyString'));
$twig->addFilter('formatOctets', new \Twig_Filter_Function('p4string::format_octets'));
$twig->addFilter('geoname_name_from_id', new \Twig_Filter_Function('geonames::name_from_id'));
$twig->addFilter('base_from_coll', new \Twig_Filter_Function('phrasea::baseFromColl'));
$finder = new Symfony\Component\Finder\Finder();
foreach ($finder->files()->in(array($tplDir))->exclude('Mustache') as $file) {
try {
$twig->loadTemplate(str_replace($tplDir, '', $file->getPathname()));
$output->writeln('' . $file . '');
$n_ok ++;
} catch (Exception $e) {
$output->writeln('' . $e->getMessage() . '');
$n_error ++;
}
}
}
$output->writeln("");
$output->write(sprintf('%d templates generated. ', $n_ok));
if ($n_error > 0) {
$output->write(sprintf('%d templates failed.', $n_error));
}
$output->writeln("");
return $n_error;
}
}