def prepare_args(args, windows=None):
        """
        Prepare args - add support for old interface, e.g:
            - --recursive was "flag" and for now it support True or False value
        :param args:
        :return:
        """
        if windows is None:
            windows = "win" in sys.platform

        if isinstance(args, str):
            args = shlex.split(args, posix=not windows)
        elif isinstance(args, list):
            pass
        elif args is None:
            args = sys.argv[1:]
        else:
            raise Exception("Unknown args type: {}".format(type(args)))

        # --recursive => --recursive=True|False convert
        for position, argument in enumerate(args):
            # Normal way, skip change
            if argument.lower() in ('--recursive=true', '--recursive=false'):
                return args

            elif argument.lower() == '--recursive':
                if len(args) > position + 1 and args[position + 1].lower() in ["true", "false"]:
                    # --recursive true | false
                    return args
                else:
                    # legacy way, convert --recursive to --recursive=true
                    args[position] = "--recursive=True"
                    return args
        return args
Prepare args - add support for old interface, e.g:
            - --recursive was "flag" and for now it support True or False value
        :param args:
        :return: