kopia lustrzana https://github.com/rtts/django-simplecms
99 wiersze
2.4 KiB
Python
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()
|