#!/usr/bin/python3 # -*- coding: utf-8 -*- app_svnid = '$HeadURL$ $LastChangedRevision$' import sys import subprocess # python3's subprocess.Popen() returns a byte sequence, so to append the string '/include' we need to convert # one to the other. sys.path.append() expects a list of strings, not byte sequences. Therefore it makes most # sense to convert subprocess.Popen()'s output to a string or to get it to return a string directly. The latter # can be done by use of 'universal_newlines=True' sys.path.append(subprocess.Popen(["ade-config", "ade_share_prefix"], stdout=subprocess.PIPE, universal_newlines=True).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_help, 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_bad(errstack) namespace = { 'errstack':errstack } pythoncode = 'def adepyf_code_wrapper():\n %s\nrc=adepyf_code_wrapper()' % (sys.argv[0]) try: exec(pythoncode, namespace) except: e = sys.exc_info()[1] ade.ade_err_error(errstack, "adepyf_err_misc", "code failed to run; the error was: " + str(e)) return ade.ade_err_fail rc = namespace['rc'] if rc == ade.ade_err_ok: return rc elif rc == ade.ade_err_fail: ade.ade_err_error(errstack, "adepyf_err_misc", "code ran but returned failure") return rc else: ade.ade_err_error(errstack, "adepyf_err_misc", "code ran but returned a non-compliant return code; the return code was: %s" % (rc)) return ade.ade_err_fail 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_help(errstack, passno): if passno == 1: return(ade.ade_err_ok, "") elif passno == 2: return(ade.ade_err_ok, None) else: ade.ade_err_internal(errstack, "adepyf_usage_help: %d: bad passnumber" % (passno)) ade.ade_gep_main(adepyf)