#!/usr/bin/python2
app_svnid = '$HeadURL$ $LastChangedRevision$'
import sys
import subprocess
sys.path.append(subprocess.Popen(["ade-config", "ade_lib_prefix"], stdout=subprocess.PIPE).communicate()[0][:-1] + '/include')
import ade
import os
import time			#  to allow me to test interrupt routines

adepyf_defined_errors = {
    "adepyf_err_misc":{"fmt":"%s"},
}

def adepyf(errstack):
    ###########################################################################
    #
    #  Set ADE options
    #
    ###########################################################################

    #  Register application-specific errors
    ade.ade_err_registerdefderrs(adepyf_defined_errors)

    ##########################################################################
    #
    #  Process options
    #
    ##########################################################################

    #  Defaults for options
   
    #  Register options
    ade.ade_err_debug(errstack, 10, "adepyf: registering options ...")
    rc = ade.ade_opt_register(errstack, None, None, globals(), "adepyf_opt_handler_%s")
    if rc != ade.ade_err_ok:
        return rc

    #  Register handler functions
    ade.ade_err_debug(errstack, 10, "adepyf: registering message handlers ...")
    rc = ade.ade_msg_register(errstack, adepyf_usage, adepyf_version, adepyf_listpaths)
    if rc != ade.ade_err_ok:
        return rc

    #  Process options
    ade.ade_err_debug(errstack, 10, "adepyf: processing options ...")
    rc = ade.ade_opt_process(errstack)
    if rc != ade.ade_err_ok:
        return rc

    ##########################################################################
    #
    #  Process arguments
    #
    ##########################################################################

    if len(sys.argv) != 1:
        ade.ade_msg_usage(errstack)
    pythoncode = sys.argv[0]

    ade.ade_err_debug(errstack, 10, "main: pythoncode=[%s]" % (pythoncode))
    try:
        exec pythoncode
    except SyntaxError:
        e = sys.exc_info()[1]
        ade.ade_err_error(errstack, "adepyf_err_misc", "code failed to compile (" + str(e) + ")")
        return ade.ade_err_fail
    except:
        e = sys.exc_info()[1]
        ade.ade_err_error(errstack, "adepyf_err_misc", "code failed (" + str(e) + ")")
        return ade.ade_err_fail

    return ade.ade_err_ok

def adepyf_version(errstack):
    return ade.ade_smf_extractversionfromsvnstring(errstack, app_svnid)

def adepyf_listpaths(errstack):
    return (ade.ade_err_ok, None)

def adepyf_usage(errstack, passno):
    if passno == 1:
        return(ade.ade_err_ok, "<code>")
    elif passno == 2:
        return(ade.ade_err_ok, None)
    else:
        ade.ade_err_internal(errstack, "adepyf_usage: %d: bad passnumber" % (passno))

ade.ade_gep_main(adepyf)
