X-Git-Url: https://git.cweiske.de/php-sqllint.git/blobdiff_plain/8abc23ae704ce1bf3e929dc9205aa6af42b8dea5..ba5d5e864584bbad0a486f2f86f62ef340aeeade:/src/phpsqllint/Cli.php?ds=sidebyside diff --git a/src/phpsqllint/Cli.php b/src/phpsqllint/Cli.php index 129a925..4edcf66 100644 --- a/src/phpsqllint/Cli.php +++ b/src/phpsqllint/Cli.php @@ -29,7 +29,14 @@ class Cli protected $renderer; protected $format = false; - protected $colors = false; + + /** + * What syntax highlighting mode should be used + * + * none, ansi, html + */ + protected $highlight = 'none'; + /** * Start processing. @@ -122,9 +129,13 @@ class Cli return false; } + $typeMap = array( + 'none' => 'text', + 'ansi' => 'cli', + 'html' => 'html', + ); $options = array( - //FIXME: automatically detect if the shell/tool supports colors - 'type' => $this->colors ? 'cli' : 'text' + 'type' => $typeMap[$this->highlight], ); echo \SqlParser\Utils\Formatter::format($sql, $options) . "\n"; } @@ -152,9 +163,14 @@ class Cli { $parser = new \Console_CommandLine(); $parser->description = 'php-sqllint'; - $parser->version = '0.0.2'; + $parser->version = 'dev'; $parser->avoid_reading_stdin = true; + $versionFile = __DIR__ . '/../../VERSION'; + if (file_exists($versionFile)) { + $parser->version = trim(file_get_contents($versionFile)); + } + $parser->addOption( 'format', array( @@ -166,13 +182,20 @@ class Cli ) ); $parser->addOption( - 'colors', + 'highlight', array( - 'short_name' => '-c', - 'long_name' => '--colors', - 'description' => 'Use colors in formatting output', - 'action' => 'StoreTrue', - 'default' => false, + 'short_name' => '-h', + 'long_name' => '--highlight', + 'description' => 'Highlighting mode (when using --format)', + 'action' => 'StoreString', + 'choices' => array( + 'none', + 'ansi', + 'html', + 'auto', + ), + 'default' => 'auto', + 'add_list_option' => true, ) ); $parser->addOption( @@ -219,7 +242,23 @@ class Cli $this->renderer = new $rendClass(); $this->format = $result->options['format']; - $this->colors = $result->options['colors']; + + $this->highlight = $result->options['highlight']; + if ($this->highlight == 'auto') { + if (php_sapi_name() == 'cli') { + //default coloring to enabled, except + // when piping | to another tool + $this->highlight = 'ansi'; + if (function_exists('posix_isatty') + && !posix_isatty(STDOUT) + ) { + $this->highlight = 'none'; + } + } else { + //no idea where we are, so do not highlight + $this->highlight = 'none'; + } + } foreach ($result->args['sql_files'] as $filename) { if ($filename == '-') {