erynwells.me/scripts/website

49 lines
1.2 KiB
Python
Executable file

#!/usr/bin/env python3
# Eryn Wells <eryn@erynwells.me>
'''
A Python interface to my personal website, Erynwells.me.
'''
import argparse
import os
import os.path as osp
from typing import List
from erynwells_me.scripting import Command
from erynwells_me.weeknotes import WeeknotesCommand
from erynwells_me.deployment import DeploymentCommand
COMMANDS: List[Command] = [
WeeknotesCommand(),
DeploymentCommand(),
]
def parse_args(commands: List[Command], argv, *a, **kw):
parser = argparse.ArgumentParser(*a, **kw)
subcommands = parser.add_subparsers(title='Subcommands', required=True)
for command in commands:
subcommand_parser = subcommands.add_parser(command.name, help=command.help)
command.add_arguments(subcommand_parser)
args = parser.parse_args(argv)
return args
def main(argv):
program_name = osp.basename(argv[0])
args = parse_args(COMMANDS, argv[1:], prog=program_name)
scripts_dir = osp.dirname(__file__)
repo_root_dir = osp.normpath(osp.join(scripts_dir, '..'))
if os.getcwd() != repo_root_dir:
os.chdir(repo_root_dir)
return args.handler(args)
if __name__ == '__main__':
import sys
sys.exit(main(sys.argv))