MAILPLATEDIR = os.path.expanduser(MAILPLATEDIR)
# defaults
-config = { 'default_template' : ''
+config = { 'default_template' : 'default'
, 'template_path' : TEMPLATEDIR
}
helpers = { 'get_quote' : 'fortune -s' }
f = file(CONFFILE, 'w')
f.write('# mailplate configuration\n[%s]\n' % SECTION_GENERAL)
for kvpair in config.iteritems():
- if len(kvpair[1]) > 0:
+ if kvpair[1] and len(kvpair[1]) > 0:
f.write('%s = %s\n' % kvpair)
if len(helpers) > 0:
except ConfigParser.NoSectionError, ConfigParser.MissingSectionHeaderError:
err("E: no section '%s' in %s" % (SECTION_GENERAL, CONFFILE))
sys.exit(posix.EX_CONFIG)
+ except ConfigParser.NoOptionError:
+ continue
except ConfigParser.DuplicateSectionError, ConfigParser.ParseError:
err('E: parse error on %s' % CONFFILE)
sys.exit(posix.EX_CONFIG)
helpers.update(parser.items(SECTION_HELPERS))
TPATH = os.path.expanduser(config['template_path'])
+if not os.path.isdir(TPATH):
+ os.mkdir(TPATH, 0700)
+
+default_templname = config['default_template']
+if default_templname is not None:
+ default_templpath = os.path.join(TPATH, default_templname)
+ if not os.path.isfile(default_templpath):
+ f = file(default_templpath, 'w')
+ f.write('@KEEP_STD_HEADERS\n\n@KEEP_BODY\n')
+ f.close()
###
### COMMAND LINE PARSING
# read message into buffer, or preinitialise the buffer if --new is given
if options.new:
- rawmsg = '\n'.join((header + ': ' for k in STD_HEADERS)) + '\n'
+ rawmsg = '\n'.join((header + ': ' for header in STD_HEADERS)) + '\n'
else:
rawmsg = ''.join(inf.readlines())
if options.auto:
- best_score = (0, config['default_template'], {})
+ best_score = (0, default_templname, {})
for tf in os.listdir(TPATH):
tp = os.path.join(TPATH, tf)
if not os.path.isfile(tp) or not os.access(tp, os.R_OK): continue
best_score = (score, tf, vars)
templname = best_score[1]
+
+ if templname is None:
+ err('E: could not determine a template to use and no default is set')
+ sys.exit(posix.EX_CONFIG)
+
print >>sys.stderr, \
'I: Chose profile %s with score %d.' % (templname, best_score[0])
vars = best_score[2]
# now read in the template
-templ = file(os.path.join(TPATH, templname), 'r', 1)
+templpath = os.path.join(TPATH, templname)
+
+if not os.path.isfile(templpath):
+ err('E: not a template: ' + templpath)
+ sys.exit(posix.EX_OSFILE)
+
+elif not os.access(templpath, os.R_OK):
+ err('E: template ' + templpath + ' could not be read.')
+ sys.exit(posix.EX_OSFILE)
+
+templ = file(templpath, 'r', 1)
+
for line in templ:
if not options.auto and line[0] == REGEXPCHAR:
# obtain variables from the regexps