PackageDependenciesValidationUtil.cpp (1530B)
1 // Copyright (c) Microsoft Corporation. 2 // Licensed under the MIT License. 3 #include "pch.h" 4 #include <Public/winget/PackageDependenciesValidationUtil.h> 5 #include <winget/ManifestValidation.h> 6 7 namespace AppInstaller::Manifest 8 { 9 WinGetManifestDependenciesErrorResult GetDependenciesValidationResultFromException(const AppInstaller::Manifest::ManifestException& manifestException) 10 { 11 auto result = WinGetManifestDependenciesErrorResult::None; 12 auto validationErrors = manifestException.Errors(); 13 14 for (const auto& validationError : validationErrors) 15 { 16 auto message = validationError.Message; 17 18 std::map<AppInstaller::StringResource::StringId, WinGetManifestDependenciesErrorResult> dependenciesErrorMessageMap = 19 { 20 {ManifestError::SingleManifestPackageHasDependencies, WinGetManifestDependenciesErrorResult::SingleManifestPackageHasDependencies}, 21 {ManifestError::MultiManifestPackageHasDependencies, WinGetManifestDependenciesErrorResult::MultiManifestPackageHasDependencies }, 22 {ManifestError::MissingManifestDependenciesNode, WinGetManifestDependenciesErrorResult::MissingManifestDependenciesNode }, 23 {ManifestError::NoSuitableMinVersionDependency, WinGetManifestDependenciesErrorResult::NoSuitableMinVersionDependency }, 24 {ManifestError::FoundDependencyLoop, WinGetManifestDependenciesErrorResult::FoundDependencyLoop } 25 }; 26 27 auto itr = dependenciesErrorMessageMap.find(message); 28 29 if (itr != dependenciesErrorMessageMap.end()) 30 { 31 result |= itr->second; 32 } 33 } 34 35 return result; 36 } 37 }