import sys
import os
import shutil
import logging

logging.basicConfig(
    format='[%(asctime)s] %(levelname)s: %(message)s',
    level=logging.INFO,
    datefmt='%m/%d/%Y %H:%M:%S'
)

logger = logging.getLogger(__name__)


TEMPLATES = [
    '_confirm_delete.html',
    '_create_form.html',
    '_detail.html',
    '_form.html',
    '_list.html',
]


def main():
    app = sys.argv[1]
    name = sys.argv[2]
    destination = f'src/{app}/templates/{app}/'
    sourcedir = 'templates'
    copy_files_to_folder(sourcedir, TEMPLATES, destination, name)
    for file in TEMPLATES:
        replace_text_in_file(
            f'{destination}{name}{file}',
            'object_url',
            f'{app}:{name}'
        )
        replace_text_in_file(
            f'{destination}{name}{file}',
            'object_name',
            name.capitalize()
        )
        replace_text_in_file(f'{destination}{name}{file}', 'object', name)


def copy_files_to_folder(sourcedir, files, destination, prefix):
    for f in files:
        logger.info(f'Copying "{sourcedir}/{f}" to "{destination}{prefix}{f}"')
        shutil.copy(f'{sourcedir}/{f}', f'{destination}{prefix}{f}')


def replace_text_in_file(file, search_txt, replace_txt):
    logger.info(
        f'Searching file for "{search_txt}" and replacing with "{replace_txt}"'
    )
    with open(file, 'r') as f:
        data = f.read()
        data = data.replace(search_txt, replace_txt)

    with open(file, 'w') as f:
        f.write(data)


if __name__ == '__main__':
    main()
