diff --git a/args_handler.py b/args_handler.py new file mode 100755 index 0000000..19a7f0d --- /dev/null +++ b/args_handler.py @@ -0,0 +1,14 @@ +import argparse +from generator import generate +parser = argparse.ArgumentParser() + +parser.add_argument("-p", "--project_folder", help="Root Folder of your Django Project") +parser.add_argument("-s", "--static_folder", help="Static Folder of your Django Project") +parser.add_argument("-db", "--database_project", help="Database of your Django Project") +parser.add_argument("-py", "--python_image_version", help="See https://hub.docker.com/_/python for python image") +options = parser.parse_args() +# print(options.project_folder) +generate(project_name=options.project_folder, + static_folder=options.static_folder, + python_version=options.python_image_version, + database=options.database_project) diff --git a/generator.py b/generator.py index 0abf416..154f6ca 100644 --- a/generator.py +++ b/generator.py @@ -1,12 +1,14 @@ +from pathlib import Path from typing import Text, Optional +import os -def generate(#project_name: Text, - # static_folder: Text, - # template_folder: Text, +def generate(project_name: Text, + static_folder: Text, python_version: Text, # dbtype: Text ) -> Text: + generate_conf_nginx(project_name, static_folder) write_docker_file(python_version) write_nginx_docker_file() return "Finish" @@ -17,7 +19,7 @@ def write_docker_file(python_version: Text): print("Please look at https://hub.docker.io for more information about python image version") print("Writing Dockerfile...") print("Please Wait..") - strings = 'FROM python:%s \n' \ + strings = 'FROM python:{} \n' \ 'COPY . /code \n' \ 'WORKDIR /code/ \n' \ 'RUN pip --default-timeout=1000 install --no-cache-dir -r requirements.txt\n'.format(python_version) @@ -43,7 +45,46 @@ def write_docker_compose(): pass -def generate_conf_nginx(): - pass - +def generate_conf_nginx(project_name: Text, + static_folder: Text): + if static_folder is None: + static_folder = "static" + cur_dir = os.getcwd() + Path(cur_dir + '/conf/nginx/conf.d').mkdir(parents=True, exist_ok=True) + Path(cur_dir + '/config/nginx').mkdir(parents=True, exist_ok=True) + strings = 'server{} \n' \ + ' listen 80; \n' \ + ' location / {} \n' \ + ' proxy_pass http://{}:8000; \n' \ + ' {} \n'\ + '\n'\ + ' location /{} {}\n' \ + ' alias /{}; # your Django projects static files - amend as required\n' \ + ' {}\n' \ + '{}\n'.format("{", "{", project_name, "}", + static_folder, "{", static_folder, "}", + "}") + project_conf = open("conf/nginx/conf.d/"+project_name+".conf", "w") + project_conf.write(strings) + strings_mounting = 'server{}\n' \ + ' listen 80;\n' \ + ' server_name localhost;\n' \ + ' location / {}\n' \ + ' proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n' \ + ' proxy_set_header X-Forwarded-Proto https;\n'\ + ' proxy_set_header X-Real-IP $remote_addr;\n'\ + ' proxy_set_header Host $http_host;\n'\ + ' proxy_redirect off;\n'\ + ' proxy_pass http://{}:8000;\n' \ + ' {}\n'\ + '\n'\ + ' location /{} {}\n' \ + ' alias /{}; # your Django projects static files - amend as required\n' \ + ' {}\n' \ + '{}\n'.format("{", "{", project_name, "}", + static_folder, "{", static_folder, "}", + "}") + nginx_default = open("config/nginx/"+"default.conf", "w") + nginx_default.write(strings_mounting) + return print("Success created nginx configuration")