From d0e905285691d73f2cf7e45a88dbadf631620f0a Mon Sep 17 00:00:00 2001 From: Alex Schofield Date: Sun, 3 May 2026 18:31:26 +0100 Subject: move all logic into fnme folder --- fnme/cli.py | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) (limited to 'fnme/cli.py') diff --git a/fnme/cli.py b/fnme/cli.py index e69de29..d93d9f4 100644 --- a/fnme/cli.py +++ b/fnme/cli.py @@ -0,0 +1,59 @@ +import argparse +import sys +from typing import Any, Dict, List + +from constants import SORT_KV +from data import get_latest_data +from geo import get_location +from station import filter_df, sort_stations +from tabulate import tabulate + + +def parse_args() -> argparse.Namespace: + parser = argparse.ArgumentParser() + parser.add_argument("-a", "--address", type=str, required=True) + parser.add_argument("-r", "--radius", type=int, default=5) + parser.add_argument("-s", "--sort", type=str, default="e10", choices=SORT_KV.keys()) + return parser.parse_args() + + +def output_stations(stations: List[Dict[str, Any]]) -> None: + if not stations: + print("[*] No stations found.") + return + print( + tabulate( + stations, + headers={ + "station_name": "Station Name", + "distance": "Distance (miles)", + "e5_price": "E5 (£/L)", + "e10_price": "E10 (£/L)", + "diesel_price": "B7S (£/L)", + }, + floatfmt=".2f", + ) + ) + + +def main(): + args = parse_args() + + try: + location = get_location(args.address) + except ValueError as e: + print(f"[*] {e}") + sys.exit(1) + df, last_modified = get_latest_data() + + print(f"Last updated: {last_modified}") + + df_filtered = filter_df(df, args, location) + + sorted_stations_list = sort_stations(df_filtered, args.sort) + + output_stations(sorted_stations_list) + + +if __name__ == "__main__": + main() -- cgit v1.2.3