55 lines
1.8 KiB
Python
Executable File
55 lines
1.8 KiB
Python
Executable File
#!/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 devops.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}'")
|