@@ -218,18 +218,15 @@ def update_ver():
218
218
219
219
220
220
def collect_tasks (fname ):
221
- print (f"{ fname } :" )
222
-
221
+ tasks = list ()
223
222
file_ver = get_file_version (fname )
224
223
file_verstr = "." .join (str (v ) for v in file_ver )
225
224
lib_verstr = "." .join (str (v ) for v in nix .file .HDF_FF_VERSION )
226
225
if file_ver >= nix .file .HDF_FF_VERSION :
227
- print (f" Up to date ({ file_verstr } )" )
228
- return
226
+ return tasks , file_verstr , lib_verstr
229
227
230
228
# even if the version string indicates the file is old, check format
231
229
# details before scheduling tasks
232
- tasks = list ()
233
230
id_task = add_file_id (fname )
234
231
if id_task :
235
232
tasks .append (id_task )
@@ -245,11 +242,7 @@ def collect_tasks(fname):
245
242
# always update the format last
246
243
tasks .append (update_format_version (fname ))
247
244
248
- # print task list
249
- print (f" { file_verstr } -> { lib_verstr } " )
250
- print (" - " + "\n - " .join (t .__doc__ for t in tasks ) + "\n " )
251
-
252
- return tasks
245
+ return tasks , file_verstr , lib_verstr
253
246
254
247
255
248
def create_subcmd_parser (parser ):
@@ -260,12 +253,54 @@ def create_subcmd_parser(parser):
260
253
return parser
261
254
262
255
256
+ def print_tasks (fname , tasklist , fileversion , libversion ):
257
+ if len (tasklist ) == 0 :
258
+ print (f"File { fname } is up to date ({ fileversion } )" )
259
+ return
260
+ print (f"{ fname } : { fileversion } -> { libversion } " )
261
+ print (" - " + "\n - " .join (t .__doc__ for t in tasklist ) + "\n " )
262
+
263
+
264
+ def process_tasks (fname , tasklist , quiet = True ):
265
+ if not quiet :
266
+ print (f"Processing { fname } " , end = "" , flush = True )
267
+ for task in tasklist :
268
+ task ()
269
+ if not quiet :
270
+ print ("done" )
271
+
272
+
273
+ def file_upgrade (fname , quiet = True ):
274
+ """
275
+ Upgrades a file from an old format version to the current version.
276
+
277
+ :param fname: The fully qualified filename.
278
+ :type fname: str
279
+ :param quiet: Whether or not the upgrade tool should give feedback on the command line. Defaults to True, no output.
280
+ :type quiet: bool
281
+
282
+ :returns: True if the conversion succeeded, False otherwise, it the file does not need upgrading True is returned.
283
+ :rtype : bool
284
+ """
285
+ try :
286
+ tasklist , fileversion , libversion = collect_tasks (fname )
287
+ if not quiet :
288
+ print_tasks (fname , tasklist , fileversion , libversion )
289
+
290
+ process_tasks (fname , tasklist , quiet = quiet )
291
+ except Exception as e :
292
+ print (f"An Exception occurred while upgrading file { fname } . Error is { e } " )
293
+ return False
294
+ return True
295
+
296
+
263
297
def main (args ):
264
298
filenames = args .file
265
299
266
300
tasks = dict ()
267
301
for fname in filenames :
268
- tasklist = collect_tasks (fname )
302
+ tasklist , fileversion , libversion = collect_tasks (fname )
303
+ print_tasks (fname , tasklist , fileversion , libversion )
269
304
if not tasklist :
270
305
continue
271
306
@@ -296,7 +331,4 @@ def main(args):
296
331
297
332
if conf in ("y" , "yes" ):
298
333
for fname , tasklist in tasks .items ():
299
- print (f"Processing { fname } " , end = "" , flush = True )
300
- for task in tasklist :
301
- task ()
302
- print ("done" )
334
+ process_tasks (fname , tasklist , quiet = False )
0 commit comments