-
Notifications
You must be signed in to change notification settings - Fork 84
/
python.py
60 lines (45 loc) · 1.68 KB
/
python.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# Copyright 2018 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import json
import os
from autosynth import github
def _get_repo_list_from_sloth(gh):
contents = gh.get_contents("googleapis/sloth", "repos.json")
repos = json.loads(contents)["repos"]
return repos
def _is_python_synth_repo(gh, repo):
"""Finds Python repositories with synth files in the top-level directory."""
# Only python repos.
if repo["language"] != "python":
return False
# No private repos.
if "private" in repo["repo"]:
return False
# Only repos with a synth.py in the top-level directory.
if not gh.check_for_file(repo["repo"], "synth.py"):
return False
return True
def list_repositories():
"""Finds repositories with a `synth.py` in the top-level"""
gh = github.GitHub(os.environ["GITHUB_TOKEN"])
repos = _get_repo_list_from_sloth(gh)
repos = [repo for repo in repos if _is_python_synth_repo(gh, repo)]
repo_list = [
{"name": repo["repo"].split("/")[-1], "repository": repo["repo"]}
for repo in repos
]
return repo_list
if __name__ == "__main__":
import yaml
print(yaml.dump(list_repositories()))