Merging upstream version 1.10.0.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
4551c2c19a
commit
7e40561ca0
23 changed files with 298 additions and 99 deletions
|
@ -59,7 +59,6 @@ PACKAGE_ROOT = os.path.abspath(os.path.dirname(__file__))
|
|||
|
||||
|
||||
class LiteCli(object):
|
||||
|
||||
default_prompt = "\\d> "
|
||||
max_len_prompt = 45
|
||||
|
||||
|
@ -110,6 +109,13 @@ class LiteCli(object):
|
|||
fg="red",
|
||||
)
|
||||
self.logfile = False
|
||||
# Load startup commands.
|
||||
try:
|
||||
self.startup_commands = c["startup_commands"]
|
||||
except (
|
||||
KeyError
|
||||
): # Redundant given the load_config() function that merges in the standard config, but put here to avoid fail if user do not have updated config file.
|
||||
self.startup_commands = None
|
||||
|
||||
self.completion_refresher = CompletionRefresher()
|
||||
|
||||
|
@ -230,7 +236,6 @@ class LiteCli(object):
|
|||
return [(None, None, None, "Changed prompt format to %s" % arg)]
|
||||
|
||||
def initialize_logging(self):
|
||||
|
||||
log_file = self.config["main"]["log_file"]
|
||||
if log_file == "default":
|
||||
log_file = config_location() + "log"
|
||||
|
@ -298,7 +303,6 @@ class LiteCli(object):
|
|||
return {x: get(x) for x in keys}
|
||||
|
||||
def connect(self, database=""):
|
||||
|
||||
cnf = {"database": None}
|
||||
|
||||
cnf = self.read_my_cnf_files(cnf.keys())
|
||||
|
@ -486,29 +490,17 @@ class LiteCli(object):
|
|||
except EOFError as e:
|
||||
raise e
|
||||
except KeyboardInterrupt:
|
||||
# get last connection id
|
||||
connection_id_to_kill = sqlexecute.connection_id
|
||||
logger.debug("connection id to kill: %r", connection_id_to_kill)
|
||||
# Restart connection to the database
|
||||
sqlexecute.connect()
|
||||
try:
|
||||
for title, cur, headers, status in sqlexecute.run(
|
||||
"kill %s" % connection_id_to_kill
|
||||
):
|
||||
status_str = str(status).lower()
|
||||
if status_str.find("ok") > -1:
|
||||
logger.debug(
|
||||
"cancelled query, connection id: %r, sql: %r",
|
||||
connection_id_to_kill,
|
||||
text,
|
||||
)
|
||||
self.echo("cancelled query", err=True, fg="red")
|
||||
sqlexecute.conn.interrupt()
|
||||
except Exception as e:
|
||||
self.echo(
|
||||
"Encountered error while cancelling query: {}".format(e),
|
||||
err=True,
|
||||
fg="red",
|
||||
)
|
||||
else:
|
||||
logger.debug("cancelled query")
|
||||
self.echo("cancelled query", err=True, fg="red")
|
||||
except NotImplementedError:
|
||||
self.echo("Not Yet Implemented.", fg="yellow")
|
||||
except OperationalError as e:
|
||||
|
@ -555,7 +547,6 @@ class LiteCli(object):
|
|||
complete_style = CompleteStyle.READLINE_LIKE
|
||||
|
||||
with self._completer_lock:
|
||||
|
||||
if self.key_bindings == "vi":
|
||||
editing_mode = EditingMode.VI
|
||||
else:
|
||||
|
@ -590,6 +581,42 @@ class LiteCli(object):
|
|||
search_ignore_case=True,
|
||||
)
|
||||
|
||||
def startup_commands():
|
||||
if self.startup_commands:
|
||||
if "commands" in self.startup_commands:
|
||||
for command in self.startup_commands["commands"]:
|
||||
try:
|
||||
res = sqlexecute.run(command)
|
||||
except Exception as e:
|
||||
click.echo(command)
|
||||
self.echo(str(e), err=True, fg="red")
|
||||
else:
|
||||
click.echo(command)
|
||||
for title, cur, headers, status in res:
|
||||
if title == "dot command not implemented":
|
||||
self.echo(
|
||||
"The SQLite dot command '"
|
||||
+ command.split(" ", 1)[0]
|
||||
+ "' is not yet implemented.",
|
||||
fg="yellow",
|
||||
)
|
||||
else:
|
||||
output = self.format_output(title, cur, headers)
|
||||
for line in output:
|
||||
self.echo(line)
|
||||
else:
|
||||
self.echo(
|
||||
"Could not read commands. The startup commands needs to be formatted as: \n commands = 'command1', 'command2', ...",
|
||||
fg="yellow",
|
||||
)
|
||||
|
||||
try:
|
||||
startup_commands()
|
||||
except Exception as e:
|
||||
self.echo(
|
||||
"Could not execute all startup commands: \n" + str(e), fg="yellow"
|
||||
)
|
||||
|
||||
try:
|
||||
while True:
|
||||
one_iteration()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue