mirror of
				https://github.com/cookiecutter/cookiecutter-django.git
				synced 2025-10-31 16:07:49 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			62 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| """
 | |
| NOTE:
 | |
|     the below code is to be maintained Python 2.x-compatible
 | |
|     as the whole Cookiecutter Django project initialization
 | |
|     can potentially be run in Python 2.x environment.
 | |
| 
 | |
| TODO: ? restrict Cookiecutter Django project initialization to Python 3.x environments only
 | |
| """
 | |
| from __future__ import print_function
 | |
| 
 | |
| import sys
 | |
| 
 | |
| TERMINATOR = "\x1b[0m"
 | |
| WARNING = "\x1b[1;33m [WARNING]: "
 | |
| INFO = "\x1b[1;33m [INFO]: "
 | |
| HINT = "\x1b[3;33m"
 | |
| SUCCESS = "\x1b[1;32m [SUCCESS]: "
 | |
| 
 | |
| project_slug = "{{ cookiecutter.project_slug }}"
 | |
| if hasattr(project_slug, "isidentifier"):
 | |
|     assert (
 | |
|         project_slug.isidentifier()
 | |
|     ), "'{}' project slug is not a valid Python identifier.".format(project_slug)
 | |
| 
 | |
| assert (
 | |
|     project_slug == project_slug.lower()
 | |
| ), "'{}' project slug should be all lowercase".format(project_slug)
 | |
| 
 | |
| assert (
 | |
|     "\\" not in "{{ cookiecutter.author_name }}"
 | |
| ), "Don't include backslashes in author name."
 | |
| 
 | |
| if "{{ cookiecutter.use_docker }}".lower() == "n":
 | |
|     python_major_version = sys.version_info[0]
 | |
|     if python_major_version == 2:
 | |
|         print(
 | |
|             WARNING + "You're running cookiecutter under Python 2, but the generated "
 | |
|             "project requires Python 3.6+. Do you want to proceed (y/n)? " + TERMINATOR
 | |
|         )
 | |
|         yes_options, no_options = frozenset(["y"]), frozenset(["n"])
 | |
|         while True:
 | |
|             choice = raw_input().lower()
 | |
|             if choice in yes_options:
 | |
|                 break
 | |
| 
 | |
|             elif choice in no_options:
 | |
|                 print(INFO + "Generation process stopped as requested." + TERMINATOR)
 | |
|                 sys.exit(1)
 | |
|             else:
 | |
|                 print(
 | |
|                     HINT
 | |
|                     + "Please respond with {} or {}: ".format(
 | |
|                         ", ".join(
 | |
|                             ["'{}'".format(o) for o in yes_options if not o == ""]
 | |
|                         ),
 | |
|                         ", ".join(
 | |
|                             ["'{}'".format(o) for o in no_options if not o == ""]
 | |
|                         ),
 | |
|                     )
 | |
|                     + TERMINATOR
 | |
|                 )
 |