/// <summary> /// Returns true if the <see cref="ILibraryInstallationState"/> is valid. /// </summary> /// <param name="state">The state to test.</param> /// <param name="errors">The errors contained in the <see cref="ILibraryInstallationState"/> if any.</param> /// <returns> /// <c>true</c> if the specified state is valid; otherwise, <c>false</c>. /// </returns> public static bool IsValid(this ILibraryInstallationState state, out IEnumerable <IError> errors) { errors = null; var list = new List <IError>(); if (state == null) { return(false); } if (string.IsNullOrEmpty(state.ProviderId)) { list.Add(PredefinedErrors.ProviderIsUndefined()); } if (string.IsNullOrEmpty(state.DestinationPath)) { list.Add(PredefinedErrors.PathIsUndefined()); } if (string.IsNullOrEmpty(state.LibraryId)) { list.Add(PredefinedErrors.LibraryIdIsUndefined()); } errors = list; return(list.Count == 0); }
/// <summary> /// Expands the files property for each library /// </summary> /// <param name="libraries"></param> /// <param name="dependencies"></param> /// <param name="defaultDestination"></param> /// <param name="defaultProvider"></param> /// <param name="cancellationToken"></param> /// <returns></returns> private static async Task <IEnumerable <ILibraryOperationResult> > ExpandLibrariesAsync( IEnumerable <ILibraryInstallationState> libraries, IDependencies dependencies, string defaultDestination, string defaultProvider, CancellationToken cancellationToken) { List <ILibraryOperationResult> expandedLibraries = new List <ILibraryOperationResult>(); foreach (ILibraryInstallationState library in libraries) { cancellationToken.ThrowIfCancellationRequested(); string installDestination = string.IsNullOrEmpty(library.DestinationPath) ? defaultDestination : library.DestinationPath; string providerId = string.IsNullOrEmpty(library.ProviderId) ? defaultProvider : library.ProviderId; IProvider provider = dependencies.GetProvider(providerId); if (provider == null) { return(new[] { LibraryOperationResult.FromError(PredefinedErrors.ProviderIsUndefined()) }); } ILibraryOperationResult desiredState = await provider.UpdateStateAsync(library, cancellationToken); if (!desiredState.Success) { return(new[] { desiredState }); } expandedLibraries.Add(desiredState); } return(expandedLibraries); }
public void Predefined() { TestError(PredefinedErrors.UnknownException(), "LIB000"); TestError(PredefinedErrors.ProviderUnknown("_prov_"), "LIB001", "_prov_"); TestError(PredefinedErrors.UnableToResolveSource("_libid_", "_prov_"), "LIB002", "_libid_", "_prov_"); TestError(PredefinedErrors.CouldNotWriteFile("file.js"), "LIB003", "file.js"); TestError(PredefinedErrors.ManifestMalformed(), "LIB004"); TestError(PredefinedErrors.PathIsUndefined(), "LIB005"); TestError(PredefinedErrors.LibraryIdIsUndefined(), "LIB006"); TestError(PredefinedErrors.ProviderIsUndefined(), "LIB007"); }
/// <summary> /// Validates <see cref="ILibraryInstallationState"/> /// </summary> /// <param name="state">The <see cref="ILibraryInstallationState"/> to validate.</param> /// <param name="dependencies">The <see cref="IDependencies"/> used to validate <see cref="ILibraryInstallationState"/></param> /// <returns><see cref="ILibraryOperationResult"/> with the result of the validation</returns> public static async Task <ILibraryOperationResult> IsValidAsync(this ILibraryInstallationState state, IDependencies dependencies) { if (state == null) { return(new LibraryOperationResult(state, new[] { PredefinedErrors.UnknownError() })); } if (string.IsNullOrEmpty(state.ProviderId)) { return(new LibraryOperationResult(state, new[] { PredefinedErrors.ProviderIsUndefined() })); } IProvider provider = dependencies.GetProvider(state.ProviderId); if (provider == null) { return(new LibraryOperationResult(state, new[] { PredefinedErrors.ProviderUnknown(state.ProviderId) })); } return(await IsValidAsync(state, provider).ConfigureAwait(false)); }