Debug API and tests, add test

This commit is contained in:
Loic Guegan 2019-10-09 08:00:34 -04:00
parent 5ca2e63ea6
commit da336304d5
7 changed files with 111 additions and 55 deletions

View file

@ -134,8 +134,13 @@ def write_theme(tmp_config,theme):
f.close()
def apply(config_file,theme):
def apply(config_file,theme,dry=False):
tmp=extract(config_file)
write_theme(tmp,theme)
shutil.move(tmp,config_file)
f=open(tmp,mode="r")
new_config=f.read()
f.close()
if not(dry):
shutil.move(tmp,config_file)
return(new_config)

View file

@ -1,59 +1,63 @@
#!/usr/bin/python
import config, theme, os, argparse, subprocess,sys
##### Utils Functions #####
def log(msg,title=""):
if len(title)>0:
print("\033[92m{}\033[00m: {}" .format(title,msg))
else:
print(msg)
###########################
##### Apply Theme #####
def apply(args):
if not(args.theme_path):
argsMainParser.print_help()
exit(1)
loaded_theme=theme.load(args.theme_path)
config_file=os.environ["HOME"]+"/.config/i3/config"
if args.config_path:
config_file=args.config_path
config.apply(config_file,loaded_theme)
for meta_key,meta_value in loaded_theme["meta"].items():
log(meta_value,title=meta_key.title())
if args.restart:
subprocess.Popen("i3-msg restart".split(),stdout=subprocess.PIPE, stderr=subprocess.PIPE)
if not(args.dry):
config.apply(config_file,loaded_theme)
for meta_key,meta_value in loaded_theme["meta"].items():
print("\033[92m{}\033[00m: {}" .format(meta_key.title(),meta_value))
if args.restart:
subprocess.Popen("i3-msg restart".split(),stdout=subprocess.PIPE, stderr=subprocess.PIPE)
else:
new_config=config.apply(config_file,loaded_theme,dry=True)
print(new_config)
#######################
##### Aleatory #####
def aleatory(args):
t=theme.random_theme().as_dict()
config.apply(os.environ["HOME"]+"/.config/i3/config",t)
if args.restart:
subprocess.Popen("i3-msg restart".split(),stdout=subprocess.PIPE, stderr=subprocess.PIPE)
subprocess.Popen("i3-msg restart".split(),stdout=subprocess.PIPE, stderr=subprocess.PIPE)
####################
##### Extract Theme #####
def extract(args):
if not(args.config_path):
argsMainParser.print_help()
exit(1)
t=config.extract_theme(args.config_path)
print(t.as_yaml())
#######################
##### Parse Arguments #####
argsMainParser = argparse.ArgumentParser(description='I3 Window Manager Colors Themer.')
argsSubParsers = argsMainParser.add_subparsers()
argsApplyParser = argsSubParsers.add_parser("apply")
argsApplyParser.add_argument('theme_path', type=str, nargs='?',
help='I3 YAML theme path.')
argsApplyParser.add_argument('-r', '--restart' ,action='store_true', help='Restart i3 after applying theme.')
argsApplyParser.add_argument('config_path', type=str, nargs='?',
help='I3 configuration file.')
argsApplyParser.set_defaults(func=apply)
argsExtractParser = argsSubParsers.add_parser("extract")
argsExtractParser.add_argument('config_path', type=str, nargs='?',
help='Extract theme from config file.')
argsExtractParser.set_defaults(func=extract)
argsAleatoryParser = argsSubParsers.add_parser("aleatory")
argsAleatoryParser.add_argument('-r', '--restart' ,action='store_true', help='Restart i3 after applying theme.')
argsAleatoryParser.set_defaults(func=aleatory)
##### Entry Point #####
if __name__ == "__main__":
##### Main Parser
argsMainParser = argparse.ArgumentParser(description='I3 Window Manager Colors Themer.')
argsSubParsers = argsMainParser.add_subparsers()
##### Apply Parser
argsApplyParser = argsSubParsers.add_parser("apply")
argsApplyParser.add_argument('theme_path', type=str, nargs='?',
help='I3 YAML theme path.')
argsApplyParser.add_argument('-r', '--restart' ,action='store_true', help='Restart i3 after applying theme.')
argsApplyParser.add_argument('-d', '--dry' ,action='store_true', help='Do not apply theme, just print config file.')
argsApplyParser.set_defaults(func=apply)
##### Extract Parser
argsExtractParser = argsSubParsers.add_parser("extract")
argsExtractParser.add_argument('config_path', type=str, nargs='?',
help='Extract theme from config file.')
argsExtractParser.set_defaults(func=extract)
##### Aleatory Parser
argsAleatoryParser = argsSubParsers.add_parser("aleatory")
argsAleatoryParser.add_argument('-r', '--restart' ,action='store_true', help='Restart i3 after applying theme.')
argsAleatoryParser.set_defaults(func=aleatory)
##### Launch i3-colors
args = argsMainParser.parse_args()
if len(sys.argv)>1:
args.func(args)