mirror of
https://github.com/tildeclub/ttrv.git
synced 2026-06-19 11:39:23 +00:00
first commit
This commit is contained in:
84
scripts/build_manpage.py
Executable file
84
scripts/build_manpage.py
Executable file
@@ -0,0 +1,84 @@
|
||||
#!/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()
|
||||
Reference in New Issue
Block a user