From a815ba81ecf8f92eebfad1db982c046a62a80daa Mon Sep 17 00:00:00 2001 From: Emojigit <55009343+Emojigit@users.noreply.github.com> Date: Wed, 24 Nov 2021 19:58:44 +0800 Subject: [PATCH] Diff system --- main.py | 2 +- module/commands.py | 30 ++++++++++++++++++++++++------ module/dict_diff.py | 7 +++---- 3 files changed, 28 insertions(+), 11 deletions(-) diff --git a/main.py b/main.py index 447706f..0848e70 100644 --- a/main.py +++ b/main.py @@ -5,7 +5,7 @@ from prompt_toolkit.auto_suggest import AutoSuggestFromHistory from prompt_toolkit.completion import WordCompleter, ThreadedCompleter CMDCompleter = ThreadedCompleter( - WordCompleter(['list', 'get', 'set', 'cat', 'rm', 'clear', 'exit','write'], + WordCompleter(['list', 'get', 'set', 'cat', 'rm', 'clear', 'exit','write','diff'], ignore_case=True) ) diff --git a/module/commands.py b/module/commands.py index a68f2de..71edfc1 100644 --- a/module/commands.py +++ b/module/commands.py @@ -1,4 +1,4 @@ -# ['list', 'get', 'set', 'cat', 'rm', 'clear', 'exit','write'] +# ['list', 'get', 'set', 'cat', 'rm', 'clear', 'exit','write','diff'] from prompt_toolkit import prompt from prompt_toolkit.history import FileHistory from prompt_toolkit.auto_suggest import AutoSuggestFromHistory @@ -7,6 +7,7 @@ from . import mtconf, dict_diff from . import command_apis as api import sys, os.path diff_str = dict_diff.diff_str +diff_get = dict_diff.diff #@api.debug @api.no_param @@ -79,12 +80,18 @@ def clear(conf,param): #@api.debug @api.no_param +@api.require_api_arg("orig_conf") @api.require_api_arg("file") -def exit(file,param): - print("Make sure you saved all your jobs. Do you still want to exit?") - if input("(Yes/No) ").lower() != "yes": - print("Cancled.") - return +@api.require_api_arg("conf") +def exit(file,param,orig_conf,conf): + adds,dels = diff_get(orig_conf,conf) + if len(adds) + len(dels) != 0: + print("You have unsaved changes. Do you still want to continue?") + diff_str(orig_conf,conf) + if input("(Yes/No) ").lower() != "yes": + print("Cancled.") + return + file.close() print("Bye") sys.exit() @@ -105,3 +112,14 @@ def write(conf,file,param,orig_conf): print("Writing data into file...") file.write(mtconf.render(conf)) print("Done") + +#@api.debug +@api.no_param +@api.require_api_arg("orig_conf") +@api.require_api_arg("conf") +def diff(param,orig_conf,conf): + adds,dels = diff_get(orig_conf,conf) + if len(adds) + len(dels) != 0: + diff_str(orig_conf,conf) + else: + print("No changes.") diff --git a/module/dict_diff.py b/module/dict_diff.py index 7e36dd4..bea5e32 100644 --- a/module/dict_diff.py +++ b/module/dict_diff.py @@ -4,12 +4,11 @@ def diff(o,n): return dict(os - ns), dict(ns - os) def diff_str(o,n): - print(o,n) dels,adds = diff(o,n) print("-" * 10) - for x in dels: - print("+ " + x + " = " + dels[x]) - print("-" * 10) for x in adds: print("+ " + x + " = " + adds[x]) print("-" * 10) + for x in dels: + print("- " + x + " = " + dels[x]) + print("-" * 10)