#!/usr/bin/env python
import argparse
import os
import rospkg.stack
import sys

parser = argparse.ArgumentParser(description='Parse a stack.xml')
parser.add_argument('stack_xml', help='The path to the stack.xml to parse')
parser.add_argument('key', help='The key to extract.')
args = parser.parse_args()

stack_filename = args.stack_xml
key = args.key

try:
    version = rospkg.stack.parse_stack_file('stack.xml').version
except IOError:
    print >>sys.stderr, '%(stack_filename)s does not exist!' % locals()
    sys.exit(1)
except rospkg.stack.InvalidStack, e:
    print >> sys.stderr, 'Could not parse %(stack_filename)s:\n%s' % e
    sys.exit(1)

try:
    print getattr(stack, key)
except AttributeError as e:
    available_keys = '\n\t'.join(sorted(stack.__dict__.keys()))
    print >> sys.stderr, '%(key)s can not be found in %(stack_filename)s\nAvailable keys are:\n\t%(available_keys)s' % locals()
