hooks/post_gen_project.py (72 lines of code) (raw):
"""
Does the following:
1. Inits git if used
2. Deletes dockerfiles if not going to be used
3. Deletes config utils if not needed
"""
from __future__ import print_function
import os
import shutil
from subprocess import Popen
# Get the root project directory
PROJECT_DIRECTORY = os.path.realpath(os.path.curdir)
def remove_file(filename):
"""
generic remove file from project dir
"""
fullpath = os.path.join(PROJECT_DIRECTORY, filename)
if os.path.exists(fullpath):
os.remove(fullpath)
def init_git():
"""
Initialises git on the new project folder
"""
GIT_COMMANDS = [
["git", "init"],
["git", "add", "."],
["git", "commit", "-a", "-m", "Initial Commit."]
]
for command in GIT_COMMANDS:
git = Popen(command, cwd=PROJECT_DIRECTORY)
git.wait()
def remove_docker_files():
"""
Removes files needed for docker if it isn't going to be used
"""
for filename in ["Dockerfile",]:
os.remove(os.path.join(
PROJECT_DIRECTORY, filename
))
def remove_viper_files():
"""
Removes files needed for viper config utils
"""
shutil.rmtree(os.path.join(
PROJECT_DIRECTORY, "config"
))
def remove_logrus_files():
"""
Removes files needed for viper config utils
"""
shutil.rmtree(os.path.join(
PROJECT_DIRECTORY, "log"
))
def remove_cobra_files():
"""
Removes files needed for viper config utils
"""
shutil.rmtree(os.path.join(
PROJECT_DIRECTORY, "cmd"
))
def remove_circleci_files():
"""
Removes files needed for viper config utils
"""
shutil.rmtree(os.path.join(
PROJECT_DIRECTORY, ".circleci"
))
def remove_github_files():
"""
Removes files needed for github utils
"""
shutil.rmtree(os.path.join(
PROJECT_DIRECTORY, ".github"
))
# 1. Remove Dockerfiles if docker is not going to be used
if '{{ cookiecutter.use_docker }}'.lower() != 'y':
remove_docker_files()
# 2. Remove viper config if not seleted
if '{{ cookiecutter.use_viper_config }}'.lower() != 'y':
remove_viper_files()
# 3. Remove logrus utils if not seleted
if '{{ cookiecutter.use_logrus_logging }}'.lower() != 'y':
remove_logrus_files()
# 4. Remove cobra utils if not seleted
if '{{ cookiecutter.use_cobra_cmd }}'.lower() != 'y':
remove_cobra_files()
# 5. Remove unused ci choice
if '{{ cookiecutter.use_ci}}'.lower() == 'travis':
remove_circleci_files()
remove_github_files()
elif '{{ cookiecutter.use_ci}}'.lower() == 'circle':
remove_file(".travis.yml")
remove_github_files()
elif '{{ cookiecutter.use_ci}}'.lower() == 'github':
remove_file(".travis.yml")
remove_circleci_files()
else:
remove_file(".travis.yml")
remove_circleci_files()
remove_github_files()
# 6. Remove files depending on selection of mod or dep
if '{{ cookiecutter.go_mod_or_dep}}'.lower() == 'mod':
remove_file("Gopkg.toml")
else:
remove_file("go.mod")
# 7. Initialize Git (should be run after all file have been modified or deleted)
if '{{ cookiecutter.use_git }}'.lower() == 'y':
init_git()
else:
remove_file(".gitignore")