]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-4219 --resolve
authorJeff Lenk <jeff@jefflenk.com>
Sun, 8 Jul 2012 14:10:28 +0000 (09:10 -0500)
committerJeff Lenk <jeff@jefflenk.com>
Sun, 8 Jul 2012 14:10:28 +0000 (09:10 -0500)
libs/win32/util.vbs

index cbaf96a7b0b500a09e2f5a2bf68119e900540145..4f13e21ad0ddf77afe56a90f6525d291f5e647d0 100644 (file)
@@ -262,6 +262,58 @@ Sub FindReplaceInFile(FileName, sFind, sReplace)
        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
@@ -276,29 +328,47 @@ Sub CreateVersion(tmpFolder, VersionDir, includebase, includedest)
        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
@@ -315,7 +385,6 @@ Sub CreateVersion(tmpFolder, VersionDir, includebase, includedest)
                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