#!/usr/bin/env python

# This is a short preprocessor for python.  Use mhpath to find the
# appropriate message, move that message to message.mapil, and then
# run mapil on message.mapil, moving the output to message.  If it is
# called as 'mhunmapil', move message.mapil back to message.

import os, sys, string


def Rename(source, dest):
    try: os.rename(source, dest)
    except os.error:
	print 'Unable to rename '+source+' to '+dest
	sys.exit(3)


if len(sys.argv) < 2:
    print 'Syntax:  mhmapil [+folder] message [mapil options]'
    print '         mhunmapil [+folder] message'
    sys.exit(4)

try:
    if len(sys.argv) >= 3 and sys.argv[1][0] == '+':
	f = os.popen('mhpath '+sys.argv[1]+' '+sys.argv[2],'r')
	i = 3
    else:
	f = os.popen('mhpath '+sys.argv[1],'r')
	i = 2
except os.error:
    print 'Error running mhpath'
    sys.exit(1)

filename = string.strip(f.read())
f.close()

if not filename:
    print 'No file name given by mhpath'
    sys.exit(2)

if sys.argv[0][-len('mhunmapil'):] == 'mhunmapil':
    source = filename+'.mapil'
    dest = filename
else:
    source = filename
    dest = filename+'.mapil'

try: os.stat(source)
except os.error:
    print 'Cannot find file '+source
    sys.exit(4)

Rename(source, dest)

if sys.argv[0][-len('mhunmapil'):] == 'mhunmapil':
    sys.exit(0)

os.system(string.join(['mapil'] + sys.argv[i:] + [dest, source]))

# Check to see if mapil produced an output file.
try: os.stat(source)
except os.error:
    Rename(dest, source)
