From 578c5423088f7d75c631db6969b4d0c51af84e05 Mon Sep 17 00:00:00 2001 From: a <4184070+MrCurtis@users.noreply.github.com> Date: Tue, 30 Jan 2024 22:02:58 +0000 Subject: [PATCH] Add the command line command --- src/fk_graph/cli.py | 32 +++++++++++++++++++++++++++++--- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/src/fk_graph/cli.py b/src/fk_graph/cli.py index 365d5f7..491342e 100644 --- a/src/fk_graph/cli.py +++ b/src/fk_graph/cli.py @@ -1,10 +1,36 @@ +from argparse import ArgumentParser + from sqlalchemy import create_engine from fk_graph import setup_data, get_graph from fk_graph.plotly_functions import run_app def main(): - engine = create_engine("sqlite+pysqlite:///:memory:") - setup_data(engine) - graph = get_graph(engine, "table_a", 1) + args = _parse_args() + if args.demo: + engine = create_engine("sqlite+pysqlite:///:memory:") + setup_data(engine) + elif args.connection_string: + engine = create_engine(args.connection_string) + graph = get_graph(engine, args.table, args.primary_key) run_app(graph) + +def _parse_args(): + parser = ArgumentParser( + prog="fk-graph", + description="Visualise the graphs hidden within relational databases.", + + ) + parser.add_argument("--demo", action="store_true") + parser.add_argument("--connection-string") + parser.add_argument("--table", required=True) + parser.add_argument("--primary-key", required=True) + args = parser.parse_args() + if ( + (not args.demo and args.connection_string is None) + or + (args.demo and args.connection_string is not None) + ): + parser.error( + "Exactly one of --demo and --connection-string should be used.") + return args