#!/usr/bin/env python
# -*- coding: utf-8 -*-

import os
import importlib
import tempfile
import shutil
import subprocess
import sys

CWD = os.getcwd()
TMP = tempfile.gettempdir()
CONFIG = {
    "full_name": "Allan Almazan",
    "email": "allan@useanvil.com",
    "github_username": "aalmazan",
    "github_repo": "python-anvil",
    "default_branch": "master",
    "project_name": "python_anvil",
    "package_name": "python_anvil",
    "project_short_description": "Anvil API",
    "python_major_version": 3,
    "python_minor_version": 6,
}


def install(package='cookiecutter'):
    try:
        importlib.import_module(package)
    except ImportError:
        print("Installing cookiecutter")
        subprocess.check_call([sys.executable, '-m', 'pip', 'install', package])


def run():
    print("Generating project")

    from cookiecutter.main import cookiecutter

    os.chdir(TMP)
    cookiecutter(
        'https://github.com/jacebrowning/template-python.git',
        no_input=True,
        overwrite_if_exists=True,
        extra_context=CONFIG,
    )


def copy():
    for filename in [
        '.appveyor.yml',
        '.coveragerc',
        '.gitattributes',
        '.gitignore',
        '.isort.cfg',
        '.mypy.ini',
        '.pydocstyle.ini',
        '.pylint.ini',
        '.scrutinizer.yml',
        '.travis.yml',
        '.verchew.ini',
        'CONTRIBUTING.md',
        'Makefile',
        os.path.join('bin', 'checksum'),
        os.path.join('bin', 'open'),
        os.path.join('bin', 'update'),
        os.path.join('bin', 'verchew'),
        'pytest.ini',
        'scent.py',
    ]:
        src = os.path.join(TMP, CONFIG['project_name'], filename)
        dst = os.path.join(CWD, filename)
        print("Updating " + filename)
        shutil.copy(src, dst)


if __name__ == '__main__':
    install()
    run()
    copy()
