def process_args(self, supported): """ Given a list of supported arguments, consutructs an argument list that could be passed on to the call_app function. """ args = {} args.update(self.defaults) try: args.update(self.settings.args.to_dict()) except AttributeError: pass params = [] for option in supported: if isinstance(option, tuple): (descriptive, short) = option else: descriptive = short = option options = [descriptive.rstrip("="), short.rstrip("=")] match = first_match(lambda arg: arg in options, args) if match: val = args[match] param = "%s%s" % (self.option_prefix(descriptive), descriptive) if descriptive.endswith("="): param += val val = None params.append(param) if val: params.append(val) return params