private void ValidatePackage(InstalledPackage installedPackage, PackageRequest request, List <InstalledPackage> installedPackages) { if (request.Id != null) { if (!string.Equals(installedPackage.Id, request.Id, StringComparison.OrdinalIgnoreCase)) { throw new UserException(string.Format( "Package ID '{0}' at location '{1}' does not match package ID '{2}' requested from {3}.", installedPackage.Id, installedPackage.Source, request.Id, request.RequestedBy)); } } if (request.VersionsRange != null) { if (!VersionUtility.ParseVersionSpec(request.VersionsRange).Satisfies(SemanticVersion.Parse(installedPackage.Version))) { DependencyError(string.Format( "Incompatible package version '{0}, version {1}'. Version {2} is requested from {3}'.", installedPackage.Id, installedPackage.Version, request.VersionsRange, request.RequestedBy)); } } var similarOldPackage = installedPackages.FirstOrDefault(oldPackage => !string.Equals(oldPackage.Id, installedPackage.Id, StringComparison.OrdinalIgnoreCase) && string.Equals(SimplifyPackageName(oldPackage.Id), SimplifyPackageName(installedPackage.Id), StringComparison.OrdinalIgnoreCase)); if (similarOldPackage != null) { throw new UserException(string.Format( "Incompatible package names '{0}' (requested from {1}) and '{2}' (requested from {3}).", installedPackage.Id, installedPackage.Request.RequestedBy, similarOldPackage.Id, similarOldPackage.Request.RequestedBy)); } }
private void ValidatePackage(InstalledPackage installedPackage, PackageRequest request, List <InstalledPackage> installedPackages) { if (request.Id != null) { if (installedPackage.Id != request.Id) { throw new UserException(string.Format( "Package ID '{0}' at location '{1}' does not match package ID '{2}' requested from {3}.", installedPackage.Id, installedPackage.Source, request.Id, request.RequestedBy)); } } var currentRhetosVersion = SystemUtility.GetRhetosVersion(); if (installedPackage.RequiredRhetosVersion != null) { if (!VersionUtility.ParseVersionSpec(installedPackage.RequiredRhetosVersion).Satisfies(SemanticVersion.Parse(currentRhetosVersion))) { DependencyError(string.Format( "Package '{0}, version {1}' requires Rhetos version {2}. It is incompatible with current Rhetos version {3}.", installedPackage.Id, installedPackage.Version, installedPackage.RequiredRhetosVersion, currentRhetosVersion)); } } if (request.VersionsRange != null) { if (!VersionUtility.ParseVersionSpec(request.VersionsRange).Satisfies(SemanticVersion.Parse(installedPackage.Version))) { DependencyError(string.Format( "Incompatible package version '{0}, version {1}'. Version {2} is requested from {3}'.", installedPackage.Id, installedPackage.Version, request.VersionsRange, request.RequestedBy)); } } var similarOldPackage = installedPackages.FirstOrDefault(oldPackage => oldPackage.Id != installedPackage.Id && SimplifyPackageName(oldPackage.Id) == SimplifyPackageName(installedPackage.Id)); if (similarOldPackage != null) { throw new UserException(string.Format( "Incompatible package names '{0}' (requested from {1}) and '{2}' (requested from {3}).", installedPackage.Id, installedPackage.Request.RequestedBy, similarOldPackage.Id, similarOldPackage.Request.RequestedBy)); } }
private void ValidatePackage(InstalledPackage installedPackage, PackageRequest request) { if (request.Id != null && !string.Equals(installedPackage.Id, request.Id, StringComparison.OrdinalIgnoreCase)) { throw new UserException(string.Format( "Package ID '{0}' at location '{1}' does not match package ID '{2}' requested from {3}.", installedPackage.Id, installedPackage.Source, request.Id, request.RequestedBy)); } if (request.VersionsRange != null && !VersionUtility.ParseVersionSpec(request.VersionsRange).Satisfies(SemanticVersion.Parse(installedPackage.Version))) { DependencyError(string.Format( "Incompatible package version '{0}, version {1}'. Version {2} is requested from {3}'.", installedPackage.Id, installedPackage.Version, request.VersionsRange, request.RequestedBy)); } }