Example #1
0
        public string GetAndIncrementTag(DirectoryInfo repository, SemanticVersionElement semanticVersionElement)
        {
            var latestTag = _git.GetLatestTag(repository);

            if (latestTag == null)
            {
                _logger.LogInformation("Repository doesn't contain any Tags.");
                return(Prompt.GetString(TagPrompt, "1.0.0"));
            }

            _logger.LogInformation($"Latest Tag is '{latestTag}'");

            if (SemanticVersion.TryParse(latestTag, out var semver))
            {
                switch (semanticVersionElement)
                {
                case SemanticVersionElement.None:
                    var next = semver.Minor.HasValue
                            ? semver.Increase(SemanticVersionElement.Minor).ToString()
                            : semver.Increase(SemanticVersionElement.Major).ToString();

                    return(Prompt.GetString(TagPrompt, next));

                case SemanticVersionElement.Major:
                case SemanticVersionElement.Minor:
                case SemanticVersionElement.Patch:
                    return(semver.Increase(semanticVersionElement).ToString());

                default:
                    throw new ArgumentOutOfRangeException(nameof(semanticVersionElement), semanticVersionElement, null);
                }
            }

            return(Prompt.GetString(TagPrompt));
        }
Example #2
0
        public SemanticVersion Increase(SemanticVersionElement semanticVersionElement)
        {
            switch (semanticVersionElement)
            {
            case SemanticVersionElement.None:
                return(this);

            case SemanticVersionElement.Major:
                return(new SemanticVersion(
                           Major + 1,
                           Minor.HasValue ? (int?)0 : null,
                           Patch.HasValue ? (int?)0 : null
                           ));

            case SemanticVersionElement.Minor:
                if (Minor.HasValue)
                {
                    return(new SemanticVersion(
                               Major,
                               Minor + 1,
                               Patch.HasValue ? (int?)0 : null
                               ));
                }
                else
                {
                    throw new ArgumentException($"Can't increase version {semanticVersionElement}");
                }

            case SemanticVersionElement.Patch:
                if (Patch.HasValue)
                {
                    return(new SemanticVersion(
                               Major,
                               Minor,
                               Patch + 1
                               ));
                }
                else
                {
                    throw new ArgumentException($"Can't increase version {semanticVersionElement}");
                }

            default:
                throw new ArgumentOutOfRangeException(nameof(semanticVersionElement), semanticVersionElement, null);
            }
        }