import getopt import sys from os import path import click import core.utils from core.sheerka.Sheerka import Sheerka from prompt_toolkit import prompt from prompt_toolkit.auto_suggest import AutoSuggestFromHistory from prompt_toolkit.history import FileHistory def usage(): print("Sheerka v0.1\n") print("usage:") print(sys.argv[0] + "[-hdl:] command | [-i]") def main(argv): debug = False interactive = False loggers = set() try: opts, args = getopt.getopt(argv, "hdl:i", ["help", "debug", "logger=", "interactive"]) for o, a in opts: if o in ('-h', "--help"): usage() return True if o in ('-d', "--debug"): debug = True if o in ('-l', '-logger'): loggers.add(a) if o in ('-i', '--interactive'): interactive = True except getopt.GetoptError: usage() sys.exit(2) sheerka = Sheerka(debug=debug, loggers=loggers) sheerka.initialize() history_file = path.abspath(path.join(path.expanduser("~"), ".sheerka", "history.txt")) if interactive: while True: try: _in = prompt('sheerka> ', history=FileHistory(history_file), auto_suggest=AutoSuggestFromHistory(), ) if _in in ("exit", "quit", "bye"): print("Take care.") break if _in == '__': _in = click.edit() result = sheerka.evaluate_user_input(_in) sheerka.print(result) except KeyboardInterrupt: continue except EOFError: print("EOFError...") sys.exit(3) sys.exit(0) else: _in = core.utils.sysarg_to_string(args) result = sheerka.evaluate_user_input(_in) sheerka.print(result) return result[-1].status if len(result) > 0 else 1 if __name__ == '__main__': res = main(sys.argv[1:]) exit(0 if res else 1)