-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)