#!/usr/bin/env python3 """ Get an Azure DevOps token and print it in a format suitable for exporting as an environment variable. Usage: eval $(python get-token.py) or python get-token.py > set-ado-token.sh source set-ado-token.sh Now you can use the ADO_TOKEN environment variable, for example using curl: curl -sH "Authorization: Bearer $ADO_TOKEN" "https://dev.azure.com/$ADO_ORGANIZATION_URL/_apis/projects?api-version=7.1" """ from sk.azure import get_token from argparse import ArgumentParser import os args = ArgumentParser(description="Get Azure DevOps token and print it for exporting as environment variable.") args.add_argument("--tenant-id", type=str, default=os.getenv("AZURE_TENANT_ID"), help="Azure AD Tenant ID") args.add_argument("--client-id", type=str, default=os.getenv("AZURE_CLIENT_ID"), help="Azure AD Client ID") args.add_argument("--pem-path", type=str, default=os.getenv("AZURE_CLIENT_CERTIFICATE_PATH"), help="Path to PEM file for authentication (optional)") args.add_argument("--client-secret", type=str, default=os.getenv("AZURE_CLIENT_SECRET"), help="Client Secret for authentication (optional)") args = args.parse_args() if not args.tenant_id or not args.client_id: print("Tenant ID and Client ID are required.") exit(1) if args.pem_path and os.path.isfile(args.pem_path): token = get_token( tenant_id=args.tenant_id, client_id=args.client_id, pem_path=args.pem_path ) elif args.client_secret: if not args.client_secret: print("Client secret file is empty.") exit(1) token = get_token( tenant_id=args.tenant_id, client_id=args.client_id, client_secret=args.client_secret ) else: token = get_token( tenant_id=args.tenant_id, client_id=args.client_id ) print(f"export ADO_TOKEN='{token}'")