diff --git a/cookiecutter.json b/cookiecutter.json index 0ae232c..3f14912 100644 --- a/cookiecutter.json +++ b/cookiecutter.json @@ -4,5 +4,6 @@ "github_username": "sloria", "project_name": "My Flask App", "app_name": "myflaskapp", - "project_short_description": "A flasky app." + "project_short_description": "A flasky app.", + "use_pipenv": ["yes", "no"] } diff --git a/hooks/post_gen_project.py b/hooks/post_gen_project.py new file mode 100644 index 0000000..339ecfa --- /dev/null +++ b/hooks/post_gen_project.py @@ -0,0 +1,35 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +"""Post gen hook to ensure that the generated project +hase only one package managment, either pipenv or pip.""" +import os +import shutil +import sys + + +def clean_extra_package_managment_files(): + """Removes either requirements files and folderor the Pipfile.""" + use_pipenv = '{{cookiecutter.use_pipenv}}' + to_delete = [] + + if use_pipenv == 'yes': + to_delete = to_delete + ['requirements.txt', 'requirements'] + else: + to_delete.append('Pipfile') + + try: + for file_or_dir in to_delete: + if os.path.isfile(file_or_dir): + os.remove(file_or_dir) + else: + shutil.rmtree(file_or_dir) + sys.exit(0) + except OSError as e: + sys.stdout.write( + 'While attempting to remove file(s) an error occurred' + ) + sys.stdout.write('Error: {}'.format(e)) + + +if __name__ == '__main__': + clean_extra_package_managment_files() diff --git a/Pipfile b/{{cookiecutter.app_name}}/Pipfile similarity index 100% rename from Pipfile rename to {{cookiecutter.app_name}}/Pipfile diff --git a/{{cookiecutter.app_name}}/README.rst b/{{cookiecutter.app_name}}/README.rst index a1e4c08..c39e426 100644 --- a/{{cookiecutter.app_name}}/README.rst +++ b/{{cookiecutter.app_name}}/README.rst @@ -19,11 +19,11 @@ Run the following commands to bootstrap your environment :: git clone https://github.com/{{cookiecutter.github_username}}/{{cookiecutter.app_name}} cd {{cookiecutter.app_name}} - - pip install -r requirements/dev.txt - # or use Pipenv + {%- if cookiecutter.use_pipenv == "yes" %} pipenv install --dev - + {%- else %} + pip install -r requirements/dev.txt + {%- endif %} npm install npm start # run the webpack dev server and flask server using concurrently