Creates a :class:`~argparse.ArgumentParser` instances to work with VSGSuite classes.

        :param kwargs:  List of additional keyworded arguments to be passed into the :class:`~argparse.ArgumentParser`.
        :return:  A :class:`~argparse.ArgumentParser` instance.

def make_parser(cls, **kwargs):
        """
        Creates a :class:`~argparse.ArgumentParser` instances to work with VSGSuite classes.

        :param kwargs:  List of additional keyworded arguments to be passed into the :class:`~argparse.ArgumentParser`.
        :return:  A :class:`~argparse.ArgumentParser` instance.
        """
        # Build a parent parser
        parser = argparse.ArgumentParser(**kwargs)

        # Add multiple sub-commands:
        subparsers = parser.add_subparsers(help='Available commands.', dest='suite_commands')

        # 'Generate' command
        file_parser = subparsers.add_parser('generate', help='Generates solutions and projects based on one or more configuration files.')
        file_parser.add_argument('configuration_filenames', metavar='file', nargs='+', help='The configuration file that contains the [vsgen.*] sections contains the vsgen input.')

        # 'Auto' command
        auto_parser = subparsers.add_parser('auto', help='Automatically generates a solution and project collection from vsgen preset and a single directory.')

        # Build a subparser for each type of project
        suite_parsers = auto_parser.add_subparsers(help='Available Project Types.', dest='suite_type')
        for ek, ev in entrypoints('vsgen.suites').items():
            suite_parser = ev.make_parser(add_help=False)
            suite_parsers.add_parser(ek, help='Automatically generates a solution and "{}" project from a single directory.'.format(ek), parents=[suite_parser])
        return parser