From e228763052595f90cc8e344a7bf415a941829868 Mon Sep 17 00:00:00 2001 From: Jaap Joris Vens Date: Sat, 23 Jan 2021 00:15:44 +0100 Subject: [PATCH] The `simplecms` command is now a proper entrypoint --- cms/__main__.py | 48 +++++++++++++++++++++++++++++++++++++++++++++++ cms/bin/simplecms | 28 --------------------------- setup.py | 6 ++++-- 3 files changed, 52 insertions(+), 30 deletions(-) create mode 100644 cms/__main__.py delete mode 100755 cms/bin/simplecms diff --git a/cms/__main__.py b/cms/__main__.py new file mode 100644 index 0000000..dca8be7 --- /dev/null +++ b/cms/__main__.py @@ -0,0 +1,48 @@ +import os, argparse, shutil, example +from pip._internal.operations import freeze as pip + +def main(): + parser = argparse.ArgumentParser(description='SimpleCMS') + parser.add_argument('project_name', nargs='?') + if project_name := parser.parse_args().project_name: + project_dir = os.path.join(os.getcwd(), project_name) + else: + project_name = os.path.basename(os.getcwd()) + project_dir = os.getcwd() + if input(f'Do you want to create a new project in `{project_dir}` ?\033[1D') in 'Yy': + create_project(project_name, project_dir) + +def create_project(project_name, project_dir): + os.makedirs(project_dir, exist_ok=True) + with open(os.path.join(project_dir, 'requirements.txt'), 'w') as f: + for line in pip.freeze(): + + # Central point of failure + if 'django_simplecms' in line: + line = 'git+https://github.com/rtts/django-simplecms' + + print(line, file=f) + + shutil.copytree(os.path.dirname(example.__file__), os.path.join(project_dir, project_name), 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('''#!/usr/bin/env python +import os, sys +os.environ.setdefault('DJANGO_SETTINGS_MODULE', '{project_name}.settings') +from django.core.management import execute_from_command_line +execute_from_command_line(sys.argv)''', 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() diff --git a/cms/bin/simplecms b/cms/bin/simplecms deleted file mode 100755 index 8712ae6..0000000 --- a/cms/bin/simplecms +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/bash -e - -test -z $1 && echo "Please provide a project name!" && exit 1 -mkdir "$1" -cd "$1" -pip3 freeze > requirements.txt -example_dir=$(python3 -c 'import os,example;print(os.path.dirname(example.__file__))') -cp -r "$example_dir" "$1" -cp "$example_dir"/../manage.py . -sed -i "s/example/$1/" manage.py -sed -i "s/example/$1/" "$1"/wsgi.py -cat << EOF > .gitignore -*.pyc -__pycache__/ -EOF - -cat <