diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/Utils/CLI.php | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/src/Utils/CLI.php b/src/Utils/CLI.php new file mode 100644 index 0000000..77da9ac --- /dev/null +++ b/src/Utils/CLI.php @@ -0,0 +1,69 @@ +<?php + +/** + * CLI interface + * + * @package SqlParser + * @subpackage Utils + */ +namespace SqlParser\Utils; + +/** + * CLI interface + * + * @category Exceptions + * @package SqlParser + * @subpackage Utils + * @author Michal Čihař <michal@cihar.com> + * @license http://opensource.org/licenses/GPL-2.0 GNU Public License + */ +class CLI +{ + public function usage() + { + echo "Usage: highlight-query --query SQL [--format html|cli|text]\n"; + } + + public function parse() + { + $longopts = array('help', 'query:', 'format:'); + $params = getopt( + 'hq:f:', $longopts + ); + foreach ($longopts as $value) { + $value = rtrim($value, ':'); + if (isset($params[$value])) { + $params[$value[0]] = $params[$value]; + } + } + if (! isset($params['f'])) { + $params['f'] = 'cli'; + } + if (! in_array($params['f'], array('html', 'cli', 'text'))) { + return false; + } + return $params; + } + + public function run() + { + $params = $this->parse(); + if ($params === false) { + return 1; + } + if (isset($params['h'])) { + $this->usage(); + return 0; + } + if (isset($params['q'])) { + echo Formatter::format( + $params['q'], array('type' => $params['f']) + ); + echo "\n"; + return 0; + } + echo "ERROR: Missing parameters!\n"; + $this->usage(); + return 1; + } +} |