Example #1
0
        public Artifact Artifact(Product product)
        {
            var cacheKey = product.ToString();

            if (_resolved.TryGetValue(cacheKey, out var artifact))
            {
                return(artifact);
            }
            switch (ArtifactBuildState)
            {
            case ArtifactBuildState.Released:
                ReleasedVersionResolver.TryResolve(product, this, OsMonikers.CurrentPlatform(), out artifact);
                break;

            case ArtifactBuildState.Snapshot:
                SnapshotApiResolver.TryResolve(product, this, OsMonikers.CurrentPlatform(), null, out artifact);
                break;

            case ArtifactBuildState.BuildCandidate:
                StagingVersionResolver.TryResolve(product, this, BuildHash, out artifact);
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(ArtifactBuildState), $"{ArtifactBuildState} not expected here");
            }

            _resolved.TryAdd(cacheKey, artifact);

            return(artifact);
        }
Example #2
0
        /// <summary>
        /// Resolves an Elasticsearch version using either (version | version-snapshot | 'latest' | 'latest-MAJORVERSION')
        /// </summary>
        public static ElasticVersion From(string managedVersionString)
        {
            ArtifactBuildState GetReleaseState(string s) =>
            s.EndsWith("-SNAPSHOT")
                                        ? ArtifactBuildState.Snapshot
                                        : ApiResolver.IsReleasedVersion(s)
                                                ? ArtifactBuildState.Released
                                                : ArtifactBuildState.BuildCandidate;

            if (string.IsNullOrWhiteSpace(managedVersionString))
            {
                return(null);
            }

            var version   = managedVersionString;
            var state     = GetReleaseState(version);
            var buildHash = string.Empty;

            switch (managedVersionString)
            {
            case string _ when managedVersionString.StartsWith("latest-", StringComparison.OrdinalIgnoreCase):
                var major = int.Parse(managedVersionString.Replace("latest-", ""));

                version = SnapshotApiResolver.LatestReleaseOrSnapshotForMajor(major).ToString();
                state   = GetReleaseState(version);
                if (state == ArtifactBuildState.BuildCandidate)
                {
                    buildHash = ApiResolver.LatestBuildHash(version);
                }
                break;

            case string _ when managedVersionString.EndsWith("-snapshot", StringComparison.OrdinalIgnoreCase):
                state = ArtifactBuildState.Snapshot;

                break;

            case string _ when TryParseBuildCandidate(managedVersionString, out var v, out buildHash):
                state = ArtifactBuildState.BuildCandidate;

                version = v;
                break;

            case "latest":
                version = SnapshotApiResolver.LatestReleaseOrSnapshot.ToString();
                state   = GetReleaseState(version);
                break;
            }

            return(new ElasticVersion(version, state, buildHash));
        }