def move_argument_before_action(self, argument): for arg in self.args: if argument in arg: # if declaration with '=' sign (e.g. --env-id=1) if "=" in arg: index_of_env = self.args.index(arg) env = self.args.pop(index_of_env) self.args.append(env) else: try: index_of_env = self.args.index(arg) self.args.pop(index_of_env) env = self.args.pop(index_of_env) self.args.append(arg) self.args.append(env) except IndexError: raise ParserException( 'Corresponding value must follow "{0}" flag'. format(arg)) break
def move_argument_before_action(self, flag, has_value=True): """We need to move general argument before action, we use them not directly in action but in APIClient. """ for arg in self.args: if flag in arg: if "=" in arg or not has_value: index_of_flag = self.args.index(arg) flag = self.args.pop(index_of_flag) self.args.insert(1, flag) else: try: index_of_flag = self.args.index(arg) flag = self.args.pop(index_of_flag) value = self.args.pop(index_of_flag) self.args.insert(1, value) self.args.insert(1, flag) except IndexError: raise ParserException( 'Corresponding value must follow "{0}" flag'. format(arg)) break