Skip to content

Instantly share code, notes, and snippets.

@myoung34
Last active September 14, 2021 21:00
Show Gist options
  • Save myoung34/55854b4237dc4199afd27661230bf086 to your computer and use it in GitHub Desktop.
Save myoung34/55854b4237dc4199afd27661230bf086 to your computer and use it in GitHub Desktop.
travis env var crawler
import os
import sys
from typing import List
import math
import requests
if len(sys.argv) == 1:
print('Usage: \n travis.py orgname')
exit(1)
ORGNAME = sys.argv[1]
travis_token = os.environ["TRAVIS_TOKEN"]
REPOS_URL = f"https://api.travis-ci.com/owner/{ORGNAME}/repos"
import requests
req_headers = {"authorization": f"token {travis_token}", "Travis-API-Version": "3"}
def get_page_count():
response = requests.get(
url=REPOS_URL,
params={
"private": "false",
"sort_by": "default_branch.last_build",
},
headers=req_headers,
)
response.raise_for_status()
resp = response.json()
return math.floor(resp.get("@pagination")['count']/100)
def get_repos_by_page(offset):
response = requests.get(
url=REPOS_URL,
params={
"private": "false",
"sort_by": "default_branch.last_build",
"offset": offset,
},
headers=req_headers,
)
response.raise_for_status()
j = response.json()
return j.get("repositories")
def get_vars_for_repo(repo_id: int) -> List[str]:
response = requests.get(
f"https://api.travis-ci.com/repo/github/{repo_id}/env_vars", headers=req_headers
)
response.raise_for_status()
return [e["name"] for e in response.json()["env_vars"]]
repos = []
for page_offset in range(0,(get_page_count()*100+100),100):
[repos.append({'id': repo['id'], 'name': repo['name']}) for repo in get_repos_by_page(page_offset)]
for repo in repos:
var_names = get_vars_for_repo(repo["id"])
if var_names:
print("\n".join([f'- {repo["name"]}', *[f" - {v}" for v in var_names]]))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment