summaryrefslogtreecommitdiff
path: root/bin/striplangs.php
diff options
context:
space:
mode:
authorAndreas Gohr <andi@splitbrain.org>2014-09-29 20:17:39 +0200
committerAndreas Gohr <andi@splitbrain.org>2014-09-29 20:17:39 +0200
commit6c1ae996157551dcf5bb4e7e8922677bb3d3d358 (patch)
treeb3a4162367176a4e2ebadbd6ab31753c1b042be0 /bin/striplangs.php
parent35f3340eb3b989194a496861abfb5b3d3c9a630d (diff)
parent57271d078b9c433bec79d75cb44dadcafeae07df (diff)
downloadrpg-6c1ae996157551dcf5bb4e7e8922677bb3d3d358.tar.gz
rpg-6c1ae996157551dcf5bb4e7e8922677bb3d3d358.tar.bz2
Merge branch 'master' into stable
* master: (214 commits) release preparations postgresql auth plugin: correct function name parse AT parameter: first strtotime then timestamp remove config option move more strings to lang.php move strings to lang.php add placeholders for create page text phpdocs parserutils improve some scrutinizer issues visibility plugin methods use config cascade for loading of localizations reformatting config cascade add lang files to cascading work around missing gzopen on certain systems #865 translation update fix scrutinizer issues fixed typos in docblock comments do not allow empty passwords clean user credentials from control chars added filter method to INPUT class translation update ...
Diffstat (limited to 'bin/striplangs.php')
-rwxr-xr-xbin/striplangs.php214
1 files changed, 88 insertions, 126 deletions
diff --git a/bin/striplangs.php b/bin/striplangs.php
index 2bfddcea4..6335bc84c 100755
--- a/bin/striplangs.php
+++ b/bin/striplangs.php
@@ -1,148 +1,110 @@
#!/usr/bin/php
<?php
-/**
- * Strip unwanted languages from the DokuWiki install
- *
- * @author Martin 'E.T.' Misuth <et.github@ethome.sk>
- */
-if ('cli' != php_sapi_name()) die();
-
-#------------------------------------------------------------------------------
-if(!defined('DOKU_INC')) define('DOKU_INC',realpath(dirname(__FILE__).'/../').'/');
-require_once DOKU_INC.'inc/cliopts.php';
-
-#------------------------------------------------------------------------------
-function usage($show_examples = false) {
- print "Usage: striplangs.php [-h [-x]] [-e] [-k lang1[,lang2]..[,langN]]
-
- Removes all languages from the installation, besides the ones
- after the -k option. English language is never removed!
+if(!defined('DOKU_INC')) define('DOKU_INC', realpath(dirname(__FILE__).'/../').'/');
+define('NOSESSION', 1);
+require_once(DOKU_INC.'inc/init.php');
- OPTIONS
- -h, --help get this help
- -x, --examples get also usage examples
- -k, --keep comma separated list of languages, -e is always implied
- -e, --english keeps english, dummy to use without -k\n";
- if ( $show_examples ) {
- print "\n
- EXAMPLES
- Strips all languages, but keeps 'en' and 'de':
- striplangs -k de
- Strips all but 'en','ca-valencia','cs','de','is','sk':
- striplangs --keep ca-valencia,cs,de,is,sk
-
- Strips all but 'en':
- striplangs -e
-
- No option specified, prints usage and throws error:
- striplangs\n";
- }
-}
-
-function getSuppliedArgument($OPTS, $short, $long) {
- $arg = $OPTS->get($short);
- if ( is_null($arg) ) {
- $arg = $OPTS->get($long);
+/**
+ * Remove unwanted languages from a DokuWiki install
+ */
+class StripLangsCLI extends DokuCLI {
+
+ /**
+ * Register options and arguments on the given $options object
+ *
+ * @param DokuCLI_Options $options
+ * @return void
+ */
+ protected function setup(DokuCLI_Options $options) {
+
+ $options->setHelp(
+ 'Remove all languages from the installation, besides the ones specified. English language '.
+ 'is never removed!'
+ );
+
+ $options->registerOption(
+ 'keep',
+ 'Comma separated list of languages to keep in addition to English.',
+ 'k'
+ );
+ $options->registerOption(
+ 'english-only',
+ 'Remove all languages except English',
+ 'e'
+ );
}
- return $arg;
-}
-function processPlugins($path, $keep_langs) {
- if (is_dir($path)) {
- $entries = scandir($path);
-
- foreach ($entries as $entry) {
- if ($entry != "." && $entry != "..") {
- if ( is_dir($path.'/'.$entry) ) {
+ /**
+ * Your main program
+ *
+ * Arguments and options have been parsed when this is run
+ *
+ * @param DokuCLI_Options $options
+ * @return void
+ */
+ protected function main(DokuCLI_Options $options) {
+ if($options->getOpt('keep')) {
+ $keep = explode(',', $options->getOpt('keep'));
+ if(!in_array('en', $keep)) $keep[] = 'en';
+ } elseif($options->getOpt('english-only')) {
+ $keep = array('en');
+ } else {
+ echo $options->help();
+ exit(0);
+ }
- $plugin_langs = $path.'/'.$entry.'/lang';
+ // Kill all language directories in /inc/lang and /lib/plugins besides those in $langs array
+ $this->stripDirLangs(realpath(dirname(__FILE__).'/../inc/lang'), $keep);
+ $this->processExtensions(realpath(dirname(__FILE__).'/../lib/plugins'), $keep);
+ $this->processExtensions(realpath(dirname(__FILE__).'/../lib/tpl'), $keep);
+ }
- if ( is_dir( $plugin_langs ) ) {
- stripDirLangs($plugin_langs, $keep_langs);
+ /**
+ * Strip languages from extensions
+ *
+ * @param string $path path to plugin or template dir
+ * @param array $keep_langs languages to keep
+ */
+ protected function processExtensions($path, $keep_langs) {
+ if(is_dir($path)) {
+ $entries = scandir($path);
+
+ foreach($entries as $entry) {
+ if($entry != "." && $entry != "..") {
+ if(is_dir($path.'/'.$entry)) {
+
+ $plugin_langs = $path.'/'.$entry.'/lang';
+
+ if(is_dir($plugin_langs)) {
+ $this->stripDirLangs($plugin_langs, $keep_langs);
+ }
}
}
}
}
}
-}
-function stripDirLangs($path, $keep_langs) {
- $dir = dir($path);
+ /**
+ * Strip languages from path
+ *
+ * @param string $path path to lang dir
+ * @param array $keep_langs languages to keep
+ */
+ protected function stripDirLangs($path, $keep_langs) {
+ $dir = dir($path);
- while(($cur_dir = $dir->read()) !== false) {
- if( $cur_dir != '.' and $cur_dir != '..' and is_dir($path.'/'.$cur_dir)) {
+ while(($cur_dir = $dir->read()) !== false) {
+ if($cur_dir != '.' and $cur_dir != '..' and is_dir($path.'/'.$cur_dir)) {
- if ( !in_array($cur_dir, $keep_langs, true ) ) {
- killDir($path.'/'.$cur_dir);
- }
- }
- }
- $dir->close();
-}
-
-function killDir($dir) {
- if (is_dir($dir)) {
- $entries = scandir($dir);
-
- foreach ($entries as $entry) {
- if ($entry != "." && $entry != "..") {
- if ( is_dir($dir.'/'.$entry) ) {
- killDir($dir.'/'.$entry);
- } else {
- unlink($dir.'/'.$entry);
+ if(!in_array($cur_dir, $keep_langs, true)) {
+ io_rmdir($path.'/'.$cur_dir, true);
}
}
}
- reset($entries);
- rmdir($dir);
- }
-}
-#------------------------------------------------------------------------------
-
-// handle options
-$short_opts = 'hxk:e';
-$long_opts = array('help', 'examples', 'keep=','english');
-
-$OPTS = Doku_Cli_Opts::getOptions(__FILE__, $short_opts, $long_opts);
-
-if ( $OPTS->isError() ) {
- fwrite( STDERR, $OPTS->getMessage() . "\n");
- exit(1);
-}
-
-// handle '--examples' option
-$show_examples = ( $OPTS->has('x') or $OPTS->has('examples') ) ? true : false;
-
-// handle '--help' option
-if ( $OPTS->has('h') or $OPTS->has('help') ) {
- usage($show_examples);
- exit(0);
-}
-
-// handle both '--keep' and '--english' options
-if ( $OPTS->has('k') or $OPTS->has('keep') ) {
- $preserved_langs = getSuppliedArgument($OPTS,'k','keep');
- $langs = explode(',', $preserved_langs);
-
- // ! always enforce 'en' lang when using '--keep' (DW relies on it)
- if ( !isset($langs['en']) ) {
- $langs[]='en';
+ $dir->close();
}
-} elseif ( $OPTS->has('e') or $OPTS->has('english') ) {
- // '--english' was specified strip everything besides 'en'
- $langs = array ('en');
-} else {
- // no option was specified, print usage but don't do anything as
- // this run might not be intented
- usage();
- print "\n
- ERROR
- No option specified, use either -h -x to get more info,
- or -e to strip every language besides english.\n";
- exit(1);
}
-// Kill all language directories in /inc/lang and /lib/plugins besides those in $langs array
-stripDirLangs(realpath(dirname(__FILE__).'/../inc/lang'), $langs);
-processPlugins(realpath(dirname(__FILE__).'/../lib/plugins'), $langs);
+$cli = new StripLangsCLI();
+$cli->run(); \ No newline at end of file