56 lines
1.6 KiB
Python
56 lines
1.6 KiB
Python
"""CLI entry point: `python -m jobsource.main`.
|
|
|
|
Scaffold stub. Argument parsing is wired so `--help` works; the actual batch
|
|
run lands in a later step (see jobsource/pipeline.py). Imports only stdlib so
|
|
`--help` works before the heavier dependencies are installed.
|
|
"""
|
|
from __future__ import annotations
|
|
|
|
import argparse
|
|
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)
|
|
print("jobsource: scaffold stub -- pipeline not implemented yet.", file=sys.stderr)
|
|
print(f"parsed args: {vars(args)}", file=sys.stderr)
|
|
return 0
|
|
|
|
|
|
if __name__ == "__main__":
|
|
raise SystemExit(main())
|