Init and config file handling added.
authorEugen Sawin <sawine@me73.com>
Thu, 30 Sep 2010 03:52:34 +0200
changeset 1918f05566365
parent 0 bc0510f7d7f8
child 2 d1c9dec8b059
Init and config file handling added.
cronrec.py
     1.1 --- a/cronrec.py	Thu Sep 30 02:14:24 2010 +0200
     1.2 +++ b/cronrec.py	Thu Sep 30 03:52:34 2010 +0200
     1.3 @@ -5,25 +5,74 @@
     1.4  Author: Eugen Sawin (sawine@me73.com)
     1.5  """
     1.6  
     1.7 +import os
     1.8  import argparse
     1.9  
    1.10 +WD = "working_path"
    1.11 +CONFIG = {WD: str}
    1.12 +CONFIG_SEP = "="
    1.13 +
    1.14 +config = {}
    1.15 +
    1.16 +try: # Windows
    1.17 +	from win32com.shell import shellcon, shell
    1.18 +	HOMEDIR	= shell.SHGetFolderPath(0, shellcon.CSIDL_LOCAL_APPDATA, 0, 0)
    1.19 +except ImportError: # Linux
    1.20 +	HOMEDIR = os.path.expanduser("~")
    1.21 +
    1.22 +CONFIG_FILE = "%s/.cronrecrc" % HOMEDIR
    1.23 +
    1.24 +def read_config():
    1.25 +	config = {}
    1.26 +	with open(CONFIG_FILE, "r") as config_stream:
    1.27 +		config_lines = [l.split(CONFIG_SEP) for l in config_stream.readlines() 
    1.28 +						if CONFIG_SEP in l]
    1.29 +		for key, value in config_lines:
    1.30 +			key = key.strip().lower()
    1.31 +			value = value.strip()
    1.32 +			if key in CONFIG:
    1.33 +				config[key] = CONFIG[key](value)
    1.34 +	return config
    1.35 +
    1.36 +def write_config(config):
    1.37 +	with open(CONFIG_FILE, "w") as config_input:
    1.38 +		config_input.write("\n".join([CONFIG_SEP.join((k, v)) 
    1.39 +							for k, v in config.iteritems() if k in CONFIG]))
    1.40 +
    1.41 +def init(args):
    1.42 +	last_wd = None
    1.43 +	if WD in config:
    1.44 +		last_wd = config[WD]
    1.45 +	config[WD] = args.dbpath
    1.46 +	write_config(config)
    1.47 +	if last_wd != config[WD]:
    1.48 +		print "Changed working directory from %s to %s" % (last_wd, config[WD])
    1.49 +	elif not last_wd:
    1.50 +		print "Set new working directory to %s" % (config[WD])
    1.51 +	else:
    1.52 +		print "Working directory remains at %s" % config[WD]
    1.53 +
    1.54  def begin(args):
    1.55 -    print "begins"
    1.56 +	print "begins"
    1.57      
    1.58  def end(args):
    1.59 -    print "ends"
    1.60 +	print "ends"
    1.61      
    1.62  if __name__ == "__main__":
    1.63 -    parser = argparse.ArgumentParser(description="Records time.")
    1.64 -    subs = parser.add_subparsers()
    1.65 +	config = read_config()
    1.66 +	parser = argparse.ArgumentParser(description="Records time.")
    1.67 +	subs = parser.add_subparsers()
    1.68 +	sub_begin = subs.add_parser("init")
    1.69 +	sub_begin.add_argument("dbpath")
    1.70 +	sub_begin.set_defaults(func=init)
    1.71  
    1.72 -    sub_begin = subs.add_parser("begin")
    1.73 -    sub_begin.add_argument("label")
    1.74 -    sub_begin.set_defaults(func=begin)
    1.75 +	sub_begin = subs.add_parser("begin")
    1.76 +	sub_begin.add_argument("label")
    1.77 +	sub_begin.set_defaults(func=begin)
    1.78  
    1.79 -    sub_end = subs.add_parser("end")
    1.80 -    sub_end.add_argument("label")
    1.81 -    sub_end.set_defaults(func=end)
    1.82 +	sub_end = subs.add_parser("end")
    1.83 +	sub_end.add_argument("label")
    1.84 +	sub_end.set_defaults(func=end)
    1.85  
    1.86 -    args = parser.parse_args()
    1.87 -    args.func(args)
    1.88 +	args = parser.parse_args()
    1.89 +	args.func(args)