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 |