]> jfr.im git - yt-dlp.git/blobdiff - devscripts/make_readme.py
[cleanup,build] Cleanup some build-related code
[yt-dlp.git] / devscripts / make_readme.py
index 7f2ea319cca5c7c3433665c534758e93fedf8f89..1401c2e5a74310c6873aa67a05c41b8bf95f9d3e 100755 (executable)
@@ -1,20 +1,30 @@
-import sys
+#!/usr/bin/env python3
+
+# yt-dlp --help | make_readme.py
+# This must be run in a console of correct width
 import re
+import sys
 
 README_FILE = 'README.md'
+
+OPTIONS_START = 'General Options:'
+OPTIONS_END = 'CONFIGURATION'
+EPILOG_START = 'See full documentation'
+
+
 helptext = sys.stdin.read()
+if isinstance(helptext, bytes):
+    helptext = helptext.decode('utf-8')
 
-with open(README_FILE) as f:
-    oldreadme = f.read()
+start, end = helptext.index(f'\n  {OPTIONS_START}'), helptext.index(f'\n{EPILOG_START}')
+options = re.sub(r'(?m)^  (\w.+)$', r'## \1', helptext[start + 1: end + 1])
 
-header = oldreadme[:oldreadme.index('# OPTIONS')]
-footer = oldreadme[oldreadme.index('# CONFIGURATION'):]
+with open(README_FILE, encoding='utf-8') as f:
+    readme = f.read()
 
-options = helptext[helptext.index('  General Options:')+19:]
-options = re.sub(r'^  (\w.+)$', r'## \1', options, flags=re.M)
-options = '# OPTIONS\n' + options + '\n'
+header = readme[:readme.index(f'## {OPTIONS_START}')]
+footer = readme[readme.index(f'# {OPTIONS_END}'):]
 
-with open(README_FILE, 'w') as f:
-    f.write(header)
-    f.write(options)
-    f.write(footer)
+with open(README_FILE, 'w', encoding='utf-8') as f:
+    for part in (header, options, footer):
+        f.write(part)