From 5963e53eca1fbf4b91fd7063e3c3c4c594e50593 Mon Sep 17 00:00:00 2001 From: gitdev-bash <63194733+gitdev-bash@users.noreply.github.com> Date: Sun, 13 Jun 2021 19:26:25 +0200 Subject: [PATCH 1/5] add name=main --- piduck.py | 56 +++++++++++++++++++++++++++---------------------------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/piduck.py b/piduck.py index 77a9001..fa74629 100755 --- a/piduck.py +++ b/piduck.py @@ -3,32 +3,6 @@ from importlib import import_module from time import sleep -last_line = "" -key_layout = "us" -default_delay = 10 -string_delay = 1 - -piparser = argparse.ArgumentParser() -piparser.add_argument("-i", "--input", help="File input") -piparser.add_argument( - "-l", "--keyboardlayoutcode", help="Language codes specified by ISO639-1:2002" -) -piparser.add_argument("-d", "--defaultdelay", help="The default delay of execution") -piparser.add_argument( - "-s", "--defaultchardelay", help="The default char delay of execution" -) -piargs = piparser.parse_args() -if piargs.keyboardlayoutcode is not None: - key_layout = piargs.keyboardlayoutcode -if piargs.defaultdelay is not None: - default_delay = piargs.defaultdelay -if piargs.defaultchardelay is not None: - string_delay = piargs.defaultchardelay -try: - keymap = import_module("pd_key_maps.keymap_" + key_layout) -except ModuleNotFoundError: - exit(3) - def string(string): for char in string: @@ -126,5 +100,31 @@ def main(): last_line = line -main() -exit(0) +if __name__ == "__main__": + last_line = "" + key_layout = "us" + default_delay = 10 + string_delay = 1 + + piparser = argparse.ArgumentParser() + piparser.add_argument("-i", "--input", help="File input") + piparser.add_argument( + "-l", "--keyboardlayoutcode", help="Language codes specified by ISO639-1:2002" + ) + piparser.add_argument("-d", "--defaultdelay", help="The default delay of execution") + piparser.add_argument( + "-s", "--defaultchardelay", help="The default char delay of execution" + ) + piargs = piparser.parse_args() + if piargs.keyboardlayoutcode is not None: + key_layout = piargs.keyboardlayoutcode + if piargs.defaultdelay is not None: + default_delay = piargs.defaultdelay + if piargs.defaultchardelay is not None: + string_delay = piargs.defaultchardelay + try: + keymap = import_module("pd_key_maps.keymap_" + key_layout) + except ModuleNotFoundError: + exit(3) + main() + exit(0) From 2bcf15dc7617a16be7ded0a9a7d2b3953c0ca74c Mon Sep 17 00:00:00 2001 From: gitdev-bash <63194733+gitdev-bash@users.noreply.github.com> Date: Sun, 13 Jun 2021 19:36:48 +0200 Subject: [PATCH 2/5] Add eprint and error mesages --- piduck.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/piduck.py b/piduck.py index fa74629..47a2139 100755 --- a/piduck.py +++ b/piduck.py @@ -2,6 +2,11 @@ import argparse from importlib import import_module from time import sleep +import sys + + +def eprint(*args, **kwargs): + print(*args, file=sys.stderr, **kwargs) def string(string): @@ -61,6 +66,7 @@ def pharse(line, known, deltrue): pharse(keymap.aliasmap[command[0]] + " " + " ".join(command[1:]), known, True) return else: + eprint('Could not find "' + command[0] + '"') exit(2) @@ -125,6 +131,7 @@ def main(): try: keymap = import_module("pd_key_maps.keymap_" + key_layout) except ModuleNotFoundError: + eprint('Keymap "' + key_layout + '" could not be found') exit(3) main() exit(0) From f3e274231f1b7766329a8e5ac2b356ca55e759a3 Mon Sep 17 00:00:00 2001 From: gitdev-bash <63194733+gitdev-bash@users.noreply.github.com> Date: Sun, 13 Jun 2021 19:44:22 +0200 Subject: [PATCH 3/5] Catch `EOFError` and `KeyboardInterrupt` --- piduck.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/piduck.py b/piduck.py index 47a2139..555e32a 100755 --- a/piduck.py +++ b/piduck.py @@ -99,7 +99,10 @@ def main(): file1.close() else: while True: - line = input() + try: + line = input() + except KeyboardInterrupt: + break if not line: break pharse(line.strip(), [[], []], False) @@ -133,5 +136,8 @@ def main(): except ModuleNotFoundError: eprint('Keymap "' + key_layout + '" could not be found') exit(3) +try: main() - exit(0) +except KeyboardInterrupt: + pass +exit(0) From 5e0cce8778df63bb0dd54e6cb2e57d058a8bf92e Mon Sep 17 00:00:00 2001 From: gitdev-bash <63194733+gitdev-bash@users.noreply.github.com> Date: Sun, 13 Jun 2021 19:46:49 +0200 Subject: [PATCH 4/5] FIX* --- piduck.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/piduck.py b/piduck.py index 555e32a..7ac148a 100755 --- a/piduck.py +++ b/piduck.py @@ -101,7 +101,7 @@ def main(): while True: try: line = input() - except KeyboardInterrupt: + except EOFError: break if not line: break From 2ebf6aaae2612163653d412fd756a5b4b73156f8 Mon Sep 17 00:00:00 2001 From: gitdev-bash <63194733+gitdev-bash@users.noreply.github.com> Date: Sun, 13 Jun 2021 19:56:34 +0200 Subject: [PATCH 5/5] Catch "Repeating the repeat" RecursionError --- piduck.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/piduck.py b/piduck.py index 7ac148a..9d4bf15 100755 --- a/piduck.py +++ b/piduck.py @@ -30,9 +30,13 @@ def pharse(line, known, deltrue): elif command[0] == "REM": return elif command[0] == "REPEAT": - for i in range(int(command[1])): - pharse(last_line.strip(), [[], []], False) - return # todo + try: + for i in range(int(command[1])): + pharse(last_line.strip(), [[], []], False) + return # todo + except RecursionError: + eprint("You can not repeat the repeat") + exit(4) elif command[0] == "DEFAULTCHARDELAY": string_delay = int(command[1]) return