diff options
author | Markus Staab <markus.staab@redaxo.de> | 2019-04-05 14:28:24 +0200 |
---|---|---|
committer | Markus Staab <markus.staab@redaxo.de> | 2019-04-05 14:33:40 +0200 |
commit | a215a3068328a1a980b71ffd47bdef32c9f6c96a (patch) | |
tree | 08955041ed831b63eb4c74a85219056db767746d | |
parent | d500a211b54c64e620420c176d5269a59d64979d (diff) | |
download | sql-parser-a215a3068328a1a980b71ffd47bdef32c9f6c96a.zip sql-parser-a215a3068328a1a980b71ffd47bdef32c9f6c96a.tar.gz sql-parser-a215a3068328a1a980b71ffd47bdef32c9f6c96a.tar.bz2 |
Support reading from stdin
-rw-r--r-- | src/Utils/CLI.php | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/Utils/CLI.php b/src/Utils/CLI.php index 31d09ce..79e88dc 100644 --- a/src/Utils/CLI.php +++ b/src/Utils/CLI.php @@ -77,6 +77,11 @@ class CLI return 0; } + if (!isset($params['q'])) { + if ($stdIn = $this->readStdin()) { + $params['q'] = $stdIn; + } + } if (isset($params['q'])) { echo Formatter::format( $params['q'], @@ -127,6 +132,11 @@ class CLI if (isset($params['c'])) { Context::load($params['c']); } + if (!isset($params['q'])) { + if ($stdIn = $this->readStdin()) { + $params['q'] = $stdIn; + } + } if (isset($params['q'])) { $lexer = new Lexer($params['q'], false); $parser = new Parser($lexer->list); @@ -177,6 +187,11 @@ class CLI return 0; } + if (!isset($params['q'])) { + if ($stdIn = $this->readStdin()) { + $params['q'] = $stdIn; + } + } if (isset($params['q'])) { $lexer = new Lexer($params['q'], false); foreach ($lexer->list->tokens as $idx => $token) { @@ -199,4 +214,12 @@ class CLI return 1; } + + private function readStdin() { + stream_set_blocking(STDIN, false); + $stdin = stream_get_contents(STDIN); + // restore-default block-mode setting + stream_set_blocking(STDIN, true); + return $stdin; + } } |