mtconf_manage/module/commands.py
2021-11-24 19:48:29 +08:00

108 lines
3.1 KiB
Python

# ['list', 'get', 'set', 'cat', 'rm', 'clear', 'exit','write']
from prompt_toolkit import prompt
from prompt_toolkit.history import FileHistory
from prompt_toolkit.auto_suggest import AutoSuggestFromHistory
from prompt_toolkit.completion import WordCompleter
from . import mtconf, dict_diff
from . import command_apis as api
import sys, os.path
diff_str = dict_diff.diff_str
#@api.debug
@api.no_param
@api.require_api_arg("conf")
def list(conf,param):
print("-- List of entries start --")
ran = False
for x in conf:
print((", " if ran else "") + x, end="")
ran = True
print()
print("-- List of entries end, totally " + str(len(conf)) + " entries --")
#@api.debug
@api.require_param
@api.require_api_arg("conf")
def get(conf,param):
if param[1] in conf:
print(conf[param[1]])
else:
print("Entry \"{}\" does not exists.".format(param[1]))
#@api.debug
@api.require_param
@api.require_api_arg("conf")
def set(conf,param):
if param[1].__contains__(" "):
print("Entry key cannot contain spaces!")
else:
if param[1] in conf:
print("Current value of \"{}\": {}".format(param[1],str(conf[param[1]])))
else:
print("Creating new entry \"{}\"".format(param[1]))
user_input = prompt('Enter the value: ',
history = FileHistory('value_history.txt'),
auto_suggest = AutoSuggestFromHistory(),
)
conf[param[1]] = user_input
#@api.debug
@api.no_param
@api.require_api_arg("conf")
def cat(conf,param):
print(mtconf.render(conf))
#@api.debug
@api.require_param
@api.require_api_arg("conf")
def rm(conf,param):
if param[1] in conf:
print("You are going to delele the entry \"{}\".".format(param[1]))
print("Do you really want to continue?")
if input("(Yes/No) ").lower() == "yes":
conf.pop(param[1])
else:
print("Cancled.")
else:
print("Entry does not exists!")
#@api.debug
@api.no_param
@api.require_api_arg("conf")
def clear(conf,param):
print("You are going to delele all contents of the mt.conf.")
print("This is IRREVERSABLE. Do you want to continue?")
if input("(Yes/No) ").lower() == "yes":
conf.clear()
else:
print("Cancled.")
#@api.debug
@api.no_param
@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
file.close()
print("Bye")
sys.exit()
#@api.debug
@api.require_api_arg("orig_conf")
@api.require_api_arg("file")
@api.require_api_arg("conf")
def write(conf,file,param,orig_conf):
if not(len(param) == 2) or (param[1].lower() != "nobackup"):
print("Creating backup file...")
file_dir,file_name = os.path.split(file.name)
back_dir = os.path.join(file_dir,"~" + file_name)
backup_file = open(back_dir,"w")
backup_file.write(mtconf.render(orig_conf))
backup_file.close()
print("Backup file at {}".format(back_dir))
print("Writing data into file...")
file.write(mtconf.render(conf))
print("Done")