public override async Task ExecuteAsync() { LoggerService.WriteHeading("COPYING IMAGES"); IEnumerable <ManifestInfo> manifests; string fullRegistryName; if (Options.SubscriptionOptions.SubscriptionsPath is null) { manifests = new ManifestInfo[] { Manifest }; fullRegistryName = Manifest.Registry; } else { if (Options.RegistryOverride is null) { throw new InvalidOperationException($"{Options.RegistryOverride} must be set."); } manifests = (await SubscriptionHelper.GetSubscriptionManifestsAsync( Options.SubscriptionOptions.SubscriptionsPath, Options.FilterOptions, _httpClient, LoggerService, options => options.RegistryOverride = Options.RegistryOverride)) .Select(subscriptionManifest => subscriptionManifest.Manifest); fullRegistryName = Options.RegistryOverride; } IEnumerable <Task> copyImageTasks = manifests .SelectMany(manifest => GetFromImages(manifest)) .Distinct() .Select(fromImage => CopyImageAsync(fromImage, GetBaseRegistryName(fullRegistryName))); await Task.WhenAll(copyImageTasks); }