#!/usr/bin/python2.3

import sys
import os
from optparse import OptionParser

def popup(msg):
    global options
    if options.popup:
        try:
            import gtk
        except ImportError:
            print "Couldn't import gtk to create popup dialog.  Is python2.3-gtk installed?"
        else:
            dialog = gtk.MessageDialog(None,
                            gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,
                            gtk.MESSAGE_INFO, gtk.BUTTONS_OK, msg)
            dialog.run()
            dialog.destroy()

parser = OptionParser(usage='usage: %prog [options] -- command [arg1] [arg2] ... ')
parser.add_option("-p", "--popup", action="store_true", default=False, help="Pop up dialog when command exits")
parser.add_option("-b", "--beep", action="store_true", default=False, help="Beep PC Speaker when command exits")
(options, args) = parser.parse_args()
if len(args) == 0:
    parser.error("You must specify a command to be run")

cmd = " ".join(args)
status = os.system(cmd)
retval, signal = status >> 8, status & 0xFF

msg = popmsg = ''
if signal:
    msg = popmsg = '%s exited due to signal %d' % (cmd, signal)
else:
    if retval == 0:
        msg = ''
        popmsg = "'%s' completed." % cmd
    else:
        msg = popmsg = "'%s' exited with value %d" % (cmd, retval)

if msg:
    print msg

if options.beep:
    status = os.system("beep -r 3 -f 500")
    retval, signal = status >> 8, status & 0xFF
    if retval:
        print "Unable to spawn 'beep'.  Is it installed?"

if popmsg and options.popup:
    popup(popmsg)
