7
7
"""
8
8
9
9
# Standard library
10
+ import argparse
10
11
import logging
11
12
import sys
12
13
import traceback
@@ -35,11 +36,47 @@ def __init__(self, message, code=None):
35
36
super (ScriptError , self ).__init__ (message )
36
37
37
38
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
+
38
58
def get_cc_repos (github ):
39
59
cc = get_cc_organization (github )
40
60
return cc .get_repos ()
41
61
42
62
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
+
43
80
def set_repo_labels (repos ):
44
81
logger .log (logging .INFO , "Syncing labels..." )
45
82
set_labels (repos , * get_labels ())
@@ -87,9 +124,9 @@ def update_branches(repos):
87
124
88
125
89
126
def main ():
127
+ args = setup ()
90
128
logger .log (logging .INFO , "Starting normalization" )
91
- github = set_up_github_client ()
92
- repos = get_cc_repos (github )
129
+ repos = get_select_repos (args )
93
130
set_repo_labels (repos )
94
131
update_branches (repos )
95
132
@@ -108,6 +145,6 @@ def main():
108
145
sys .exit (error_value .code )
109
146
except Exception :
110
147
logger .log (
111
- logging .ERROR , "Unhandled exception: {traceback.print_exc ()}"
148
+ logging .ERROR , f "Unhandled exception: { traceback .format_exc ()} "
112
149
)
113
150
sys .exit (1 )
0 commit comments