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)); }
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)); }