Files
JobSourceAgent/jobsource/main.py
2026-06-18 00:32:26 -04:00

77 lines
2.3 KiB
Python

"""CLI entry point: ``python -m jobsource.main``.
Parses arguments and delegates to :func:`~jobsource.pipeline.run_batch`.
All heavy imports are deferred past the argument parse so ``--help`` exits
immediately with no dependency overhead.
Usage examples::
python -m jobsource.main --help
python -m jobsource.main --batch-size 20 --search "software engineer" --location "United States"
python -m jobsource.main --search "data engineer" --search "ML engineer" --hours-old 48
"""
from __future__ import annotations
import argparse
import logging
import sys
def build_parser() -> argparse.ArgumentParser:
parser = argparse.ArgumentParser(
prog="python -m jobsource.main",
description=(
"AI Job Source Agent -- emit company_name, career_page_url, "
"open_position_url for recently posted LinkedIn jobs."
),
)
parser.add_argument(
"--batch-size",
type=int,
default=None,
help="Number of new jobs to process this run (default from config).",
)
parser.add_argument(
"--search",
action="append",
metavar="TERM",
help="Search term; repeatable. Overrides config search terms.",
)
parser.add_argument(
"--location",
default=None,
help="Job location filter (default from config).",
)
parser.add_argument(
"--hours-old",
type=int,
default=None,
help="Only jobs posted within this many hours (default from config).",
)
return parser
def main(argv: list[str] | None = None) -> int:
args = build_parser().parse_args(argv)
# Configure root logger so pipeline/cascade INFO and WARNING messages are
# visible on the terminal. Deferred past parse_args so --help stays instant.
logging.basicConfig(
level=logging.INFO,
format="%(asctime)s %(levelname)-8s %(name)s: %(message)s",
datefmt="%H:%M:%S",
)
from jobsource.pipeline import run_batch # deferred: keeps --help fast before heavy deps
run_batch(
batch_size=args.batch_size,
search_terms=args.search, # None or list[str] from --search repeats
location=args.location,
hours_old=args.hours_old,
)
return 0
if __name__ == "__main__":
raise SystemExit(main())