@@ -75,21 +75,33 @@ def render_library_index(groups: list[tuple[str, list[tuple[str, str]]]]) -> str
7575 return "\n " .join (lines ).rstrip () + "\n "
7676
7777
78+ def sync_library_index (* , write : bool ) -> tuple [bool , str , str ]:
79+ expected = render_library_index (load_library_nav_groups ())
80+ current = LIBRARY_INDEX_MD .read_text (encoding = "utf-8" ) if LIBRARY_INDEX_MD .exists () else ""
81+ changed = current != expected
82+
83+ if write and changed :
84+ LIBRARY_INDEX_MD .parent .mkdir (parents = True , exist_ok = True )
85+ LIBRARY_INDEX_MD .write_text (expected , encoding = "utf-8" )
86+
87+ return changed , current , expected
88+
89+
7890def main () -> int :
7991 parser = argparse .ArgumentParser ()
8092 parser .add_argument ("--write" , action = "store_true" , help = "docsrc/library/index.md を更新する" )
8193 args = parser .parse_args ()
8294
83- expected = render_library_index (load_library_nav_groups ())
84- current = LIBRARY_INDEX_MD .read_text (encoding = "utf-8" ) if LIBRARY_INDEX_MD .exists () else ""
95+ changed , current , expected = sync_library_index (write = args .write )
8596
8697 if args .write :
87- LIBRARY_INDEX_MD .parent .mkdir (parents = True , exist_ok = True )
88- LIBRARY_INDEX_MD .write_text (expected , encoding = "utf-8" )
89- print (f"updated: { LIBRARY_INDEX_MD } " )
98+ if changed :
99+ print (f"updated: { LIBRARY_INDEX_MD } " )
100+ else :
101+ print (f"already up-to-date: { LIBRARY_INDEX_MD } " )
90102 return 0
91103
92- if current == expected :
104+ if not changed :
93105 print ("OK: docsrc/library/index.md is in sync with mkdocs.yml" )
94106 return 0
95107
0 commit comments