Add CLI arguments

This commit is contained in:
2022-07-10 22:21:48 +02:00
parent 6222214a89
commit 577ad61cf2

View File

@@ -2,9 +2,11 @@
# from bottle import hook, request, route, run, static_file, view
from argparse import ArgumentParser
from datetime import date
from models import Price, IntegrityError
import requests
import json
@@ -43,10 +45,46 @@ def store_current_price():
return price
def main():
print(get_price())
# ----------------------------------------------------------------------
# Argument parsing
# use a decorator to simplify argparse usage, as suggested by
# https://mike.depalatis.net/blog/simplifying-argparse.html
cli = ArgumentParser(description="Balises")
subparsers = cli.add_subparsers(dest="subcommand")
def subcommand(args=[], parent=subparsers):
def decorator(func):
parser = parent.add_parser(func.__name__, description=func.__doc__)
for arg in args:
parser.add_argument(*arg[0], **arg[1])
parser.set_defaults(func=func)
return decorator
@subcommand()
def update(args):
store_current_price()
@subcommand()
def show(args):
print(get_price())
# ----------------------------------------------------------------------
# Main
def main():
args = cli.parse_args()
if args.subcommand is None:
cli.print_help()
else:
args.func(args)
if __name__ == "__main__":
main()