|
|
@@ -0,0 +1,129 @@ |
|
|
|
import os |
|
|
|
|
|
|
|
import yaml |
|
|
|
import sys |
|
|
|
|
|
|
|
|
|
|
|
def load_yaml(file_path): |
|
|
|
""" |
|
|
|
load yaml |
|
|
|
:param file_path: yaml file path |
|
|
|
:return: content of yaml |
|
|
|
""" |
|
|
|
with open(file_path, encoding="utf-8") as fp: |
|
|
|
try: |
|
|
|
content = yaml.load(fp.read(), Loader=yaml.Loader) |
|
|
|
except yaml.MarkedYAMLError as e: |
|
|
|
print(e) |
|
|
|
sys.exit(1) |
|
|
|
return content |
|
|
|
|
|
|
|
|
|
|
|
def get_sig_owners_path(sig_name): |
|
|
|
cur_path = os.popen("pwd").read().replace("\n", "") |
|
|
|
sig_path = os.path.join(cur_path, sig_name) |
|
|
|
if not os.path.exists(sig_path): |
|
|
|
print("%s is not exist" % sig_path) |
|
|
|
sys.exit(1) |
|
|
|
owners_path = os.path.join(sig_path, "OWNERS") |
|
|
|
return sig_path, owners_path |
|
|
|
|
|
|
|
|
|
|
|
def make_template_file_data_and_write(sig_name, sig_path, owners_path): |
|
|
|
content = {} |
|
|
|
content["name"] = sig_name |
|
|
|
content["description"] = "TO_BE_CLARIFIED" |
|
|
|
content["created_on"] = "2019-12-31" |
|
|
|
content["mailing_list"] = "TO_BE_CLARIFIED" |
|
|
|
content["meeting_url"] = "TO_BE_CLARIFIED" |
|
|
|
content["mature_level"] = "startup" |
|
|
|
content["mentors"] = [{"gitee_id": "--xxx--", "name": "TO_BE_CLARIFIED", "organization": "TO_BE_CLARIFIED", "email": "TO_BE_CLARIFIED"}] |
|
|
|
|
|
|
|
# if sig_info.yaml exists |
|
|
|
if os.path.exists(os.path.join(sig_path, "sig-info.yaml")): |
|
|
|
sig_info_content = load_yaml(os.path.join(sig_path, "sig-info.yaml")) |
|
|
|
content["description"] = sig_info_content.get("description") if sig_info_content.get("description") else "TO_BE_CLARIFIED" |
|
|
|
content["meeting_url"] = sig_info_content.get("meeting_url") if sig_info_content.get("meeting_url") else "TO_BE_CLARIFIED" |
|
|
|
content["mailing_list"] = sig_info_content.get("mailing_list") if sig_info_content.get("mailing_list") else "TO_BE_CLARIFIED" |
|
|
|
|
|
|
|
mts_in_sig_info = [] |
|
|
|
for i in sig_info_content.get("maintainers"): |
|
|
|
mts_in_sig_info.append(i["gitee_id"]) |
|
|
|
|
|
|
|
v = [] |
|
|
|
for m in decode_owners(owners_path): |
|
|
|
if m in mts_in_sig_info: |
|
|
|
for mr in sig_info_content.get("maintainers"): |
|
|
|
if m == mr["gitee_id"]: |
|
|
|
v.append({ |
|
|
|
"gitee_id": m, "name": mr.get("name") if mr.get("name") else "TO_BE_CLARIFIED", |
|
|
|
"organization": mr.get("organization") if mr.get("organization") else "TO_BE_CLARIFIED", |
|
|
|
"email": mr.get("email") if mr.get("email") else "TO_BE_CLARIFIED", |
|
|
|
}) |
|
|
|
else: |
|
|
|
v.append({"gitee_id": m, "name": "TO_BE_CLARIFIED", "organization": "TO_BE_CLARIFIED", |
|
|
|
"email": "TO_BE_CLARIFIED"}) |
|
|
|
|
|
|
|
if len(v) == 0: |
|
|
|
content["maintainers"] = [ |
|
|
|
{"gitee_id": "--xxx--", "name": "TO_BE_CLARIFIED", "organization": "TO_BE_CLARIFIED", |
|
|
|
"email": "TO_BE_CLARIFIED"}] |
|
|
|
else: |
|
|
|
content["maintainers"] = v |
|
|
|
|
|
|
|
else: |
|
|
|
v = [] |
|
|
|
for m in decode_owners(owners_path): |
|
|
|
v.append({"gitee_id": m, "name": "TO_BE_CLARIFIED", "organization": "TO_BE_CLARIFIED", |
|
|
|
"email": "TO_BE_CLARIFIED"}) |
|
|
|
|
|
|
|
if len(v) == 0: |
|
|
|
content["maintainers"] = [ |
|
|
|
{"gitee_id": "--xxx--", "name": "TO_BE_CLARIFIED", "organization": "TO_BE_CLARIFIED", |
|
|
|
"email": "TO_BE_CLARIFIED"}] |
|
|
|
else: |
|
|
|
content["maintainers"] = v |
|
|
|
|
|
|
|
repos = [] |
|
|
|
for root, dirs, files in os.walk(sig_path): |
|
|
|
if len(dirs) == 0: |
|
|
|
if len(files) == 0: |
|
|
|
break |
|
|
|
for f in files: |
|
|
|
if root.count("/") > 2 and f.endswith(".yaml"): |
|
|
|
repos.append(root.split("/")[-2] + '/' + f.split(".yaml")[0]) |
|
|
|
else: |
|
|
|
continue |
|
|
|
if len(repos) == 0: |
|
|
|
content["repositories"] = [{"repo": ["example/repos1", "example/repos2"], "committers": [{"gitee_id": "--xxx--", "name": "TO_BE_CLARIFIED", "organization": "TO_BE_CLARIFIED", "email": "TO_BE_CLARIFIED"}], |
|
|
|
"contributors": [{"gitee_id": "--xxx--", "name": "TO_BE_CLARIFIED", "organization": "TO_BE_CLARIFIED", "email": "TO_BE_CLARIFIED"}],}, {"repo": ["example/repos1", "example/repos2"],}, ] |
|
|
|
else: |
|
|
|
content["repositories"] = [{"repo": repos, "committers": [{"gitee_id": "--xxx--", "name": "TO_BE_CLARIFIED", "organization": "TO_BE_CLARIFIED", "email": "TO_BE_CLARIFIED"}], |
|
|
|
"contributors": [{"gitee_id": "--xxx--", "name": "TO_BE_CLARIFIED", "organization": "TO_BE_CLARIFIED", "email": "TO_BE_CLARIFIED"}], }] |
|
|
|
write_yaml_to_sig(sig_path, content) |
|
|
|
|
|
|
|
|
|
|
|
def decode_owners(owners_path): |
|
|
|
if os.path.exists(owners_path): |
|
|
|
c = load_yaml(owners_path) |
|
|
|
return c["maintainers"] |
|
|
|
else: |
|
|
|
return [] |
|
|
|
|
|
|
|
|
|
|
|
def write_yaml_to_sig(dst_path, data): |
|
|
|
file_path = os.path.join(dst_path, "sig-info.yaml") |
|
|
|
with open(file_path, 'w', encoding="utf-8") as f: |
|
|
|
yaml.dump(data, f, Dumper=yaml.Dumper, sort_keys=False) |
|
|
|
|
|
|
|
|
|
|
|
# you can use "python3 create_single_siginfo.py sig_name(example: security)" to auto make a sig_info.yaml for a sig, |
|
|
|
# make sure you trigger this command after you enter the "community/sigs" directory |
|
|
|
if __name__ == '__main__': |
|
|
|
if len(sys.argv) != 2: |
|
|
|
print('Required 1 parameters! The sig_name need to be transferred in sequence.') |
|
|
|
sys.exit(1) |
|
|
|
sig = sys.argv[1] |
|
|
|
s_path, o_path = get_sig_owners_path(sig) |
|
|
|
make_template_file_data_and_write(sig, s_path, o_path) |
|
|
|
|