#!/usr/bin/env python3
# Script to run pkgcheck with a fake config used for more easily working
# with test data.

import os
import sys
import tempfile
import textwrap
from os.path import join as pjoin
from unittest.mock import patch

from pkgcore import const as pkgcore_const

# make sure to use git repo version of pkgcheck
main_dir = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
src_dir = pjoin(main_dir, "src")
sys.path.insert(0, src_dir)
from pkgcheck.scripts import run

with tempfile.TemporaryDirectory(prefix="pkgcheck-test-config-") as tempdir:
    stubrepo = pjoin(pkgcore_const.DATA_PATH, "stubrepo")
    repo_dir = pjoin(main_dir, "testdata", "repos")
    with open(pjoin(tempdir, "repos.conf"), "w") as f:
        f.write(
            textwrap.dedent(f"""\
            [DEFAULT]
            main-repo = stubrepo
            [stubrepo]
            location = {stubrepo}
        """)
        )
        for repo in os.listdir(repo_dir):
            f.write(f"[{repo}]\nlocation = {pjoin(repo_dir, repo)}\n")

    # create make.profile symlink
    profile_path = pjoin(stubrepo, "profiles", "default")
    os.symlink(profile_path, pjoin(tempdir, "make.profile"))

    args = sys.argv[1:]
    try:
        if args[0] == "scan":
            # ignore system/user config settings
            args = ["scan", "--config", "no", "--cache-dir", tempdir] + args[1:]
    except IndexError:
        pass
    args = ["pkgcheck", "--config", tempdir] + args
    with patch("sys.argv", args):
        run("pkgcheck")
