109 lines
2.8 KiB
Plaintext
109 lines
2.8 KiB
Plaintext
' VBScript to retrieve GIT "revision" and generate version.c
|
|
' Copyright 2018 Thomas Bernard
|
|
Set WshShell = CreateObject("WScript.Shell")
|
|
Set FSO = CreateObject("Scripting.FileSystemObject")
|
|
versionfile = "..\..\src\version.c"
|
|
pversionfile = "..\..\src\pversion.c"
|
|
ressourcefile = "..\..\src\gfx2.rc"
|
|
|
|
On Error Resume Next
|
|
|
|
Function GetRevision()
|
|
GetRevision = "unknown"
|
|
Err.Clear
|
|
Set oExec = WshShell.Exec("git rev-list --count 1af8c74f53110e349d8f0d19b14599281913f71f..")
|
|
If Err.Number = 0 Then
|
|
' Wait till the application is finished ...
|
|
Do While oExec.Status = 0
|
|
Loop
|
|
If oExec.ExitCode = 0 Then
|
|
GetRevision = oExec.StdOut.ReadLine()
|
|
End If
|
|
End If
|
|
End Function
|
|
|
|
Function GetBranch()
|
|
GetBranch = "unknown"
|
|
Err.Clear
|
|
Set oExec = WshShell.Exec("git rev-parse --abbrev-ref HEAD")
|
|
If Err.Number = 0 Then
|
|
' Wait till the application is finished ...
|
|
Do While oExec.Status = 0
|
|
Loop
|
|
If oExec.ExitCode = 0 Then
|
|
GetBranch = oExec.StdOut.ReadLine()
|
|
End If
|
|
End If
|
|
End Function
|
|
|
|
GIT_REVISION = GetRevision()
|
|
GIT_BRANCH = GetBranch()
|
|
'Wscript.Echo "GIT_REVISION=" & GIT_REVISION & Chr(13) & Chr(10) & "GIT_BRANCH=" & GIT_BRANCH
|
|
revision = GIT_REVISION
|
|
If GIT_BRANCH <> "unknown" And GIT_BRANCH <> "master" Then
|
|
revision = revision & "-" & GIT_BRANCH
|
|
End If
|
|
'Wscript.Echo revision
|
|
|
|
NeedWrite = True
|
|
Err.Clear
|
|
Set f = FSO.OpenTextFile(versionfile, 1, False) ' 1 = Read
|
|
If Err.Number = 0 Then
|
|
line = f.ReadLine
|
|
i = InStr(line, Chr(34)) + 1
|
|
j = InStr(i, line, Chr(34))
|
|
oldrevision = Mid(line, i, j - i)
|
|
If revision = oldrevision Then
|
|
NeedWrite = False
|
|
End If
|
|
f.Close
|
|
End If
|
|
|
|
Err.Clear
|
|
Set f = FSO.OpenTextFile(pversionfile, 1, False) ' 1 = Read
|
|
If Err.Number = 0 Then
|
|
line = f.ReadLine
|
|
i = InStr(line, Chr(34)) + 1
|
|
j = InStr(i, line, Chr(34))
|
|
label = Mid(line, i, j - i)
|
|
f.Close
|
|
End If
|
|
|
|
If NeedWrite Then
|
|
Set f = FSO.OpenTextFile(versionfile, 2, True) ' 2 = Write
|
|
f.WriteLine "char SVN_revision[]=" & Chr(34) & revision & Chr(34) & ";"
|
|
f.Close
|
|
' rewrite ressourcefile
|
|
Dim lines()
|
|
i = 0
|
|
Err.Clear
|
|
Set f = FSO.OpenTextFile(ressourcefile, 1, False)
|
|
If Err.Number = 0 Then
|
|
While Not f.AtEndOfStream
|
|
line = f.ReadLine
|
|
k = InStr(line, "VERSION ")
|
|
l = InStr(line, "Version" & Chr(34))
|
|
If k <> 0 Then
|
|
'Wscript.Echo "* i=" & i & " k=" & k & " l=" & l & " : " & line
|
|
k = InStrRev(line, ",")
|
|
line = Mid(line, 1, k) & GIT_REVISION
|
|
End If
|
|
If l <> 0 Then
|
|
'Wscript.Echo "_ i=" & i & " k=" & k & " l=" & l & " : " & line
|
|
k = InStr(InStr(line, ","), line, Chr(34))
|
|
line = Mid(line, 1, k) & label & revision & Chr(34)
|
|
End If
|
|
Redim preserve lines(i)
|
|
lines(i) = line
|
|
i = i + 1
|
|
Wend
|
|
f.Close
|
|
' Write lines back to the file
|
|
Set f = FSO.OpenTextFile(ressourcefile, 2, True) ' 2 = Write
|
|
For i = 0 To UBound(lines)
|
|
'Wscript.Echo lines(i)
|
|
f.WriteLine lines(i)
|
|
Next
|
|
f.Close
|
|
End If
|
|
End If |