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