-
Notifications
You must be signed in to change notification settings - Fork 3
/
update_readmes.py
73 lines (61 loc) · 2.4 KB
/
update_readmes.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
import os
def format_title(file_name):
name_without_ext = os.path.splitext(file_name)[0]
words = name_without_ext.split('_')
formatted_name = ' '.join(word.capitalize() for word in words)
return formatted_name
def update_readme(directory):
readme_path = os.path.join(directory, "README.md")
md_files = [f for f in os.listdir(directory) if f.endswith(".md") and f != "README.md"]
if not md_files:
return
with open(readme_path, "w") as readme_file:
for md_file in md_files:
title = format_title(md_file)
readme_file.write(f"- [{title}]({md_file})\n")
def generate_repo_structure(path=".", indent=0):
items = []
for item in sorted(os.listdir(path)):
if item.startswith('.'):
continue
full_path = os.path.join(path, item)
if os.path.isdir(full_path):
folder_name = item
items.append(f'{" " * indent}- 📂 {folder_name}')
items.extend(generate_repo_structure(full_path, indent + 1))
elif full_path.endswith(".md") and not full_path.endswith("README.md"):
title = format_title(item)
items.append(f'{" " * indent}- 📄 [{title}]({full_path})')
return items
def update_root_readme():
structure = generate_repo_structure()
structure_content = "" + "\n".join(structure)
readme_path = "README.md"
if not os.path.exists(readme_path):
with open(readme_path, "w") as readme_file:
readme_file.write(structure_content)
return
with open(readme_path, "r") as readme_file:
lines = readme_file.readlines()
with open(readme_path, "w") as readme_file:
in_contents_section = False
for line in lines:
if line.strip() == "<!-- CONTENTS -->":
readme_file.write(line)
readme_file.write(structure_content + "\n")
in_contents_section = True
elif line.strip() == "<!-- END CONTENTS -->":
readme_file.write(line)
in_contents_section = False
elif not in_contents_section:
readme_file.write(line)
def main():
# Update README files in subdirectories
for root, dirs, files in os.walk("."):
if root == ".":
continue
update_readme(root)
# Update README file in the root directory
update_root_readme()
if __name__ == "__main__":
main()