django-simplecms/cms/__main__.py

99 wiersze
2.4 KiB
Python

"""
Main entry point.
"""
import argparse
import os
import re
import shutil
import cms
import example
def main():
"""
Ask the user to confirm, then call create_project().
"""
parser = argparse.ArgumentParser(description="SimpleCMS")
parser.add_argument("project_name", nargs="?", default=".")
project_name = parser.parse_args().project_name
if project_name == ".":
project_dir = os.getcwd()
project_name = os.path.basename(project_dir)
else:
project_dir = os.path.join(os.getcwd(), project_name)
if re.match(r"^\w+$", project_name):
if (
input(
f"Do you want to create a new project in {project_dir}? [yN] "
).lower()
== "y"
):
create_project(project_name, project_dir)
else:
print(f"Invalid project name: {project_name}")
def create_project(project_name, project_dir):
"""
Populate project directory with a minimal, working project.
"""
os.makedirs(project_dir, exist_ok=True)
with open(os.path.join(project_dir, "requirements.txt"), "w") as f:
print(f"django-simplecms=={cms.__version__}", file=f)
example_dir = os.path.dirname(example.__file__)
app_dir = os.path.join(project_dir, project_name)
shutil.copytree(example_dir, app_dir, dirs_exist_ok=True)
with open(
os.open(
os.path.join(project_dir, "manage.py"), os.O_CREAT | os.O_WRONLY, 0o755
),
"w",
) as f:
print(
f"""#!/usr/bin/env python3
import os
import sys
from django.core.management import execute_from_command_line
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "{project_name}.settings")
execute_from_command_line(sys.argv)""",
file=f,
)
with open(os.path.join(project_dir, project_name, "wsgi.py"), "w") as f:
print(
f"""import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "{project_name}.settings")
application = get_wsgi_application()""",
file=f,
)
with open(os.path.join(project_dir, ".gitignore"), "w") as f:
print("*.pyc\n__pycache__/", file=f)
print(
f"""
Successfully created project "{project_name}"!
Things to do next:
- create a database
- ./manage.py makemigrations
- ./manage.py migrate
- ./manage.py createsuperuser
- ./manage.py runserver
"""
)
if __name__ == "__main__":
main()