forked from p53841790/wheat-cache
feat(proto):add proto auto tool
This commit is contained in:
parent
b9060a64d5
commit
f410738b27
|
@ -0,0 +1,22 @@
|
|||
syntax = "proto3";
|
||||
import "base.proto";
|
||||
option go_package = "pkg/proto";
|
||||
|
||||
message LSetRequest {
|
||||
BaseKey key = 1;
|
||||
}
|
||||
message LGetRequest {
|
||||
BaseKey key = 1;
|
||||
}
|
||||
message LAddRequest {
|
||||
BaseKey key = 1;
|
||||
}
|
||||
message LQueueRequest {
|
||||
BaseKey key = 1;
|
||||
}
|
||||
message LSetbitRequest {
|
||||
BaseKey key = 1;
|
||||
}
|
||||
message LGetbitRequest {
|
||||
BaseKey key = 1;
|
||||
}
|
|
@ -1,3 +1,4 @@
|
|||
|
||||
syntax = "proto3";
|
||||
|
||||
option go_package = "pkg/proto";
|
||||
|
@ -20,5 +21,16 @@ service CommServer {
|
|||
rpc LQueue (LQueueRequest) returns (CommendResponse);
|
||||
rpc LSetbit (LSetbitRequest) returns (CommendResponse);
|
||||
rpc LGetbit (LGetbitRequest) returns (CommendResponse);
|
||||
|
||||
rpc Set (SetRequest) returns (CommendResponse);
|
||||
rpc Get (GetRequest) returns (CommendResponse);
|
||||
rpc Add (AddRequest) returns (CommendResponse);
|
||||
rpc Reduce (ReduceRequest) returns (CommendResponse);
|
||||
rpc Setbit (SetbitRequest) returns (CommendResponse);
|
||||
rpc Getbit (GetbitRequest) returns (CommendResponse);
|
||||
rpc LSet (LSetRequest) returns (CommendResponse);
|
||||
rpc LGet (LGetRequest) returns (CommendResponse);
|
||||
rpc LAdd (LAddRequest) returns (CommendResponse);
|
||||
rpc LQueue (LQueueRequest) returns (CommendResponse);
|
||||
rpc LSetbit (LSetbitRequest) returns (CommendResponse);
|
||||
rpc LGetbit (LGetbitRequest) returns (CommendResponse);
|
||||
}
|
|
@ -32,45 +32,86 @@ def load_conf():
|
|||
# 生成文件,并写入
|
||||
def mkdir(cfg_camel):
|
||||
path = "protobuf"
|
||||
path = path.strip()
|
||||
# 判断路径是否存在
|
||||
isExists = os.path.exists(path)
|
||||
# 判断结果
|
||||
if not isExists:
|
||||
os.makedirs(path)
|
||||
print(path + ' 创建成功')
|
||||
else: # 如果目录存在则不创建,并提示目录已存在
|
||||
# print(path + ' 目录已存在')
|
||||
for key,value in cfg_camel.items():
|
||||
# print(key)
|
||||
proto_path = path + '/' + key + '.proto'
|
||||
if not os.path.exists(proto_path): # 如果这个文件不存在
|
||||
file = open(proto_path,'w')
|
||||
file.write('syntax = "proto3";\nimport "base.proto";\noption go_package = "pkg/proto";\n')
|
||||
for v in value:
|
||||
file.write('\nmessage ' + v +'Request '+'{\n BaseKey key = 1;\n}\n')
|
||||
file.close()
|
||||
else: # 如果这个文件存在
|
||||
with open(proto_path) as f:
|
||||
line = f.readlines()
|
||||
# print(line)
|
||||
f.close()
|
||||
for v in value:
|
||||
function = v + 'Request'
|
||||
flag = 0
|
||||
for l in line:
|
||||
if function in l:
|
||||
flag=1
|
||||
break
|
||||
if flag == 0:
|
||||
file = open(proto_path,'a')
|
||||
file.write('\nmessage ' + v +'Request '+'{\n BaseKey key = 1;\n}\n')
|
||||
file.close()
|
||||
flag = 0
|
||||
storagePath = f"{protobufPath}/storage.proto"
|
||||
for key,value in cfg_camel.items():
|
||||
'''生成、更新数据结构proto文件'''
|
||||
proto_path = path + '/' + key + '.proto'
|
||||
if not os.path.exists(proto_path): # 如果这个文件不存在
|
||||
'''生成对应的数据结构proto文件'''
|
||||
file = open(proto_path,'w')
|
||||
file.write('syntax = "proto3";\nimport "base.proto";\noption go_package = "pkg/proto";\n')
|
||||
for v in value:
|
||||
file.write('\nmessage ' + v +'Request '+'{\n BaseKey key = 1;\n}')
|
||||
file.close()
|
||||
'''给strong.proto添加import该新的数据结构'''
|
||||
import_structure = 'import "'+ key +'.proto";\n'
|
||||
mess = 'message CommendResponse {\n'
|
||||
with open(storagePath) as f:
|
||||
line = f.readlines()
|
||||
# print(line)
|
||||
f.close
|
||||
for i in range(len(line)):
|
||||
if mess in line[i]:
|
||||
break
|
||||
line.insert(i,import_structure)
|
||||
file = open(storagePath,'w')
|
||||
for l in line:
|
||||
file.write(l)
|
||||
file.close()
|
||||
i=0
|
||||
for i in range(len(line)-1,0,-1):
|
||||
if '}' in line[i]:
|
||||
break
|
||||
for v in value:
|
||||
line.insert(i,' rpc '+ v +' ('+ v +'Request) returns (CommendResponse);\n')
|
||||
file = open(storagePath,'w')
|
||||
for l in line:
|
||||
file.write(l)
|
||||
file.close()
|
||||
|
||||
|
||||
else: # 如果这个文件存在
|
||||
with open(proto_path) as f:
|
||||
line = f.readlines()
|
||||
# print(line)
|
||||
f.close()
|
||||
for v in value:
|
||||
function = v + 'Request'
|
||||
flag = 0
|
||||
for l in line:
|
||||
if function in l:
|
||||
flag=1
|
||||
break
|
||||
if flag == 0:
|
||||
file = open(proto_path,'a')
|
||||
file.write('\nmessage ' + v +'Request '+'{\n BaseKey key = 1;\n}')
|
||||
file.close()
|
||||
flag = 0
|
||||
'''更新storage.proto文件'''
|
||||
with open(storagePath) as f:
|
||||
line = f.readlines()
|
||||
f.close
|
||||
for v in value:
|
||||
flg=0
|
||||
for l in range(len(line)):
|
||||
if ' rpc '+ v +' ('+ v +'Request) returns (CommendResponse);\n' in line[l]:
|
||||
flg = 1
|
||||
break
|
||||
if flg==0:
|
||||
i=0
|
||||
for i in range(len(line)-1,0,-1):
|
||||
if '}' in line[i]:
|
||||
break
|
||||
line.insert(i,' rpc '+ v +' ('+ v +'Request) returns (CommendResponse);\n')
|
||||
i=0
|
||||
file = open(storagePath,'w')
|
||||
for l in line:
|
||||
file.write(l)
|
||||
file.close()
|
||||
|
||||
if __name__ == "__main__":
|
||||
conf, cfg_camel = load_conf()
|
||||
#
|
||||
print(cfg_camel)
|
||||
mkdir(cfg_camel)
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue