cronrec.py
author Eugen Sawin <sawine@me73.com>
Thu, 30 Sep 2010 03:52:34 +0200
changeset 1 918f05566365
parent 0 bc0510f7d7f8
child 2 d1c9dec8b059
permissions -rwxr-xr-x
Init and config file handling added.
     1 #!/usr/bin/python
     2 
     3 """
     4 A time recording tool.
     5 Author: Eugen Sawin (sawine@me73.com)
     6 """
     7 
     8 import os
     9 import argparse
    10 
    11 WD = "working_path"
    12 CONFIG = {WD: str}
    13 CONFIG_SEP = "="
    14 
    15 config = {}
    16 
    17 try: # Windows
    18 	from win32com.shell import shellcon, shell
    19 	HOMEDIR	= shell.SHGetFolderPath(0, shellcon.CSIDL_LOCAL_APPDATA, 0, 0)
    20 except ImportError: # Linux
    21 	HOMEDIR = os.path.expanduser("~")
    22 
    23 CONFIG_FILE = "%s/.cronrecrc" % HOMEDIR
    24 
    25 def read_config():
    26 	config = {}
    27 	with open(CONFIG_FILE, "r") as config_stream:
    28 		config_lines = [l.split(CONFIG_SEP) for l in config_stream.readlines() 
    29 						if CONFIG_SEP in l]
    30 		for key, value in config_lines:
    31 			key = key.strip().lower()
    32 			value = value.strip()
    33 			if key in CONFIG:
    34 				config[key] = CONFIG[key](value)
    35 	return config
    36 
    37 def write_config(config):
    38 	with open(CONFIG_FILE, "w") as config_input:
    39 		config_input.write("\n".join([CONFIG_SEP.join((k, v)) 
    40 							for k, v in config.iteritems() if k in CONFIG]))
    41 
    42 def init(args):
    43 	last_wd = None
    44 	if WD in config:
    45 		last_wd = config[WD]
    46 	config[WD] = args.dbpath
    47 	write_config(config)
    48 	if last_wd != config[WD]:
    49 		print "Changed working directory from %s to %s" % (last_wd, config[WD])
    50 	elif not last_wd:
    51 		print "Set new working directory to %s" % (config[WD])
    52 	else:
    53 		print "Working directory remains at %s" % config[WD]
    54 
    55 def begin(args):
    56 	print "begins"
    57     
    58 def end(args):
    59 	print "ends"
    60     
    61 if __name__ == "__main__":
    62 	config = read_config()
    63 	parser = argparse.ArgumentParser(description="Records time.")
    64 	subs = parser.add_subparsers()
    65 	sub_begin = subs.add_parser("init")
    66 	sub_begin.add_argument("dbpath")
    67 	sub_begin.set_defaults(func=init)
    68 
    69 	sub_begin = subs.add_parser("begin")
    70 	sub_begin.add_argument("label")
    71 	sub_begin.set_defaults(func=begin)
    72 
    73 	sub_end = subs.add_parser("end")
    74 	sub_end.add_argument("label")
    75 	sub_end.set_defaults(func=end)
    76 
    77 	args = parser.parse_args()
    78 	args.func(args)