2026-01-09 12:31:48 +00:00
|
|
|
"""Entry point for Bowser browser."""
|
2026-01-09 11:20:46 +00:00
|
|
|
|
2026-01-09 12:31:48 +00:00
|
|
|
import argparse
|
|
|
|
|
import logging
|
2026-01-09 11:20:46 +00:00
|
|
|
from src.browser.browser import Browser
|
|
|
|
|
|
|
|
|
|
|
2026-01-09 12:31:48 +00:00
|
|
|
def _parse_args():
|
|
|
|
|
parser = argparse.ArgumentParser(prog="bowser", description="Bowser educational browser")
|
2026-01-09 13:24:01 +00:00
|
|
|
parser.add_argument("url", nargs="?", default=None, help="URL to open (optional, defaults to startpage)")
|
2026-01-09 12:31:48 +00:00
|
|
|
parser.add_argument("--debug", action="store_true", help="Enable debug output (alias for --log-level=DEBUG)")
|
|
|
|
|
parser.add_argument(
|
|
|
|
|
"--log-level",
|
|
|
|
|
choices=["ERROR", "WARNING", "INFO", "DEBUG"],
|
|
|
|
|
default="INFO",
|
|
|
|
|
help="Set logging level",
|
|
|
|
|
)
|
|
|
|
|
return parser.parse_args()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def _configure_logging(args):
|
|
|
|
|
level = logging.DEBUG if args.debug else getattr(logging, args.log_level)
|
|
|
|
|
logging.basicConfig(
|
|
|
|
|
level=level,
|
|
|
|
|
format="%(asctime)s %(name)s %(levelname)s: %(message)s",
|
|
|
|
|
datefmt="%H:%M:%S",
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
2026-01-09 11:20:46 +00:00
|
|
|
def main():
|
2026-01-09 12:31:48 +00:00
|
|
|
args = _parse_args()
|
|
|
|
|
_configure_logging(args)
|
|
|
|
|
|
2026-01-09 11:20:46 +00:00
|
|
|
browser = Browser()
|
2026-01-11 22:17:23 +00:00
|
|
|
|
|
|
|
|
# Enable debug mode in chrome if --debug flag is set
|
|
|
|
|
if args.debug:
|
|
|
|
|
browser.chrome.debug_mode = True
|
|
|
|
|
|
2026-01-09 13:24:01 +00:00
|
|
|
# If no URL provided, use startpage
|
|
|
|
|
url = args.url if args.url else "about:startpage"
|
|
|
|
|
browser.new_tab(url)
|
2026-01-09 11:20:46 +00:00
|
|
|
browser.run()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
|
main()
|