# HG changeset patch # User Eugen Sawin # Date 1285811554 -7200 # Node ID 918f055663658d229c51fe106d83c0f4852b2f85 # Parent bc0510f7d7f8c023ae66de939b879df2df3d92e1 Init and config file handling added. diff -r bc0510f7d7f8 -r 918f05566365 cronrec.py --- a/cronrec.py Thu Sep 30 02:14:24 2010 +0200 +++ b/cronrec.py Thu Sep 30 03:52:34 2010 +0200 @@ -5,25 +5,74 @@ Author: Eugen Sawin (sawine@me73.com) """ +import os import argparse +WD = "working_path" +CONFIG = {WD: str} +CONFIG_SEP = "=" + +config = {} + +try: # Windows + from win32com.shell import shellcon, shell + HOMEDIR = shell.SHGetFolderPath(0, shellcon.CSIDL_LOCAL_APPDATA, 0, 0) +except ImportError: # Linux + HOMEDIR = os.path.expanduser("~") + +CONFIG_FILE = "%s/.cronrecrc" % HOMEDIR + +def read_config(): + config = {} + with open(CONFIG_FILE, "r") as config_stream: + config_lines = [l.split(CONFIG_SEP) for l in config_stream.readlines() + if CONFIG_SEP in l] + for key, value in config_lines: + key = key.strip().lower() + value = value.strip() + if key in CONFIG: + config[key] = CONFIG[key](value) + return config + +def write_config(config): + with open(CONFIG_FILE, "w") as config_input: + config_input.write("\n".join([CONFIG_SEP.join((k, v)) + for k, v in config.iteritems() if k in CONFIG])) + +def init(args): + last_wd = None + if WD in config: + last_wd = config[WD] + config[WD] = args.dbpath + write_config(config) + if last_wd != config[WD]: + print "Changed working directory from %s to %s" % (last_wd, config[WD]) + elif not last_wd: + print "Set new working directory to %s" % (config[WD]) + else: + print "Working directory remains at %s" % config[WD] + def begin(args): - print "begins" + print "begins" def end(args): - print "ends" + print "ends" if __name__ == "__main__": - parser = argparse.ArgumentParser(description="Records time.") - subs = parser.add_subparsers() + config = read_config() + parser = argparse.ArgumentParser(description="Records time.") + subs = parser.add_subparsers() + sub_begin = subs.add_parser("init") + sub_begin.add_argument("dbpath") + sub_begin.set_defaults(func=init) - sub_begin = subs.add_parser("begin") - sub_begin.add_argument("label") - sub_begin.set_defaults(func=begin) + sub_begin = subs.add_parser("begin") + sub_begin.add_argument("label") + sub_begin.set_defaults(func=begin) - sub_end = subs.add_parser("end") - sub_end.add_argument("label") - sub_end.set_defaults(func=end) + sub_end = subs.add_parser("end") + sub_end.add_argument("label") + sub_end.set_defaults(func=end) - args = parser.parse_args() - args.func(args) + args = parser.parse_args() + args.func(args)