#!/usr/bin/env python3
"""Create a company markdown file with the next available ID."""
from __future__ import annotations
import argparse
import sys
from pathlib import Path
sys.path.insert(0, str(Path(__file__).resolve().parent))
from common import ( # noqa: E402
COMPANIES_DIR,
COMPANY_STATUSES,
find_company_by_name,
load_entities,
next_id,
normalize_name,
run_sync_indexes,
slugify,
today_str,
write_markdown,
REPO_ROOT,
die,
)
def build_body() -> str:
return "\n".join(
[
"# Why target",
"",
"# Relevant projects to mention",
"",
"# Open questions",
"",
]
)
def main() -> None:
parser = argparse.ArgumentParser(description="Create a new company file.")
parser.add_argument("--name", required=True, help="Company name")
parser.add_argument("--website", default="", help="Company website")
parser.add_argument("--careers-url", default="", help="Careers page URL")
parser.add_argument("--domain", default="", help="Business domain")
parser.add_argument("--location", default="", help="HQ location")
parser.add_argument("--stage", default="", help="Company stage")
parser.add_argument(
"--status",
default="target",
choices=sorted(COMPANY_STATUSES),
help="Company status",
)
parser.add_argument("--priority", type=int, default=3, help="Priority 1-5")
parser.add_argument(
"--force",
action="store_true",
help="Allow duplicate company names",
)
args = parser.parse_args()
if not (1 <= args.priority <= 5):
die("priority must be between 1 and 5")
existing = find_company_by_name(args.name)
if existing and not args.force:
path, meta, _ = existing
die(f"Company already exists: {meta['id']} ({path.name}). Use --force to create anyway.")
companies = load_entities(COMPANIES_DIR)
company_id = next_id("CO", 4, companies)
slug = slugify(args.name)
path = COMPANIES_DIR / f"{company_id}-{slug}.md"
if path.exists():
die(f"File already exists: {path}")
today = today_str()
meta = {
"id": company_id,
"name": args.name,
"website": args.website,
"careers_url": args.careers_url,
"linkedin_url": "",
"x_url": "",
"github_url": "",
"location": args.location,
"stage": args.stage,
"domain": args.domain,
"status": args.status,
"priority": args.priority,
"date_added": today,
"date_updated": today,
"contacts": [],
"leads": [],
"notes": "",
}
write_markdown(path, meta, build_body())
print(f"Created {path.relative_to(REPO_ROOT)}")
run_sync_indexes()
if __name__ == "__main__":
main()