Esempio n. 1
0
        public static Option ProcessCommandLineParameters(string[] args)
        {
            var showHelp = args.Any(s => Regex.IsMatch(s, @"^--?h(?:elp)?$", RegexOptions.IgnoreCase));

            var path             = args.FirstOrDefault(s => !s.StartsWith("-"));
            var workingDirectory = !string.IsNullOrEmpty(path) && Directory.Exists(path) ? path : Directory.GetCurrentDirectory();

            ForceIncrement forceIncrement = HasOption(args, "major") && HasOption(args, "build") ? ForceIncrement.MajorAndBuild
                : HasOption(args, "minor") && HasOption(args, "build") ? ForceIncrement.MinorAndBuild
                : HasOption(args, "major") ? ForceIncrement.MajorAndReset
                : HasOption(args, "minor") ? ForceIncrement.MinorAndReset
                : ForceIncrement.Build;

            return(new Option(showHelp, workingDirectory, forceIncrement));
        }
Esempio n. 2
0
 private Option(bool showHelp, string workingDirectory, ForceIncrement forceIncrement)
 {
     ShowHelp         = showHelp;
     WorkingDirectory = workingDirectory;
     ForceIncrement   = forceIncrement;
 }
        private static string ReplaceVersionInLine(string line, ICollection <string> collectedVersions, ForceIncrement forceIncrement)
        {
            // Pattern contains search for version number surrounded by look-behind and look-ahead assertions.
            const string lookBehind = @" (?<= \[ \s* assembly \s* : \s* AssemblyVersion \s* \( \s* "" ) ";
            const string lookAhead  = @" (?= "" \s* \) \s* \] ) ";
            const string pattern    = lookBehind + @" \d+\.\d+\.\d+(\.\d+)? " + lookAhead;

            return(Regex.Replace(line, pattern, s =>
            {
                var newVersion = GetNewVersion(s.Value, forceIncrement);
                collectedVersions.Add(newVersion);
                return newVersion;
            }, RegexOptions.IgnorePatternWhitespace));
        }
 public FileProcessor(string workingDirectory, ForceIncrement forceIncrement)
 {
     _workingDirectory = workingDirectory;
     _forceIncrement   = forceIncrement;
 }
        private static string GetNewVersion(string currentVersion, ForceIncrement forceIncrement = ForceIncrement.None)
        {
            Version version;

            try
            {
                version = new Version(currentVersion);
            }
            catch (Exception e)
            {
                Console.WriteLine($"Error. Could not parse version string {currentVersion}: {e.Message}");
                Console.WriteLine("Not changing current version.");
                return(currentVersion);
            }

            int major;
            int minor;
            int build;

            switch (forceIncrement)
            {
            case ForceIncrement.None:
                major = version.Major;
                minor = version.Minor;
                build = version.Build;
                break;

            case ForceIncrement.MinorAndReset:
                major = version.Major;
                minor = version.Minor + 1;
                build = 0;
                break;

            case ForceIncrement.MajorAndReset:
                major = version.Major + 1;
                minor = 0;
                build = 0;
                break;

            case ForceIncrement.MinorAndBuild:
                major = version.Major;
                minor = version.Minor + 1;
                build = version.Build + 1;
                break;

            case ForceIncrement.MajorAndBuild:
                major = version.Major + 1;
                minor = 0;
                build = version.Build + 1;
                break;

            case ForceIncrement.Build:
                major = version.Major;
                minor = version.Minor;
                build = version.Build + 1;
                break;

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

            return(new Version(major, minor, build, 0).ToString(3));
        }