projects/determineversion.vbs
branchNewGRF_ports
changeset 6871 5a9dc001e1ad
parent 6870 ca3fd1fbe311
child 10184 fcf5fb2548eb
equal deleted inserted replaced
6870:ca3fd1fbe311 6871:5a9dc001e1ad
    12 	Set file = FSO.CreateTextFile(FileName, -1, 0)
    12 	Set file = FSO.CreateTextFile(FileName, -1, 0)
    13 	file.Write data
    13 	file.Write data
    14 	file.Close
    14 	file.Close
    15 End Sub
    15 End Sub
    16 
    16 
    17 Sub UpdateFile(version, cur_date, filename)
    17 Sub UpdateFile(revision, version, cur_date, filename)
    18 	FSO.CopyFile filename & ".in", filename
    18 	FSO.CopyFile filename & ".in", filename
       
    19 	FindReplaceInFile filename, "@@REVISION@@", revision
    19 	FindReplaceInFile filename, "@@VERSION@@", version
    20 	FindReplaceInFile filename, "@@VERSION@@", version
    20 	FindReplaceInFile filename, "@@DATE@@", cur_date
    21 	FindReplaceInFile filename, "@@DATE@@", cur_date
    21 End Sub
    22 End Sub
    22 
    23 
    23 Sub UpdateFiles(version)
    24 Sub UpdateFiles(version)
    24 	Dim cur_date
    25 	Dim WshShell, cur_date, revision, oExec
       
    26 	Set WshShell = CreateObject("WScript.Shell")
    25 	cur_date = DatePart("D", Date) & "." & DatePart("M", Date) & "." & DatePart("YYYY", Date)
    27 	cur_date = DatePart("D", Date) & "." & DatePart("M", Date) & "." & DatePart("YYYY", Date)
    26 	UpdateFile version, cur_date, "../src/rev.cpp"
    28 	revision = 0
    27 	UpdateFile version, cur_date, "../src/ottdres.rc"
    29 	Select Case Mid(version, 1, 1)
       
    30 		Case "r" ' svn
       
    31 			revision = Mid(version, 2)
       
    32 			If InStr(revision, "M") Then
       
    33 				revision = Mid(revision, 1, InStr(revision, "M") - 1)
       
    34 			End If
       
    35 			If InStr(revision, "-") Then
       
    36 				revision = Mid(revision, 1, InStr(revision, "-") - 1)
       
    37 			End If
       
    38 		Case "h" ' mercurial (hg)
       
    39 			Set oExec = WshShell.Exec("hg log -k " & Chr(34) & "svn" & Chr(34) & " -l 1 --template " & Chr(34) & "{desc}\n" & Chr(34) & " ../src")
       
    40 			If Err.Number = 0 Then
       
    41 				revision = Mid(OExec.StdOut.ReadLine(), 7)
       
    42 				revision = Mid(revision, 1, InStr(revision, ")") - 1)
       
    43 			End If
       
    44 		Case "g" ' git
       
    45 			Set oExec = WshShell.Exec("git log --pretty=format:%s --grep=" & Chr(34) & "^(svn r[0-9]*)" & Chr(34) & " -1 ../src")
       
    46 			if Err.Number = 0 Then
       
    47 				revision = Mid(oExec.StdOut.ReadLine(), 7)
       
    48 				revision = Mid(revision, 1, InStr(revision, ")") - 1)
       
    49 			End If
       
    50 	End Select
       
    51 
       
    52 	UpdateFile revision, version, cur_date, "../src/rev.cpp"
       
    53 	UpdateFile revision, version, cur_date, "../src/ottdres.rc"
    28 End Sub
    54 End Sub
    29 
    55 
    30 Function DetermineSVNVersion()
    56 Function DetermineSVNVersion()
    31 	Dim WshShell, version, url, oExec
    57 	Dim WshShell, version, url, oExec, line
    32 	Set WshShell = CreateObject("WScript.Shell")
    58 	Set WshShell = CreateObject("WScript.Shell")
    33 	On Error Resume Next
    59 	On Error Resume Next
    34 
    60 
    35 	' Try TortoiseSVN
    61 	' Try TortoiseSVN
    36 	' Get the directory where TortoiseSVN (should) reside(s)
    62 	' Get the directory where TortoiseSVN (should) reside(s)
    76 			WshShell.Environment("PROCESS")("LANG") = "en"
   102 			WshShell.Environment("PROCESS")("LANG") = "en"
    77 
   103 
    78 			' And use svn info to get the correct revision and branch information.
   104 			' And use svn info to get the correct revision and branch information.
    79 			Set oExec = WshShell.Exec("svn info ../src")
   105 			Set oExec = WshShell.Exec("svn info ../src")
    80 			If Err.Number = 0 Then
   106 			If Err.Number = 0 Then
    81 				Dim line
       
    82 				Do
   107 				Do
    83 					line = OExec.StdOut.ReadLine()
   108 					line = OExec.StdOut.ReadLine()
    84 					If InStr(line, "URL") Then
   109 					If InStr(line, "URL") Then
    85 						url = line
   110 						url = line
    86 					End If
   111 					End If
    96 		If InStr(url, "branches") Then
   121 		If InStr(url, "branches") Then
    97 			url = Mid(url, InStr(url, "branches") + 8)
   122 			url = Mid(url, InStr(url, "branches") + 8)
    98 			url = Mid(url, 1, InStr(2, url, "/") - 1)
   123 			url = Mid(url, 1, InStr(2, url, "/") - 1)
    99 			version = version & Replace(url, "/", "-")
   124 			version = version & Replace(url, "/", "-")
   100 		End If
   125 		End If
       
   126 	Else
       
   127 		' svn detection failed, reset error and try git
       
   128 		Err.Clear
       
   129 		Set oExec = WshShell.Exec("git rev-parse --verify --short=8 HEAD")
       
   130 		If Err.Number = 0 Then
       
   131 			version = "g" & oExec.StdOut.ReadLine()
       
   132 			Set oExec = WshShell.Exec("git diff-index --exit-code --quiet HEAD ../src")
       
   133 			Do While oExec.Status = 0 And Err.Number = 0
       
   134 			Loop
       
   135 			If Err.Number = 0 And oExec.ExitCode = 1 Then
       
   136 				version = version & "M"
       
   137 			End If
       
   138 
       
   139 			Set oExec = WshShell.Exec("git symbolic-ref HEAD")
       
   140 			If Err.Number = 0 Then
       
   141 				line = oExec.StdOut.ReadLine()
       
   142 				line = Mid(line, InStrRev(line, "/")+1)
       
   143 				If line <> "master" Then
       
   144 					version = version & "-" & line
       
   145 				End If
       
   146 			End If
       
   147 		Else
       
   148 			' try mercurial (hg)
       
   149 			Err.Clear
       
   150 			Set oExec = WshShell.Exec("hg tip")
       
   151 			If Err.Number = 0 Then
       
   152 				version = "h" & Mid(OExec.StdOut.ReadLine(), 19, 8)
       
   153 				Set oExec = WshShell.Exec("hg status ../src")
       
   154 				If Err.Number = 0 Then
       
   155 					Do
       
   156 						line = OExec.StdOut.ReadLine()
       
   157 						If Mid(line, 1, 1) <> "?" Then
       
   158 							version = version & "M"
       
   159 							Exit Do
       
   160 						End If
       
   161 					Loop While Not OExec.StdOut.atEndOfStream
       
   162 				End If
       
   163 				Set oExec = WshShell.Exec("hg branch")
       
   164 				If Err.Number = 0 Then
       
   165 						line = OExec.StdOut.ReadLine()
       
   166 						If line <> "default" Then
       
   167 							version = version & "-" & line
       
   168 						End If
       
   169 				End If
       
   170 			End If
       
   171 		End If
   101 	End If
   172 	End If
   102 
   173 
   103 	DetermineSVNVersion = version
   174 	DetermineSVNVersion = version
   104 End Function
   175 End Function
   105 
   176