#!/usr/bin/env python2.7
import argparse
import os
import shutil
import subprocess

TEMPLATE = 'project-template'
FILES_TO_SED = ['build.gradle',
                'src/main/java/de/tudresden/inf/st/eraser/projectName/Main.java',
                'src/test/java/de/tudresden/inf/st/eraser/projectName/ATest.java']
SRC_PARENT_DIRS_TO_MOVE = ['src/main/java/de/tudresden/inf/st/eraser/',
                           'src/test/java/de/tudresden/inf/st/eraser/']


def main(args):
    projectName = args.projectName.replace('/', '').replace('-', '_')

    # copy
    shutil.copytree(TEMPLATE, projectName)

    # fill in template names
    for file in FILES_TO_SED:
        cmds = ["sed", "-i", "s|projectName|" + projectName + "|",
                os.path.join(projectName, file)]
        print('cmds', cmds)
        subprocess.call(cmds)

    # correct packages
    for package in SRC_PARENT_DIRS_TO_MOVE:
        shutil.move(os.path.join(projectName, package, "projectName/"),
                    os.path.join(projectName, package, projectName))

    # add project to settings.gradle
    with open('settings.gradle', 'a') as fdr:
        fdr.write("include ':" + projectName + "'\n")


if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument('projectName', help='Name of the project to create')
    args = parser.parse_args()
    main(args)