diff --git a/build_helpers.bat b/build_helpers.bat index dc259950e..425221d71 100644 --- a/build_helpers.bat +++ b/build_helpers.bat @@ -1,12 +1,11 @@ @ECHO OFF SETLOCAL - PUSHD %~dp0 +SET "ConfigurationName=%~2" IF /I "%~1" == "lang" GOTO UpdateLanguageFiles IF /I "%~1" == "rev" GOTO UpdateAssemblyInfo - :END POPD ENDLOCAL @@ -14,16 +13,12 @@ EXIT /B :UpdateLanguageFiles -IF NOT EXIST "src\UpdateLanguageFiles\bin\Release\UpdateLanguageFiles.exe" IF NOT EXIST "src\UpdateLanguageFiles\bin\Debug\UpdateLanguageFiles.exe" ( +IF NOT EXIST "src\UpdateLanguageFiles\bin\%ConfigurationName%\UpdateLanguageFiles.exe" ( ECHO Compile Subtitle Edit first! GOTO END ) -IF EXIST "src\UpdateLanguageFiles\bin\Release\UpdateLanguageFiles.exe" ( - "src\UpdateLanguageFiles\bin\Release\UpdateLanguageFiles.exe" "LanguageMaster.xml" "src\Logic\LanguageDeserializer.cs" -) ELSE ( - "src\UpdateLanguageFiles\bin\Debug\UpdateLanguageFiles.exe" "LanguageMaster.xml" "src\Logic\LanguageDeserializer.cs" -) +"src\UpdateLanguageFiles\bin\%ConfigurationName%\UpdateLanguageFiles.exe" "LanguageMaster.xml" "src\Logic\LanguageDeserializer.cs" IF %ERRORLEVEL% NEQ 0 ( ECHO ERROR: Something went wrong when generating the language files... @@ -32,18 +27,14 @@ GOTO END :UpdateAssemblyInfo -IF NOT EXIST "src\UpdateAssemblyInfo\bin\Release\UpdateAssemblyInfo.exe" IF NOT EXIST "src\UpdateAssemblyInfo\bin\Debug\UpdateAssemblyInfo.exe" ( +IF NOT EXIST "src\UpdateAssemblyInfo\bin\%ConfigurationName%\UpdateAssemblyInfo.exe" ( ECHO Compile Subtitle Edit first! GOTO END ) -IF EXIST "src\UpdateAssemblyInfo\bin\Release\UpdateAssemblyInfo.exe" ( - "src\UpdateAssemblyInfo\bin\Release\UpdateAssemblyInfo.exe" "src\Properties\AssemblyInfo.cs.template" "libse\Properties\AssemblyInfo.cs.template" -) ELSE ( - "src\UpdateAssemblyInfo\bin\Debug\UpdateAssemblyInfo.exe" "src\Properties\AssemblyInfo.cs.template" "libse\Properties\AssemblyInfo.cs.template" -) +"src\UpdateAssemblyInfo\bin\%ConfigurationName%\UpdateAssemblyInfo.exe" "src\Properties\AssemblyInfo.cs.template" "libse\Properties\AssemblyInfo.cs.template" IF %ERRORLEVEL% NEQ 0 ( ECHO ERROR: Something went wrong when generating the revision number... ) -GOTO END +GOTO END \ No newline at end of file diff --git a/src/SubtitleEdit.csproj b/src/SubtitleEdit.csproj index b342d9533..d18c3bee0 100644 --- a/src/SubtitleEdit.csproj +++ b/src/SubtitleEdit.csproj @@ -1600,7 +1600,7 @@ - "$(ProjectDir)..\build_helpers.bat" rev && "$(ProjectDir)..\build_helpers.bat" lang + "$(ProjectDir)..\build_helpers.bat" rev $(ConfigurationName) && "$(ProjectDir)..\build_helpers.bat" lang $(ConfigurationName) COPY /Y /V "$(ProjectDir)packages\NHunspell.1.2.5554.16953\content\*.dll" "$(TargetDir)" diff --git a/src/UpdateAssemblyInfo/Program.cs b/src/UpdateAssemblyInfo/Program.cs index 76f7c1af4..18e0401e7 100644 --- a/src/UpdateAssemblyInfo/Program.cs +++ b/src/UpdateAssemblyInfo/Program.cs @@ -12,10 +12,11 @@ namespace UpdateAssemblyInfo { public string Version { get; set; } public string RevisionGuid { get; set; } - public string BuildNumber { get; set; } } - private static void UpdateAssemblyInfo(string templateFileName, VersionInfo versionInfo) + private const string DefaultVersion = "1.0.0.0"; + + private static void UpdateAssemblyInfo(string templateFileName, VersionInfo newVersionInfo) { var lines = File.ReadAllLines(templateFileName); var sb = new StringBuilder(); @@ -23,42 +24,45 @@ namespace UpdateAssemblyInfo foreach (var line in lines) { var original = line; - var l = line.Trim(); - while (l.Contains(" ")) - { - l = l.Replace(" ", " "); - } - if (l.StartsWith("[assembly: AssemblyVersion", StringComparison.Ordinal) || - l.StartsWith("[assembly:AssemblyVersion", StringComparison.Ordinal) || - l.StartsWith("[assembly: AssemblyFileVersion", StringComparison.Ordinal) || - l.StartsWith("[assembly:AssemblyFileVersion", StringComparison.Ordinal)) - { - int begin = original.IndexOf('"'); - int end = original.LastIndexOf('"'); - if (end > begin && begin > 0) + if (newVersionInfo.Version != DefaultVersion) + { // only replace version info if Git is installed + var l = line.Trim(); + while (l.Contains(" ")) { - begin++; - string oldVersion = original.Substring(begin, end - begin); - if (oldVersion != versionInfo.Version) + l = l.Replace(" ", " "); + } + if (l.StartsWith("[assembly: AssemblyVersion", StringComparison.Ordinal) || + l.StartsWith("[assembly:AssemblyVersion", StringComparison.Ordinal) || + l.StartsWith("[assembly: AssemblyFileVersion", StringComparison.Ordinal) || + l.StartsWith("[assembly:AssemblyFileVersion", StringComparison.Ordinal)) + { + int begin = original.IndexOf('"'); + int end = original.LastIndexOf('"'); + if (end > begin && begin > 0) { - change = true; - original = original.Substring(0, begin) + versionInfo.Version + original.Remove(0, end); + begin++; + string oldVersion = original.Substring(begin, end - begin); + if (oldVersion != newVersionInfo.Version) + { + change = true; + original = original.Substring(0, begin) + newVersionInfo.Version + original.Remove(0, end); + } } } - } - else if (l.StartsWith("[assembly: AssemblyDescription", StringComparison.Ordinal) || - l.StartsWith("[assembly:AssemblyDescription", StringComparison.Ordinal)) - { - int begin = original.IndexOf('"'); - int end = original.LastIndexOf('"'); - if (end > begin && begin > 0) + else if (l.StartsWith("[assembly: AssemblyDescription", StringComparison.Ordinal) || + l.StartsWith("[assembly:AssemblyDescription", StringComparison.Ordinal)) { - begin++; - string oldRevisionGuid = original.Substring(begin, end - begin); - if (oldRevisionGuid != versionInfo.RevisionGuid) + int begin = original.IndexOf('"'); + int end = original.LastIndexOf('"'); + if (end > begin && begin > 0) { - change = true; - original = original.Substring(0, begin) + versionInfo.RevisionGuid + original.Remove(0, end); + begin++; + string oldRevisionGuid = original.Substring(begin, end - begin); + if (oldRevisionGuid != newVersionInfo.RevisionGuid) + { + change = true; + original = original.Substring(0, begin) + newVersionInfo.RevisionGuid + original.Remove(0, end); + } } } } @@ -72,7 +76,7 @@ namespace UpdateAssemblyInfo private static VersionInfo GetOldVersionNumber(string subtitleEditTemplateFileName) { - var version = new VersionInfo { Version = "1.0.0.0", RevisionGuid = "0", BuildNumber = "0" }; + var versionInfo = new VersionInfo { Version = DefaultVersion, RevisionGuid = "0" }; var oldFileName = subtitleEditTemplateFileName.Replace(".template", string.Empty); if (File.Exists(oldFileName)) { @@ -94,8 +98,7 @@ namespace UpdateAssemblyInfo if (end > begin && begin > 0) { begin++; - version.Version = l.Substring(begin, end - begin); - version.BuildNumber = version.Version.Substring(version.Version.LastIndexOf('.') + 1); + versionInfo.Version = l.Substring(begin, end - begin); } } else if (l.StartsWith("[assembly: AssemblyDescription", StringComparison.Ordinal) || @@ -106,20 +109,20 @@ namespace UpdateAssemblyInfo if (end > begin && begin > 0) { begin++; - version.RevisionGuid = l.Substring(begin, end - begin); + versionInfo.RevisionGuid = l.Substring(begin, end - begin); } } } } - return version; + return versionInfo; } - // 3.4.8-226-g7037fef + // e.g.: 3.4.8-226-g7037fef private static readonly Regex VersionNumberRegex = new Regex(@"^\d+\.\d+\.\d+\-.+$", RegexOptions.Compiled); private static VersionInfo GetNewVersion() { - var version = new VersionInfo { Version = "1.0.0", RevisionGuid = "0", BuildNumber = "9999" }; + var versionInfo = new VersionInfo { Version = DefaultVersion, RevisionGuid = "0" }; var workingFolder = Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location); var clrHash = new CommandLineRunner(); var clrTags = new CommandLineRunner(); @@ -130,19 +133,11 @@ namespace UpdateAssemblyInfo { throw new Exception("Error: Invalid Git version tag (should number.number.number): '" + clrTags.Result + "'"); } - - version.RevisionGuid = clrHash.Result; - - version.Version = clrTags.Result.Substring(0, clrTags.Result.LastIndexOf('-')); - version.Version = version.Version.Replace("-", "."); - - version.BuildNumber = version.Version.Remove(0, version.Version.LastIndexOf('.')).Trim('.'); + versionInfo.RevisionGuid = clrHash.Result; + versionInfo.Version = clrTags.Result.Substring(0, clrTags.Result.LastIndexOf('-')); + versionInfo.Version = versionInfo.Version.Replace("-", "."); } - if (version.RevisionGuid == "0" && version.BuildNumber == "9999") - { - Console.WriteLine("WARNING: Could not run Git - build number will be 9999!"); - } - return version; + return versionInfo; } private static int Main(string[] args) @@ -159,17 +154,30 @@ namespace UpdateAssemblyInfo { var seTemplateFileName = Environment.GetCommandLineArgs()[1]; var libSeTmplateFileName = Environment.GetCommandLineArgs()[2]; + + //seTemplateFileName = @"C:\data\SubtitleEdit\subtitleedit\src\Properties\AssemblyInfo.cs.template"; + //libSeTmplateFileName = @"C:\data\SubtitleEdit\subtitleedit\libse\Properties\AssemblyInfo.cs.template"; + Console.Write("Updating version number... "); - var newVersion = GetNewVersion(); + var newVersionInfo = GetNewVersion(); var oldSeVersion = GetOldVersionNumber(seTemplateFileName); var oldLibSeVersion = GetOldVersionNumber(libSeTmplateFileName); - if (oldSeVersion.RevisionGuid != newVersion.RevisionGuid || oldSeVersion.Version != newVersion.Version || - oldLibSeVersion.RevisionGuid != newVersion.RevisionGuid || oldLibSeVersion.Version != newVersion.Version) + if (oldSeVersion.RevisionGuid != newVersionInfo.RevisionGuid || oldSeVersion.Version != newVersionInfo.Version || + oldLibSeVersion.RevisionGuid != newVersionInfo.RevisionGuid || oldLibSeVersion.Version != newVersionInfo.Version) { - Console.WriteLine("updating version number to " + newVersion.Version + " " + newVersion.RevisionGuid); - UpdateAssemblyInfo(seTemplateFileName, newVersion); - UpdateAssemblyInfo(libSeTmplateFileName, newVersion); + if (newVersionInfo.Version == DefaultVersion) + { + Console.WriteLine("Git not found: AssemblyInfo.cs must be manually updated"); + } + else + { + Console.WriteLine("updating version number to " + newVersionInfo.Version + " " + newVersionInfo.RevisionGuid); + } + UpdateAssemblyInfo(seTemplateFileName, newVersionInfo); + UpdateAssemblyInfo(libSeTmplateFileName, newVersionInfo); + + return 0; } Console.WriteLine("no changes");