protected override void Init(IDictionary <string, string> arguments, CancellationToken cancellationToken) { PrintLightning(); // Hard code against Azure storage. arguments[Arguments.StorageType] = Arguments.AzureStorageType; // Configure the package path provider. var useFlatContainerAsPackageContent = arguments.GetOrDefault <bool>(Arguments.ContentIsFlatContainer, false); if (!useFlatContainerAsPackageContent) { RegistrationMakerCatalogItem.PackagePathProvider = new PackagesFolderPackagePathProvider(); } else { var flatContainerName = arguments.GetOrThrow <string>(Arguments.FlatContainerName); RegistrationMakerCatalogItem.PackagePathProvider = new FlatContainerPackagePathProvider(flatContainerName); } _command = arguments.GetOrThrow <string>(Arguments.Command); _verbose = arguments.GetOrDefault(Arguments.Verbose, false); _log = _verbose ? Console.Out : new StringWriter(); _contentBaseAddress = arguments.GetOrThrow <string>(Arguments.ContentBaseAddress); _galleryBaseAddress = arguments.GetOrThrow <string>(Arguments.GalleryBaseAddress); _storageFactories = CommandHelpers.CreateRegistrationStorageFactories(arguments, _verbose); _shouldIncludeSemVer2 = RegistrationCollector.GetShouldIncludeRegistrationPackage(_storageFactories.SemVer2StorageFactory); // We save the arguments because the "prepare" command generates "strike" commands. Some of the arguments // used by "prepare" should be used when executing "strike". _arguments = arguments; switch (_command.ToLowerInvariant()) { case "charge": case "prepare": InitPrepare(arguments); break; case "strike": InitStrike(arguments); break; default: throw new NotSupportedException($"The lightning command '{_command}' is not supported."); } }