in bowler/main.py [0:0]
def do(interactive: bool, query: str, paths: List[str]) -> None:
"""Execute a query or enter interactive mode."""
if not query or query == "-":
namespace = {"Query": Query, "START": START, "SYMBOL": SYMBOL, "TOKEN": TOKEN}
try:
import IPython
IPython.start_ipython(argv=[], user_ns=namespace)
except ImportError:
import code as _code
_code.interact(local=namespace)
finally:
return
code = compile(query, "<console>", "eval")
result = eval(code) # noqa eval() - developer tool, hopefully they're not dumb
if isinstance(result, Query):
if result.retcode:
exc = click.ClickException("query failed")
exc.exit_code = result.retcode
raise exc
result.diff(interactive=interactive)
elif result:
click.echo(repr(result))