mirror of https://github.com/tildeclub/ttrv.git
85 lines
2.8 KiB
Python
Executable File
85 lines
2.8 KiB
Python
Executable File
#!/usr/bin/env python
|
|
|
|
"""
|
|
Internal tool used to automatically generate an up-to-date version of the tvr
|
|
man page. Currently this script should be manually ran after each version bump.
|
|
In the future, it would be nice to have this functionality built into setup.py.
|
|
|
|
Usage:
|
|
$ python scripts/build_manpage.py
|
|
"""
|
|
|
|
import os
|
|
import sys
|
|
from datetime import datetime
|
|
|
|
_filepath = os.path.dirname(os.path.relpath(__file__))
|
|
ROOT = os.path.abspath(os.path.join(_filepath, '..'))
|
|
sys.path.insert(0, ROOT)
|
|
|
|
import tvr
|
|
from tvr import config
|
|
|
|
|
|
def main():
|
|
|
|
parser = config.build_parser()
|
|
help_text = parser.format_help()
|
|
help_sections = help_text.split('\n\n')
|
|
del help_sections[1]
|
|
|
|
data = {}
|
|
print('Fetching version')
|
|
data['version'] = tvr.__version__
|
|
print('Fetching release date')
|
|
data['release_date'] = datetime.utcnow().strftime('%B %d, %Y')
|
|
print('Fetching synopsis')
|
|
synopsis = help_sections[0].replace('usage: ', '')
|
|
synopsis = ' '.join(line.strip() for line in synopsis.split('\n'))
|
|
data['synopsis'] = synopsis
|
|
print('Fetching description')
|
|
data['description'] = help_sections[1]
|
|
# Build the options section for each argument from the help section
|
|
# Example Before:
|
|
# -h, --help show this help message and exit
|
|
# Example After
|
|
# .TP
|
|
# \fB-h\fR, \fB--help\fR
|
|
# show this help message and exit
|
|
options = ''
|
|
lines = help_sections[2].split('\n')[1:] # positional arguments
|
|
lines.extend(help_sections[3].split('\n')[1:]) # optional arguments
|
|
lines = [line.strip() for line in lines]
|
|
arguments = []
|
|
for line in lines:
|
|
if line.startswith('-'):
|
|
arguments.append(line)
|
|
elif line.startswith('URL'):
|
|
# Special case for URL which is a positional argument
|
|
arguments.append(line)
|
|
else:
|
|
arguments[-1] = arguments[-1] + ' ' + line
|
|
for argument in arguments:
|
|
flag, description = (col.strip() for col in argument.split(' ', 1))
|
|
flag = ', '.join(r'\fB'+f+r'\fR' for f in flag.split(', '))
|
|
options += '\n'.join(('.TP', flag, description, '\n'))
|
|
data['options'] = options
|
|
print('Fetching license')
|
|
data['license'] = tvr.__license__
|
|
print('Fetching copyright')
|
|
data['copyright'] = tvr.__copyright__
|
|
# Escape dashes is all of the sections
|
|
data = {k: v.replace('-', r'\-') for k, v in data.items()}
|
|
print('Reading from %s/scripts/tvr.1.template' % ROOT)
|
|
with open(os.path.join(ROOT, 'scripts/tvr.1.template')) as fp:
|
|
template = fp.read()
|
|
print('Populating template')
|
|
out = template.format(**data)
|
|
print('Writing to %s/tvr.1' % ROOT)
|
|
with open(os.path.join(ROOT, 'tvr.1'), 'w') as fp:
|
|
fp.write(out)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main()
|