summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarkus Staab <markus.staab@redaxo.de>2019-04-05 14:28:24 +0200
committerMarkus Staab <markus.staab@redaxo.de>2019-04-05 14:33:40 +0200
commita215a3068328a1a980b71ffd47bdef32c9f6c96a (patch)
tree08955041ed831b63eb4c74a85219056db767746d
parentd500a211b54c64e620420c176d5269a59d64979d (diff)
downloadsql-parser-a215a3068328a1a980b71ffd47bdef32c9f6c96a.zip
sql-parser-a215a3068328a1a980b71ffd47bdef32c9f6c96a.tar.gz
sql-parser-a215a3068328a1a980b71ffd47bdef32c9f6c96a.tar.bz2
Support reading from stdin
-rw-r--r--src/Utils/CLI.php23
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;
+ }
}