diff --git a/console/__init__.py b/console/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/console/__main__.py b/console/__main__.py new file mode 100644 index 0000000..c349491 --- /dev/null +++ b/console/__main__.py @@ -0,0 +1,7 @@ +""" +Allow running the package with: python -m console +""" + +from console.main import main + +main() diff --git a/console/config.py b/console/config.py new file mode 100644 index 0000000..0fe7838 --- /dev/null +++ b/console/config.py @@ -0,0 +1,39 @@ +""" +Configuration settings for the AUTOPARTES console application. +""" + +import os + +# Application metadata +VERSION = "1.0.0" +APP_NAME = "AUTOPARTES" +APP_SUBTITLE = "Sistema de Catalogo de Autopartes" + +# Database path (relative to the console/ directory, resolved to absolute) +_CONSOLE_DIR = os.path.dirname(os.path.abspath(__file__)) +DB_PATH = os.path.join(_CONSOLE_DIR, "..", "vehicle_database", "vehicle_database.db") +DB_PATH = os.path.normpath(DB_PATH) + +# NHTSA VIN Decoder API +NHTSA_API_URL = "https://vpic.nhtsa.dot.gov/api/vehicles/DecodeVin" +VIN_CACHE_DAYS = 30 + +# Display defaults +DEFAULT_MODE = "vt220" +PAGE_SIZE = 15 + +# VT220 color pairs: (foreground, background) +# These map to curses color pair indices used by the renderer. +COLORS_VT220 = { + "header": ("green", "black"), + "footer": ("black", "green"), + "normal": ("green", "black"), + "highlight": ("black", "green"), + "border": ("green", "black"), + "title": ("white", "black"), + "error": ("red", "black"), + "info": ("cyan", "black"), + "field_label": ("green", "black"), + "field_value": ("white", "black"), + "field_active": ("black", "cyan"), +} diff --git a/console/core/__init__.py b/console/core/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/console/main.py b/console/main.py new file mode 100644 index 0000000..72efeb0 --- /dev/null +++ b/console/main.py @@ -0,0 +1,65 @@ +""" +Entry point for the AUTOPARTES Pick/VT220-style console application. + +Usage: + python -m console # via package + python -m console.main # via module + python console/main.py # direct +""" + +import argparse +import sys + +from console.config import VERSION, APP_NAME, APP_SUBTITLE, DB_PATH, DEFAULT_MODE + + +def parse_args(argv=None): + """Parse command-line arguments.""" + parser = argparse.ArgumentParser( + prog=APP_NAME.lower(), + description=f"{APP_NAME} - {APP_SUBTITLE}", + ) + parser.add_argument( + "--mode", + choices=["vt220", "modern"], + default=DEFAULT_MODE, + help=f"Display mode (default: {DEFAULT_MODE})", + ) + parser.add_argument( + "--version", + action="version", + version=f"{APP_NAME} {VERSION}", + ) + parser.add_argument( + "--db", + default=DB_PATH, + help="Path to the vehicle database (default: auto-detected)", + ) + return parser.parse_args(argv) + + +def main(argv=None): + """Main entry point: parse args, set up renderer, DB, and launch the app.""" + args = parse_args(argv) + + db_path = args.db + mode = args.mode + + # Lazy imports so the module can be loaded without curses available + # (e.g. during tests or when just checking --version). + from console.core.database import Database + from console.renderers import create_renderer + from console.core.app import App + + db = Database(db_path) + renderer = create_renderer(mode) + app = App(renderer=renderer, db=db) + + try: + app.run() + finally: + db.close() + + +if __name__ == "__main__": + main() diff --git a/console/renderers/__init__.py b/console/renderers/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/console/screens/__init__.py b/console/screens/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/console/tests/__init__.py b/console/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/console/utils/__init__.py b/console/utils/__init__.py new file mode 100644 index 0000000..e69de29