Skip to content

Commit 5ac0c64

Browse files
committed
add -h and -r options. fix exception handling
1 parent 230c35a commit 5ac0c64

File tree

1 file changed

+40
-3
lines changed

1 file changed

+40
-3
lines changed

normalize_repos/normalize_repos.py

Lines changed: 40 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
"""
88

99
# Standard library
10+
import argparse
1011
import logging
1112
import sys
1213
import traceback
@@ -35,11 +36,47 @@ def __init__(self, message, code=None):
3536
super(ScriptError, self).__init__(message)
3637

3738

39+
def setup():
40+
"""Instantiate and configure argparse and logging.
41+
42+
Return argsparse namespace.
43+
"""
44+
ap = argparse.ArgumentParser(description=__doc__)
45+
ap.add_argument(
46+
"-r",
47+
"--repo",
48+
"--repository",
49+
action="append",
50+
help="repository or repositories to update (instead of fetching"
51+
" repositories from GitHub)",
52+
dest="repos",
53+
)
54+
args = ap.parse_args()
55+
return args
56+
57+
3858
def get_cc_repos(github):
3959
cc = get_cc_organization(github)
4060
return cc.get_repos()
4161

4262

63+
def get_select_repos(args):
64+
github = set_up_github_client()
65+
repos = list(get_cc_repos(github))
66+
if args.repos:
67+
repos_selected = []
68+
for repo in repos:
69+
if repo.name in args.repos:
70+
repos_selected.append(repo)
71+
repos = repos_selected
72+
if not repos:
73+
raise ScriptError(
74+
"Specified repositories do not include any valid"
75+
f" repositories: {args.repos}")
76+
repos.sort(key=lambda repo: repo.name)
77+
return repos
78+
79+
4380
def set_repo_labels(repos):
4481
logger.log(logging.INFO, "Syncing labels...")
4582
set_labels(repos, *get_labels())
@@ -87,9 +124,9 @@ def update_branches(repos):
87124

88125

89126
def main():
127+
args = setup()
90128
logger.log(logging.INFO, "Starting normalization")
91-
github = set_up_github_client()
92-
repos = get_cc_repos(github)
129+
repos = get_select_repos(args)
93130
set_repo_labels(repos)
94131
update_branches(repos)
95132

@@ -108,6 +145,6 @@ def main():
108145
sys.exit(error_value.code)
109146
except Exception:
110147
logger.log(
111-
logging.ERROR, "Unhandled exception: {traceback.print_exc()}"
148+
logging.ERROR, f"Unhandled exception: {traceback.format_exc()}"
112149
)
113150
sys.exit(1)

0 commit comments

Comments
 (0)