2025-04-11 08:54:28 +08:00

96 lines
2.9 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/python
# -*- coding: utf-8 -*-
# @version : 1.0
# @Create Time : 2022/12/9 15:27
# @File : main.py
# @IDE : PyCharm
# @desc : 简要说明
import datetime
import os.path
from application.settings import BASE_DIR
class CreateApp:
APPS_ROOT = os.path.join(BASE_DIR, "apps")
SCRIPT_DIR = os.path.join(BASE_DIR, 'scripts', 'create_app')
def __init__(self, path: str):
"""
:param path: app 路径根目录为apps填写apps后面路径即可例子vadmin/auth
"""
self.app_path = os.path.join(self.APPS_ROOT, path)
self.path = path
def run(self):
"""
自动创建初始化 APP 结构,如何该路径已经存在,则不执行
"""
if self.exist(self.app_path):
print(f"{self.app_path} 已经存在,无法自动创建,请删除后,重新执行。")
return False
print("开始生成 App 目录:", self.path)
path = []
for item in self.path.split("/"):
path.append(item)
self.create_pag(os.path.join(self.APPS_ROOT, *path))
self.create_pag(os.path.join(self.app_path, "models"))
self.create_pag(os.path.join(self.app_path, "params"))
self.create_pag(os.path.join(self.app_path, "schemas"))
self.generate_file("views.py")
self.generate_file("crud.py")
print("App 目录生成结束", self.app_path)
def create_pag(self, path: str) -> None:
"""
创建 python 包
:param path: 绝对路径
"""
if self.exist(path):
return
os.makedirs(path)
now = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
params = {
"create_datetime": now,
"filename": "__init__.py",
"desc": "初始化文件"
}
self.create_file(os.path.join(path, "__init__.py"), "init.py", **params)
def generate_file(self, name: str) -> None:
"""
创建文件
"""
now = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
params = {
"create_datetime": now,
}
self.create_file(os.path.join(self.app_path, name), name, **params)
def create_file(self, filepath: str, name: str, **kwargs):
"""
创建文件
"""
with open(filepath, "w", encoding="utf-8") as f:
content = self.__get_template(name)
f.write(content.format(**kwargs))
@classmethod
def exist(cls, path) -> bool:
"""
判断路径是否已经存在
"""
return os.path.exists(path)
def __get_template(self, name: str) -> str:
"""
获取模板内容
"""
template = open(os.path.join(self.SCRIPT_DIR, "template", name), 'r')
content = template.read()
template.close()
return content