自动生成代码脚本

This commit is contained in:
HuangJiaLuo 2021-09-20 14:00:11 +08:00
parent 81f85009ab
commit d9a9da6dee
1 changed files with 109 additions and 0 deletions

View File

@ -0,0 +1,109 @@
import os
def DealList(li: list):
# 对列表进行处理
flag = 0
InterName = []
BlankNum = []
SliceNum = []
for i in range(len(li)):
if flag == 0:
SliceNum.append(i)
InterName.append(f"{li[i].lower().title()}Interface".replace("_", "").replace(":", ""))
flag = 1
if li[i] == '':
BlankNum.append(i)
flag = 0
Dict = {}
for i in range(len(InterName)-1):
Dict[InterName[i]] = li[SliceNum[i]+1:BlankNum[i]]
Dict[InterName[-1]] = li[BlankNum[-1]+2:]
return Dict
def SetInterface():
# 对读取到的yaml进行处理
Temp = []
path = os.getcwd()
WirtePath = f"{path}/pkg/structure/interface.go"
ReadPath = f"{path}/pkg/structure/generate/tem.yaml"
with open(ReadPath, "r") as f:
title = f.read()
title = title.split("\n")[2:]
for i in title:
if ' - ' not in i:
Temp.append(i)
if ' - ' in i:
i = i.split("-")[1]
Temp.append(i)
# 对列表进行处理,便于自动补全
dic = DealList(Temp)
# 通过传入的列表对interface.go进行自动补全
Temp = []
AppendList = []
with open(WirtePath, "r") as f:
context = f.read()
context = context.split("\n")
flag = 0
for i in context:
if "interface" in i:
flag = 1 # 开锁
if "}" in i:
Temp.append(i)
AppendList.append(Temp)
Temp = []
flag = 0 # 上锁
if flag == 1:
Temp.append(i)
# 拆分成功, 开始匹配
Del = []
res = context[0:20]
for i in AppendList[2:]:
x = i[0:2]
for key, values in dic.items():
if key in i[0]:
Del.append(key)
for val in values:
x.append(f'\t{val.title().lstrip()}(*pr'
f'oto.{val.title().lstrip()}Request) ([]string, error)'.replace("_", ""))
x.append("\n}\n\n")
for j in x:
res.append(j)
for i in Del:
dic.pop(i)
# 添加新增的
for key, values in dic.items():
w = []
w.append(f"type {key} interface" + "{")
w.append('\tKeyBaseInterface')
for val in values:
w.append(f'\t{val.title().lstrip()}(*pr'
f'oto.{val.title().lstrip()}Request) ([]string, error)'.replace("_", ""))
w.append("\n}\n\n")
for j in w:
res.append(j)
f = open(WirtePath, 'w')
judge = ""
for i in res:
if judge == i:
continue
judge = i
if "package" in i:
i = f"{i}\n"
if "import" in i:
i = f"{i}\n"
if i == '':
i = '\n'
if i == '}' or i == '\n{\n':
i = '\n}\n'
i = i.replace('\t', '\n\t')
f.write(i)
f.close()
if __name__ == "__main__":
SetInterface()