winget-cli

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

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 }