Skip to content

Commit 3793254

Browse files
author
Vladimir Kotal
committed
make config optional
1 parent 802929a commit 3793254

File tree

1 file changed

+35
-38
lines changed

1 file changed

+35
-38
lines changed

tools/sync/mirror.py

Lines changed: 35 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@
7878
parser.add_argument('project')
7979
parser.add_argument('-D', '--debug', action='store_true',
8080
help='Enable debug prints')
81-
parser.add_argument('-c', '--config', required=True,
81+
parser.add_argument('-c', '--config',
8282
help='config file in JSON/YAML format')
8383
parser.add_argument('-m', '--messages',
8484
help='path to the Messages binary')
@@ -95,18 +95,17 @@
9595

9696
logger = logging.getLogger(os.path.basename(sys.argv[0]))
9797

98-
config = read_config(logger, args.config)
99-
if config is None:
100-
logger.error("Cannot read config file from {}".format(args.config))
101-
sys.exit(1)
98+
if args.config:
99+
config = read_config(logger, args.config)
100+
if config is None:
101+
logger.error("Cannot read config file from {}".format(args.config))
102+
sys.exit(1)
103+
else:
104+
config = {}
102105

103106
# Make sure the log directory exists.
104-
try:
105-
logdir = config["logdir"]
106-
except:
107-
logger.error("'logdir' does not exist in configuration")
108-
sys.exit(1)
109-
else:
107+
logdir = config.get("logdir")
108+
if logdir:
110109
check_create_dir(logdir)
111110

112111
if args.messages:
@@ -129,28 +128,24 @@
129128
logger.debug("Source root = {}".format(source_root))
130129

131130
project_config = None
132-
try:
133-
projects = config['projects']
134-
if projects:
135-
if projects.get(args.project):
136-
project_config = projects.get(args.project)
137-
else:
138-
for proj in projects.keys():
139-
try:
140-
pattern = re.compile(proj)
141-
except re.error:
142-
logger.error("Not a valid regular expression: {}".
143-
format(proj))
144-
continue
145-
146-
if pattern.match(args.project):
147-
logger.debug("Project '{}' matched pattern '{}'".
148-
format(args.project, proj))
149-
project_config = projects.get(proj)
150-
break
151-
except KeyError:
152-
# The project has no config, that's fine - defaults will be used.
153-
pass
131+
projects = config.get('projects')
132+
if projects:
133+
if projects.get(args.project):
134+
project_config = projects.get(args.project)
135+
else:
136+
for proj in projects.keys():
137+
try:
138+
pattern = re.compile(proj)
139+
except re.error:
140+
logger.error("Not a valid regular expression: {}".
141+
format(proj))
142+
continue
143+
144+
if pattern.match(args.project):
145+
logger.debug("Project '{}' matched pattern '{}'".
146+
format(args.project, proj))
147+
project_config = projects.get(proj)
148+
break
154149

155150
hookdir = config.get('hookdir')
156151
if hookdir:
@@ -236,6 +231,9 @@
236231

237232
# Log messages to dedicated log file if running in batch mode.
238233
if args.batch:
234+
if not logdir:
235+
logger.error("The logdir property is required in batch mode")
236+
sys.exit(1)
239237
logfile = os.path.join(logdir, args.project + ".log")
240238
logger.debug("Switching logging to the {} file".
241239
format(logfile))
@@ -274,11 +272,11 @@
274272
args.project + "-mirror.lock"))
275273
try:
276274
with lock.acquire(timeout=0):
275+
proxy = config.get('proxy') if use_proxy else None
277276
if prehook:
278277
logger.info("Running pre hook")
279278
if run_hook(logger, prehook,
280-
os.path.join(source_root, args.project),
281-
config['proxy'] if use_proxy else None,
279+
os.path.join(source_root, args.project), proxy,
282280
hook_timeout) != 0:
283281
logger.error("pre hook failed")
284282
logging.shutdown()
@@ -308,7 +306,7 @@
308306
repo_type,
309307
args.project,
310308
config.get('commands'),
311-
config['proxy'] if use_proxy else None,
309+
proxy,
312310
None,
313311
command_timeout)
314312
if not repo:
@@ -326,8 +324,7 @@
326324
if posthook:
327325
logger.info("Running post hook")
328326
if run_hook(logger, posthook,
329-
os.path.join(source_root, args.project),
330-
config['proxy'] if use_proxy else None,
327+
os.path.join(source_root, args.project), proxy,
331328
hook_timeout) != 0:
332329
logger.error("post hook failed")
333330
logging.shutdown()

0 commit comments

Comments
 (0)