import click
import subprocess
import os

from app.helper import (
    clone,
    clone_common,
    clone_etcd_wrapper,
    GitOperation,
    PipenvOperation,
    FileOperation,
)


@click.group()
def file_scan():
    pass


@file_scan.command("setup")
@click.option("--path", required=True)
@click.option("--base_dir", required=True)
@click.option("--file_prefix", required=True)
@click.option("--etcd_url", required=True)
@click.option("--etcd_password", required=True)
def setup(path, base_dir, file_prefix, etcd_url, etcd_password):
    os.chdir(path)

    repo_name = "ucloud-file-scan"

    op_result = GitOperation.clone(
        f"https://code.ungleich.ch/ungleich-public/{repo_name}.git"
    )

    content = (
        f"BASE_DIR={base_dir}\n"
        f"FILE_PREFIX={file_prefix}\n"
        f"ETCD_URL={etcd_url}\n"
        f"ETCD_PASSWORD={etcd_password}\n"
    )

    op_result.add(
        FileOperation.write, path=os.path.join(repo_name, ".env"), content=content
    )

    op_result.add(
        GitOperation.clone,
        path=repo_name,
        url="https://code.ungleich.ch/ahmedbilal/etcd3_wrapper",
    )

    op_result.add(PipenvOperation.install, path=repo_name)

    # Write Crontab entry
    with open("/etc/crontabs/root", "a") as crontab:
        crontab.write(
            f"*/5\t*\t*\t*\t*\tcd {os.path.join(os.getcwd(), repo_name)} && pipenv run python main.py"
        )