diff options
| -rwxr-xr-x | scripts/template_verifier.py | 48 | 
1 files changed, 30 insertions, 18 deletions
| diff --git a/scripts/template_verifier.py b/scripts/template_verifier.py index 980ceb8df8..67728d73d8 100755 --- a/scripts/template_verifier.py +++ b/scripts/template_verifier.py @@ -23,35 +23,38 @@ import sys  import urllib  from indra.ipc import compatibility +from indra.ipc import tokenstream  from indra.ipc import llmessage -def die(msg): -    print >>sys.stderr, msg -    sys.exit(1) - -MESSAGE_TEMPLATE = 'message_template.msg' - -PRODUCTION_ACCEPTABLE = (compatibility.Same, compatibility.Newer) -DEVELOPMENT_ACCEPTABLE = ( -    compatibility.Same, compatibility.Newer, -    compatibility.Older, compatibility.Mixed)	 -  def getstatusall(command):      """ Like commands.getstatusoutput, but returns stdout and       stderr separately(to get around "killed by signal 15" getting       included as part of the file).  Also, works on Windows."""      (input, out, err) = os.popen3(command, 't') -    input.close() # send no input to the command +    status = input.close() # send no input to the command      output = out.read()      error = err.read() -    out.close() -    status = err.close() # the status comes from the *last* pipe you close +    status = out.close() +    status = err.close() # the status comes from the *last* pipe that is closed      return status, output, error  def getstatusoutput(command):      status, output, error = getstatusall(command)      return status, output + +def die(msg): +    print >>sys.stderr, msg +    sys.exit(1) + +MESSAGE_TEMPLATE = 'message_template.msg' + +PRODUCTION_ACCEPTABLE = (compatibility.Same, compatibility.Newer) +DEVELOPMENT_ACCEPTABLE = ( +    compatibility.Same, compatibility.Newer, +    compatibility.Older, compatibility.Mixed)	 + +  def compare(base, current, mode):      """Compare the current template against the base template using the given      'mode' strictness: @@ -65,9 +68,18 @@ def compare(base, current, mode):      Returns a tuple of (bool, Compatibility)      Return True if they are compatible in this mode, False if not.      """ -    base = llmessage.parseTemplateString(base) -    current = llmessage.parseTemplateString(current) - +    try: +        base = llmessage.parseTemplateString(base) +    except tokenstream.ParseError, e: +        print "Error parsing master message template -- this might be a network problem, try again" +        raise e + +    try: +        current = llmessage.parseTemplateString(current) +    except tokenstream.ParseError, e: +        print "Error parsing local message template" +        raise e +          compat = current.compatibleWithBase(base)      if mode == 'production':          acceptable = PRODUCTION_ACCEPTABLE @@ -126,7 +138,7 @@ http://wiki.secondlife.com/wiki/Template_verifier.py      # fetch the master from the url (default or supplied)      if master is None: -        master = urllib.urlopen(options.master_url).read() +        master = ''.join(urllib.urlopen(options.master_url).readlines())      # fetch the template for this build      if current is None: | 
