fNewFile.Close\r
End Sub\r
\r
+Function ExecAndGetResult(tmpFolder, VersionDir, execStr)\r
+ \r
+ Set MyFile = FSO.CreateTextFile(tmpFolder & "tmpExec.Bat", True)\r
+ MyFile.WriteLine("@" & "cd " & quote & VersionDir & quote)\r
+ MyFile.WriteLine("@" & execStr)\r
+ MyFile.Close\r
+ \r
+ Set oExec = WshShell.Exec("cmd /C " & quote & tmpFolder & "tmpExec.Bat" & quote)\r
+ \r
+ ExecAndGetResult = Trim(OExec.StdOut.ReadLine())\r
+\r
+ Do\r
+ Loop While Not OExec.StdOut.atEndOfStream\r
+ \r
+ FSO.DeleteFile(tmpFolder & "tmpExec.Bat")\r
+\r
+End Function\r
+\r
+Function ExecAndGetExitCode(tmpFolder, VersionDir, execStr)\r
+ \r
+ Set MyFile = FSO.CreateTextFile(tmpFolder & "tmpExec.Bat", True)\r
+ MyFile.WriteLine("@" & "cd " & quote & VersionDir & quote)\r
+ MyFile.WriteLine("@" & execStr)\r
+ MyFile.WriteLine("@exit %ERRORLEVEL%")\r
+ MyFile.Close\r
+ \r
+ ExecAndGetExitCode = WshShell.Run("cmd /C " & quote & tmpFolder & "tmpExec.Bat" & quote, 0, True)\r
+ \r
+ FSO.DeleteFile(tmpFolder & "tmpExec.Bat")\r
+\r
+End Function\r
+\r
+Function pd(n, totalDigits)\r
+ If totalDigits > len(n) then\r
+ pd = String(totalDigits-len(n),"0") & n\r
+ Else\r
+ pd = n\r
+ End If\r
+End Function\r
+\r
+Function GetTimeUTC()\r
+\r
+ iOffset = WshShell.RegRead("HKLM\System\CurrentControlSet\Control\TimeZoneInformation\ActiveTimeBias")\r
+ \r
+ If IsNumeric(iOffset) Then\r
+ GetTimeUTC = DateAdd("n", iOffset, Now())\r
+ Else\r
+ GetTimeUTC = Now()\r
+ End If\r
+\r
+End Function\r
+\r
Sub CreateVersion(tmpFolder, VersionDir, includebase, includedest)\r
Dim oExec\r
\r
End If\r
\r
Dim sLastFile\r
- Const ForReading = 1\r
-\r
- 'Try To read revision from git, if it was not found in "configure.in" already\r
- If strVerRev = "" Then\r
- If FSO.FolderExists(VersionDir & ".git") Then\r
- VersionCmd="git log --format=" & quote & "%%h %%ci" & quote & " -1 HEAD"\r
- Set MyFile = FSO.CreateTextFile(tmpFolder & "tmpVersion.Bat", True)\r
- MyFile.WriteLine("@" & "cd " & quote & VersionDir & quote)\r
- MyFile.WriteLine("@" & VersionCmd)\r
- MyFile.Close\r
- Set oExec = WshShell.Exec("cmd /C " & quote & tmpFolder & "tmpVersion.Bat" & quote)\r
- Do\r
- strFromProc = Trim(OExec.StdOut.ReadLine())\r
- VERSION="git-" & strFromProc\r
- Loop While Not OExec.StdOut.atEndOfStream\r
- sLastVersion = ""\r
- Set sLastFile = FSO.OpenTextFile(tmpFolder & "lastversion", ForReading, true, OpenAsASCII)\r
- If Not sLastFile.atEndOfStream Then\r
- sLastVersion = sLastFile.ReadLine()\r
- End If\r
- sLastFile.Close\r
- VERSION = Replace(VERSION, ":", "-")\r
+ Const ForReading = 1\r
+\r
+ 'Try To read revision from git\r
+ If FSO.FolderExists(VersionDir & ".git") Then\r
+ 'Get timestamp for last commit\r
+ strFromProc = ExecAndGetResult(tmpFolder, VersionDir, "git log -n1 --format=" & quote & "%%ct" & quote & " HEAD")\r
+ If IsNumeric(strFromProc) Then\r
+ lastChangedDateTime = DateAdd("s", strFromProc, "01/01/1970 00:00:00")\r
+ strLastCommit = YEAR(lastChangedDateTime) & Pd(Month(lastChangedDateTime), 2) & Pd(DAY(lastChangedDateTime), 2) & "T" & Pd(Hour(lastChangedDateTime), 2) & Pd(Minute(lastChangedDateTime), 2) & Pd(Second(lastChangedDateTime), 2) & "Z"\r
+ Else\r
+ strLastCommit = "UNKNOWN"\r
+ End If\r
+\r
+ 'Get revision hash\r
+ strRevision = ExecAndGetResult(tmpFolder, VersionDir, "git rev-list -n1 --abbrev=10 --abbrev-commit HEAD")\r
+ \r
+ If strRevision = "" Then\r
+ strRevision = "UNKNOWN"\r
End If\r
+\r
+ 'Bild version string\r
+ strGitVer="git~" & strLastCommit & "~" & strRevision\r
+\r
+ 'Check for local changes, if found, append to git revision string\r
+ If ExecAndGetExitCode(tmpFolder, VersionDir, "git diff-index --quiet HEAD") <> 0 Then\r
+ lastChangedDateTime = GetTimeUTC()\r
+ strGitVer = strGitVer & "+unclean~" & YEAR(lastChangedDateTime) & Pd(Month(lastChangedDateTime), 2) & Pd(DAY(lastChangedDateTime), 2) & "T" & Pd(Hour(lastChangedDateTime), 2) & Pd(Minute(lastChangedDateTime), 2) & Pd(Second(lastChangedDateTime), 2) & "Z"\r
+ End If\r
+\r
+ If strVerRev = "" Then\r
+ VERSION=strGitVer\r
+ Else\r
+ VERSION=VERSION & "+" & strGitVer\r
+ End If\r
+\r
+ sLastVersion = ""\r
+ Set sLastFile = FSO.OpenTextFile(tmpFolder & "lastversion", ForReading, true, OpenAsASCII)\r
+ If Not sLastFile.atEndOfStream Then\r
+ sLastVersion = sLastFile.ReadLine()\r
+ End If\r
+ sLastFile.Close\r
End If\r
\r
If VERSION = "" Then\r
FindReplaceInFile includedest, "@SWITCH_VERSION_MAJOR@", strVerMajor\r
FindReplaceInFile includedest, "@SWITCH_VERSION_MINOR@", strVerMinor\r
FindReplaceInFile includedest, "@SWITCH_VERSION_MICRO@", strVerMicro\r
-\r
End If\r
\r
End Sub\r