Пример #1
0
        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));
            }
        }
Пример #2
0
        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));
            }
        }
Пример #3
0
        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));
            }
        }