"""Generate the OAuth client info JSON for mcp-remote from keyring secrets.
Run this once (or after rotating secrets) to create configs/asana-oauth-client.json.
The generated file is gitignored and never committed.
"""
import json
import sys
from pathlib import Path
import keyring
OUTPUT = Path(__file__).resolve().parents[1] / "configs" / "asana-oauth-client.json"
def main() -> None:
client_id = keyring.get_password("asana-mcp", "client_id")
client_secret = keyring.get_password("asana-mcp", "client_secret")
if not client_id:
client_id = input("Client ID not in keyring. Enter Client ID: ").strip()
if client_id:
keyring.set_password("asana-mcp", "client_id", client_id)
if not client_secret:
client_secret = input("Client Secret not in keyring. Enter Client Secret: ").strip()
if client_secret:
keyring.set_password("asana-mcp", "client_secret", client_secret)
if not client_id or not client_secret:
print("ERROR: Both Client ID and Client Secret are required.", file=sys.stderr)
sys.exit(1)
data = {"client_id": client_id, "client_secret": client_secret}
OUTPUT.parent.mkdir(parents=True, exist_ok=True)
OUTPUT.write_text(json.dumps(data, indent=2), encoding="utf-8")
print(f"OAuth client config written to: {OUTPUT}")
print("This file is gitignored. Do NOT commit it.")
if __name__ == "__main__":
main()