diff --git a/example/aitf-data-for-run b/example/aitf-data-for-run index ad97e0dc964547e7bec738fbad5b095d3b16612e..3478132078d9c85235d4532cf21a07cef6080e4f 100755 --- a/example/aitf-data-for-run +++ b/example/aitf-data-for-run @@ -53,11 +53,11 @@ def parse_args(): metavar='DATE', help='scan time ancillary data is needed for') - ap.add_argument('destination', type=arg_directory, + ap.add_argument('destination', type=arg_directory, nargs='+', metavar='FINAL_PATH', - help='write required files here, possibly as symbolic links') + help='write symbolic links to required files here (actual files may be placed in the first destination provided)') - add_cache_dir_arg(ap) + add_cache_dir_arg(ap, '--cache') ap.add_argument('--cache-only', action='store_true', help='do not download; only use files already in cache') @@ -89,10 +89,10 @@ def main(): aitf.conlog.setup_logging() args = parse_args() - cache_dir = args.dir + cache_dir = args.cache if not os.access(cache_dir, os.W_OK): - logging.warning(f'I do not appear to be able to have write access to "{cache_dir}". Downloading directly into {args.destination}') - args.dir = args.destination + logging.warning(f'I do not appear to be able to have write access to "{cache_dir}". Downloading directly into {args.destination[0]}') + args.cache = args.destination[0] do_download = not args.cache_only @@ -100,29 +100,30 @@ def main(): logging.progress("Acquiring SST") sststats = aitf.ancil.SST.DownloadStatistics() - sst_files = aitf.ancil.SST.download_for_time(args.scan_time, args.dir, do_download = do_download, download_stats = sststats) + sst_files = aitf.ancil.SST.download_for_time(args.scan_time, args.cache, do_download = do_download, download_stats = sststats) log_download_report("SST Download Summary", sststats) # using SST instead of GFS to show that # DownloadStatistics are interchangable. logging.progress("Acquiring GFS") gfsstats = aitf.ancil.SST.DownloadStatistics() - gfs_files = aitf.ancil.GFS.download_for_time(args.scan_time, args.dir, do_download = do_download, download_stats = sststats) + gfs_files = aitf.ancil.GFS.download_for_time(args.scan_time, args.cache, do_download = do_download, download_stats = sststats) log_download_report("GFS Download Summary", gfsstats) log_download_report("Total Download Summary", sststats + gfsstats) logging.progress("Symbolically linking into place") all_files = list(sst_files) + list(gfs_files) - for file in all_files: - f = os.path.relpath(file, args.dir) - src = os.path.join(args.dir, f) - dst = hack_oisst_preliminary_filename(os.path.join(args.destination, f)) - dst_dir = os.path.dirname(dst) - os.makedirs(dst_dir, exist_ok=True) - logging.info(src + ' -> ' + dst) - if src != dst: - os.symlink(src, dst) + for destination in args.destination: + for file in all_files: + f = os.path.relpath(file, args.cache) + src = os.path.join(args.cache, f) + dst = hack_oisst_preliminary_filename(os.path.join(destination, f)) + dst_dir = os.path.dirname(dst) + os.makedirs(dst_dir, exist_ok=True) + logging.info(src + ' -> ' + dst) + if src != dst: # src==dst if we set args.cache to args.destination[0] + os.symlink(src, dst) except csppfetch.DownloadsFailedException as e: logging.fatal(str(e))