class Horde_Cli
{
/**
- * The location of the data directory which contains locale information.
- * This contains @data_dir@ if the package has not been installed via
- * PEAR.
- */
- const LOCALE_DIR = '@data_dir@/locale';
-
- /**
* Are we running on a console?
*
* @var boolean
/**
* Detect the current environment (web server or console) and sets
* internal values accordingly.
+ *
+ * The constructor must not be called after init().
+ *
+ * @param Horde_Translation $dict A translation handler implementing
+ * Horde_Translation.
*/
- public function __construct()
+ public function __construct($dict = null)
{
+ if ($dict) {
+ $this->_dict = $dict;
+ } else {
+ $this->_dict = new Horde_Translation_Gettext('Horde_Cli', dirname(__FILE__) . '/../../locale');
+ }
+
$this->_console = $this->runningFromCLI();
if ($this->_console) {
}
$this->writeln($this->red('===================='));
$this->writeln();
- $this->writeln($this->red($this->_t("Fatal Error:")));
+ $this->writeln($this->red($this->_dict->t("Fatal Error:")));
$this->writeln($this->red($error));
$this->writeln();
$this->writeln((string)$backtrace);
foreach ($choices as $key => $choice) {
$this->writeln($this->indent('(' . $this->bold($key) . ') ' . $choice));
}
- $this->writeln($this->_t("Type your choice: "), true);
+ $this->writeln($this->_dict->t("Type your choice: "), true);
@ob_flush();
// Get the user choice.
if (isset($choices[$response])) {
return $response;
} else {
- $this->writeln($this->red(sprintf($this->_t("\"%s\" is not a valid choice."), $response)));
+ $this->writeln($this->red(sprintf($this->_dict->t("\"%s\" is not a valid choice."), $response)));
}
} else {
@ob_flush();
* none. Also initialize a few variables in $_SERVER that aren't present
* from the CLI.
*
- * @param Horde_Translation_Factory $t A translation factory that
- * generates a Horde_Translation
- * instance.
+ * You must not call init() statically before calling the constructor.
+ * Either use the singleton() method to retrieve a Horde_Cli object after
+ * calling init(), or don't call init() statically.
+ *
+ * @param Horde_Translation $dict A translation handler implementing
+ * Horde_Translation.
*
* @return Horde_Cli A Horde_Cli instance.
*/
- static public function init(Horde_Translation_Factory $t = null)
+ static public function init($dict = null)
{
/* Run constructor now because it requires $_SERVER['SERVER_NAME'] to
* be empty if called with a CGI SAPI. */
- $cli = new self();
- $cli->initTranslation($t);
+ $cli = new self($dict);
@set_time_limit(0);
ob_implicit_flush(true);
}
/**
- * Try to initialize the translation system.
- *
- * @param Horde_Translation_Factory $t A translation factory that
- * generates a Horde_Translation
- * instance.
- *
- * @return Horde_Cli A Horde_Cli instance.
- */
- public function initTranslation(Horde_Translation_Factory $t = null)
- {
- if ($t === null && class_exists('Horde_Translation_Factory_Gettext')) {
- $t = new Horde_Translation_Factory_Gettext();
- }
- if ($t !== null) {
- $this->_dict = $t->createTranslation('Horde_Cli', self::LOCALE_DIR, dirname(__FILE__) . '/../../locale');
- } else {
- $this->_dict = false;
- }
- }
-
- /**
- * Returns the translation of a message.
- *
- * @param string $message The string to translate.
- *
- * @return string The string translation, or the original string if no
- * translation exists.
- */
- private function _t($message)
- {
- if ($this->_dict === false) {
- return $message;
- } else if ($this->_dict === null) {
- $this->initTranslation();
- return $this->_t($message);
- }
- return $this->_dict->t($message);
- }
-
- /**
* Make sure we're being called from the command line, and not via
* the web.
*
<email>jan@horde.org</email>
<active>yes</active>
</lead>
- <date>2010-10-18</date>
- <time>14:33:41</time>
+ <date>2010-08-15</date>
+ <time>15:33:56</time>
<version>
<release>0.2.0</release>
<api>0.2.0</api>
</dir> <!-- /doc -->
<dir name="lib">
<dir name="Horde">
- <file name="Cli.php" role="php">
- <tasks:replace from="@data_dir@" to="data_dir" type="pear-config" />
- </file>
+ <file name="Cli.php" role="php" />
</dir> <!-- /lib/Horde -->
</dir> <!-- /lib -->
- <dir name="locale">
- <dir name="ar">
- <dir name="LC_MESSAGES">
- <file name="Horde_Cli.mo" role="data" />
- <file name="Horde_Cli.po" role="data" />
- </dir> <!-- /locale/ar/LC_MESSAGES -->
- </dir> <!-- /locale/ar -->
- <dir name="bg">
- <dir name="LC_MESSAGES">
- <file name="Horde_Cli.mo" role="data" />
- <file name="Horde_Cli.po" role="data" />
- </dir> <!-- /locale/bg/LC_MESSAGES -->
- </dir> <!-- /locale/bg -->
- <dir name="bs">
- <dir name="LC_MESSAGES">
- <file name="Horde_Cli.mo" role="data" />
- <file name="Horde_Cli.po" role="data" />
- </dir> <!-- /locale/bs/LC_MESSAGES -->
- </dir> <!-- /locale/bs -->
- <dir name="ca">
- <dir name="LC_MESSAGES">
- <file name="Horde_Cli.mo" role="data" />
- <file name="Horde_Cli.po" role="data" />
- </dir> <!-- /locale/ca/LC_MESSAGES -->
- </dir> <!-- /locale/ca -->
- <dir name="cs">
- <dir name="LC_MESSAGES">
- <file name="Horde_Cli.mo" role="data" />
- <file name="Horde_Cli.po" role="data" />
- </dir> <!-- /locale/cs/LC_MESSAGES -->
- </dir> <!-- /locale/cs -->
- <dir name="da">
- <dir name="LC_MESSAGES">
- <file name="Horde_Cli.mo" role="data" />
- <file name="Horde_Cli.po" role="data" />
- </dir> <!-- /locale/da/LC_MESSAGES -->
- </dir> <!-- /locale/da -->
- <dir name="de">
- <dir name="LC_MESSAGES">
- <file name="Horde_Cli.mo" role="data" />
- <file name="Horde_Cli.po" role="data" />
- </dir> <!-- /locale/de/LC_MESSAGES -->
- </dir> <!-- /locale/de -->
- <dir name="el">
- <dir name="LC_MESSAGES">
- <file name="Horde_Cli.mo" role="data" />
- <file name="Horde_Cli.po" role="data" />
- </dir> <!-- /locale/el/LC_MESSAGES -->
- </dir> <!-- /locale/el -->
- <dir name="en">
- <dir name="LC_MESSAGES">
- <file name="Horde_Cli.mo" role="data" />
- <file name="Horde_Cli.po" role="data" />
- </dir> <!-- /locale/en/LC_MESSAGES -->
- </dir> <!-- /locale/en -->
- <dir name="es">
- <dir name="LC_MESSAGES">
- <file name="Horde_Cli.mo" role="data" />
- <file name="Horde_Cli.po" role="data" />
- </dir> <!-- /locale/es/LC_MESSAGES -->
- </dir> <!-- /locale/es -->
- <dir name="et">
- <dir name="LC_MESSAGES">
- <file name="Horde_Cli.mo" role="data" />
- <file name="Horde_Cli.po" role="data" />
- </dir> <!-- /locale/et/LC_MESSAGES -->
- </dir> <!-- /locale/et -->
- <dir name="eu">
- <dir name="LC_MESSAGES">
- <file name="Horde_Cli.mo" role="data" />
- <file name="Horde_Cli.po" role="data" />
- </dir> <!-- /locale/eu/LC_MESSAGES -->
- </dir> <!-- /locale/eu -->
- <dir name="fa">
- <dir name="LC_MESSAGES">
- <file name="Horde_Cli.mo" role="data" />
- <file name="Horde_Cli.po" role="data" />
- </dir> <!-- /locale/fa/LC_MESSAGES -->
- </dir> <!-- /locale/fa -->
- <dir name="fi">
- <dir name="LC_MESSAGES">
- <file name="Horde_Cli.mo" role="data" />
- <file name="Horde_Cli.po" role="data" />
- </dir> <!-- /locale/fi/LC_MESSAGES -->
- </dir> <!-- /locale/fi -->
- <dir name="fr">
- <dir name="LC_MESSAGES">
- <file name="Horde_Cli.mo" role="data" />
- <file name="Horde_Cli.po" role="data" />
- </dir> <!-- /locale/fr/LC_MESSAGES -->
- </dir> <!-- /locale/fr -->
- <dir name="gl">
- <dir name="LC_MESSAGES">
- <file name="Horde_Cli.mo" role="data" />
- <file name="Horde_Cli.po" role="data" />
- </dir> <!-- /locale/gl/LC_MESSAGES -->
- </dir> <!-- /locale/gl -->
- <dir name="he">
- <dir name="LC_MESSAGES">
- <file name="Horde_Cli.mo" role="data" />
- <file name="Horde_Cli.po" role="data" />
- </dir> <!-- /locale/he/LC_MESSAGES -->
- </dir> <!-- /locale/he -->
- <dir name="hr">
- <dir name="LC_MESSAGES">
- <file name="Horde_Cli.mo" role="data" />
- <file name="Horde_Cli.po" role="data" />
- </dir> <!-- /locale/hr/LC_MESSAGES -->
- </dir> <!-- /locale/hr -->
- <dir name="hu">
- <dir name="LC_MESSAGES">
- <file name="Horde_Cli.mo" role="data" />
- <file name="Horde_Cli.po" role="data" />
- </dir> <!-- /locale/hu/LC_MESSAGES -->
- </dir> <!-- /locale/hu -->
- <dir name="id">
- <dir name="LC_MESSAGES">
- <file name="Horde_Cli.mo" role="data" />
- <file name="Horde_Cli.po" role="data" />
- </dir> <!-- /locale/id/LC_MESSAGES -->
- </dir> <!-- /locale/id -->
- <dir name="is">
- <dir name="LC_MESSAGES">
- <file name="Horde_Cli.mo" role="data" />
- <file name="Horde_Cli.po" role="data" />
- </dir> <!-- /locale/is/LC_MESSAGES -->
- </dir> <!-- /locale/is -->
- <dir name="it">
- <dir name="LC_MESSAGES">
- <file name="Horde_Cli.mo" role="data" />
- <file name="Horde_Cli.po" role="data" />
- </dir> <!-- /locale/it/LC_MESSAGES -->
- </dir> <!-- /locale/it -->
- <dir name="ja">
- <dir name="LC_MESSAGES">
- <file name="Horde_Cli.mo" role="data" />
- <file name="Horde_Cli.po" role="data" />
- </dir> <!-- /locale/ja/LC_MESSAGES -->
- </dir> <!-- /locale/ja -->
- <dir name="km">
- <dir name="LC_MESSAGES">
- <file name="Horde_Cli.mo" role="data" />
- <file name="Horde_Cli.po" role="data" />
- </dir> <!-- /locale/km/LC_MESSAGES -->
- </dir> <!-- /locale/km -->
- <dir name="ko">
- <dir name="LC_MESSAGES">
- <file name="Horde_Cli.mo" role="data" />
- <file name="Horde_Cli.po" role="data" />
- </dir> <!-- /locale/ko/LC_MESSAGES -->
- </dir> <!-- /locale/ko -->
- <dir name="lt">
- <dir name="LC_MESSAGES">
- <file name="Horde_Cli.mo" role="data" />
- <file name="Horde_Cli.po" role="data" />
- </dir> <!-- /locale/lt/LC_MESSAGES -->
- </dir> <!-- /locale/lt -->
- <dir name="lv">
- <dir name="LC_MESSAGES">
- <file name="Horde_Cli.mo" role="data" />
- <file name="Horde_Cli.po" role="data" />
- </dir> <!-- /locale/lv/LC_MESSAGES -->
- </dir> <!-- /locale/lv -->
- <dir name="mk">
- <dir name="LC_MESSAGES">
- <file name="Horde_Cli.mo" role="data" />
- <file name="Horde_Cli.po" role="data" />
- </dir> <!-- /locale/mk/LC_MESSAGES -->
- </dir> <!-- /locale/mk -->
- <dir name="nb">
- <dir name="LC_MESSAGES">
- <file name="Horde_Cli.mo" role="data" />
- <file name="Horde_Cli.po" role="data" />
- </dir> <!-- /locale/nb/LC_MESSAGES -->
- </dir> <!-- /locale/nb -->
- <dir name="nl">
- <dir name="LC_MESSAGES">
- <file name="Horde_Cli.mo" role="data" />
- <file name="Horde_Cli.po" role="data" />
- </dir> <!-- /locale/nl/LC_MESSAGES -->
- </dir> <!-- /locale/nl -->
- <dir name="nn">
- <dir name="LC_MESSAGES">
- <file name="Horde_Cli.mo" role="data" />
- <file name="Horde_Cli.po" role="data" />
- </dir> <!-- /locale/nn/LC_MESSAGES -->
- </dir> <!-- /locale/nn -->
- <dir name="pl">
- <dir name="LC_MESSAGES">
- <file name="Horde_Cli.mo" role="data" />
- <file name="Horde_Cli.po" role="data" />
- </dir> <!-- /locale/pl/LC_MESSAGES -->
- </dir> <!-- /locale/pl -->
- <dir name="pt">
- <dir name="LC_MESSAGES">
- <file name="Horde_Cli.mo" role="data" />
- <file name="Horde_Cli.po" role="data" />
- </dir> <!-- /locale/pt/LC_MESSAGES -->
- </dir> <!-- /locale/pt -->
- <dir name="pt_BR">
- <dir name="LC_MESSAGES">
- <file name="Horde_Cli.mo" role="data" />
- <file name="Horde_Cli.po" role="data" />
- </dir> <!-- /locale/pt_BR/LC_MESSAGES -->
- </dir> <!-- /locale/pt_BR -->
- <dir name="ro">
- <dir name="LC_MESSAGES">
- <file name="Horde_Cli.mo" role="data" />
- <file name="Horde_Cli.po" role="data" />
- </dir> <!-- /locale/ro/LC_MESSAGES -->
- </dir> <!-- /locale/ro -->
- <dir name="ru">
- <dir name="LC_MESSAGES">
- <file name="Horde_Cli.mo" role="data" />
- <file name="Horde_Cli.po" role="data" />
- </dir> <!-- /locale/ru/LC_MESSAGES -->
- </dir> <!-- /locale/ru -->
- <dir name="sk">
- <dir name="LC_MESSAGES">
- <file name="Horde_Cli.mo" role="data" />
- <file name="Horde_Cli.po" role="data" />
- </dir> <!-- /locale/sk/LC_MESSAGES -->
- </dir> <!-- /locale/sk -->
- <dir name="sl">
- <dir name="LC_MESSAGES">
- <file name="Horde_Cli.mo" role="data" />
- <file name="Horde_Cli.po" role="data" />
- </dir> <!-- /locale/sl/LC_MESSAGES -->
- </dir> <!-- /locale/sl -->
- <dir name="sv">
- <dir name="LC_MESSAGES">
- <file name="Horde_Cli.mo" role="data" />
- <file name="Horde_Cli.po" role="data" />
- </dir> <!-- /locale/sv/LC_MESSAGES -->
- </dir> <!-- /locale/sv -->
- <dir name="tr">
- <dir name="LC_MESSAGES">
- <file name="Horde_Cli.mo" role="data" />
- <file name="Horde_Cli.po" role="data" />
- </dir> <!-- /locale/tr/LC_MESSAGES -->
- </dir> <!-- /locale/tr -->
- <dir name="uk">
- <dir name="LC_MESSAGES">
- <file name="Horde_Cli.mo" role="data" />
- <file name="Horde_Cli.po" role="data" />
- </dir> <!-- /locale/uk/LC_MESSAGES -->
- </dir> <!-- /locale/uk -->
- <dir name="zh_CN">
- <dir name="LC_MESSAGES">
- <file name="Horde_Cli.mo" role="data" />
- <file name="Horde_Cli.po" role="data" />
- </dir> <!-- /locale/zh_CN/LC_MESSAGES -->
- </dir> <!-- /locale/zh_CN -->
- <dir name="zh_TW">
- <dir name="LC_MESSAGES">
- <file name="Horde_Cli.mo" role="data" />
- <file name="Horde_Cli.po" role="data" />
- </dir> <!-- /locale/zh_TW/LC_MESSAGES -->
- </dir> <!-- /locale/zh_TW -->
- <file name="Horde_Cli.pot" role="data" />
- </dir> <!-- /locale -->
</dir> <!-- / -->
</contents>
<dependencies>
<name>Support</name>
<channel>pear.horde.org</channel>
</package>
- </required>
- <optional>
<package>
<name>Translation</name>
<channel>pear.horde.org</channel>
</package>
- </optional>
+ <extension>
+ <name>gettext</name>
+ </extension>
+ </required>
</dependencies>
<phprelease>
<filelist>
<release>beta</release>
<api>beta</api>
</stability>
- <date>2010-10-18</date>
+ <date>2010-08-15</date>
<license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
<notes>
* Horde_CLI:: -> Horde_Cli::