#!/usr/bin/env python3
# pylint: disable=invalid-name
"""Manage my Git infrastructure."""

import argparse
import os
import os.path
import sys

sys.path.append(os.path.expanduser("~/Documents/bin"))

# import rcfiles.git  # noqa: E402 pylint: disable=wrong-import-position
# import rcfiles.github  # noqa: E402 pylint: disable=wrong-import-position
# import rcfiles.gitlab  # noqa: E402 pylint: disable=wrong-import-position


def create_repo(args):
    """Create a new repository."""
    print(args)


def mirror_repo(args):
    """Mirror a GitLab repository to GitHub."""
    print(args)


def archive_repo(args):
    """Archive a repository."""
    print(args)


def main():
    """The main function."""
    parser = argparse.ArgumentParser(description=__doc__)
    subparsers = parser.add_subparsers(
        title="Commands", required=True, dest="command"
    )

    parser_create = subparsers.add_parser(
        "new", help="Create a new repository."
    )
    parser_create.set_defaults(func=create_repo)
    parser_create.add_argument(
        "name", help="Name of the repository.", nargs="?"
    )
    parser_create.add_argument(
        "-m", "--mirror", help="Setup a mirror in GitHub.", action="store_true"
    )
    parser_create.add_argument(
        "--github",
        help="Create the repository in GitHub.",
        action="store_true",
    )

    parser_mirror = subparsers.add_parser(
        "mirror", help="Mirror a GitLab repository to GitHub."
    )
    parser_mirror.set_defaults(func=mirror_repo)
    parser_mirror.add_argument(
        "name", help="Name of the GitLab repository.", nargs="?"
    )

    parser_archive = subparsers.add_parser(
        "archive", help="Archive a repository."
    )
    parser_archive.set_defaults(func=archive_repo)
    parser_archive.add_argument(
        "name", help="Name of the repository.", nargs="?"
    )
    parser_archive.add_argument(
        "--github", help="The repository is in GitHub.", action="store_true"
    )

    args = parser.parse_args()
    args.func(args)


if __name__ == "__main__":
    main()
