projects/determineversion.vbs
author bjarni
Sat, 08 Dec 2007 15:21:37 +0000
changeset 8535 cda5ffec8999
parent 8471 f2d28f334d63
child 9198 1442ea35d8dd
permissions -rw-r--r--
(svn r11599) -Change: [OSX] 10.4 will now use quickdraw for window mode instead of quartz
The reason is that quickdraw is way faster (try fast forward)
10.5 will still use quartz as it can't handle quickdraw.
8060
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
     1
Option Explicit
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
     2
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
     3
Dim FSO
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
     4
Set FSO = CreateObject("Scripting.FileSystemObject")
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
     5
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
     6
Sub FindReplaceInFile(filename, to_find, replacement)
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
     7
	Dim file, data
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
     8
	Set file = FSO.OpenTextFile(filename, 1, 0, 0)
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
     9
	data = file.ReadAll
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
    10
	file.Close
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
    11
	data = Replace(data, to_find, replacement)
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
    12
	Set file = FSO.CreateTextFile(FileName, -1, 0)
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
    13
	file.Write data
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
    14
	file.Close
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
    15
End Sub
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
    16
8276
1fe8700644de (svn r11330) -Add: OTTD version checking for NewGRFs. This allows NewGRFs to do something different for different versions of OpenTTD, like disabling it for too low versions or loading different graphics.
rubidium
parents: 8061
diff changeset
    17
Sub UpdateFile(revision, version, cur_date, filename)
8060
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
    18
	FSO.CopyFile filename & ".in", filename
8276
1fe8700644de (svn r11330) -Add: OTTD version checking for NewGRFs. This allows NewGRFs to do something different for different versions of OpenTTD, like disabling it for too low versions or loading different graphics.
rubidium
parents: 8061
diff changeset
    19
	FindReplaceInFile filename, "@@REVISION@@", revision
8060
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
    20
	FindReplaceInFile filename, "@@VERSION@@", version
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
    21
	FindReplaceInFile filename, "@@DATE@@", cur_date
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
    22
End Sub
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
    23
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
    24
Sub UpdateFiles(version)
8280
ada2ff981779 (svn r11334) -Codechange: add hg detection to MSVC
glx
parents: 8276
diff changeset
    25
	Dim WshShell, cur_date, revision, oExec
ada2ff981779 (svn r11334) -Codechange: add hg detection to MSVC
glx
parents: 8276
diff changeset
    26
	Set WshShell = CreateObject("WScript.Shell")
8060
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
    27
	cur_date = DatePart("D", Date) & "." & DatePart("M", Date) & "." & DatePart("YYYY", Date)
8280
ada2ff981779 (svn r11334) -Codechange: add hg detection to MSVC
glx
parents: 8276
diff changeset
    28
	revision = 0
ada2ff981779 (svn r11334) -Codechange: add hg detection to MSVC
glx
parents: 8276
diff changeset
    29
	Select Case Mid(version, 1, 1)
ada2ff981779 (svn r11334) -Codechange: add hg detection to MSVC
glx
parents: 8276
diff changeset
    30
		Case "r" ' svn
ada2ff981779 (svn r11334) -Codechange: add hg detection to MSVC
glx
parents: 8276
diff changeset
    31
			revision = Mid(version, 2)
ada2ff981779 (svn r11334) -Codechange: add hg detection to MSVC
glx
parents: 8276
diff changeset
    32
			If InStr(revision, "M") Then
ada2ff981779 (svn r11334) -Codechange: add hg detection to MSVC
glx
parents: 8276
diff changeset
    33
				revision = Mid(revision, 1, InStr(revision, "M") - 1)
ada2ff981779 (svn r11334) -Codechange: add hg detection to MSVC
glx
parents: 8276
diff changeset
    34
			End If
ada2ff981779 (svn r11334) -Codechange: add hg detection to MSVC
glx
parents: 8276
diff changeset
    35
			If InStr(revision, "-") Then
ada2ff981779 (svn r11334) -Codechange: add hg detection to MSVC
glx
parents: 8276
diff changeset
    36
				revision = Mid(revision, 1, InStr(revision, "-") - 1)
ada2ff981779 (svn r11334) -Codechange: add hg detection to MSVC
glx
parents: 8276
diff changeset
    37
			End If
ada2ff981779 (svn r11334) -Codechange: add hg detection to MSVC
glx
parents: 8276
diff changeset
    38
		Case "h" ' mercurial (hg)
ada2ff981779 (svn r11334) -Codechange: add hg detection to MSVC
glx
parents: 8276
diff changeset
    39
			Set oExec = WshShell.Exec("hg log -k " & Chr(34) & "svn" & Chr(34) & " -l 1 --template " & Chr(34) & "{desc}\n" & Chr(34) & " ../src")
ada2ff981779 (svn r11334) -Codechange: add hg detection to MSVC
glx
parents: 8276
diff changeset
    40
			If Err.Number = 0 Then
ada2ff981779 (svn r11334) -Codechange: add hg detection to MSVC
glx
parents: 8276
diff changeset
    41
				revision = Mid(OExec.StdOut.ReadLine(), 7)
ada2ff981779 (svn r11334) -Codechange: add hg detection to MSVC
glx
parents: 8276
diff changeset
    42
				revision = Mid(revision, 1, InStr(revision, ")") - 1)
ada2ff981779 (svn r11334) -Codechange: add hg detection to MSVC
glx
parents: 8276
diff changeset
    43
			End If
8413
41a5f63e6062 (svn r11470) -Codechange: add git detection to MSVC (michi_cc)
glx
parents: 8280
diff changeset
    44
		Case "g" ' git
41a5f63e6062 (svn r11470) -Codechange: add git detection to MSVC (michi_cc)
glx
parents: 8280
diff changeset
    45
			Set oExec = WshShell.Exec("git log --pretty=format:%s --grep=" & Chr(34) & "^(svn r[0-9]*)" & Chr(34) & " -1 ../src")
41a5f63e6062 (svn r11470) -Codechange: add git detection to MSVC (michi_cc)
glx
parents: 8280
diff changeset
    46
			if Err.Number = 0 Then
41a5f63e6062 (svn r11470) -Codechange: add git detection to MSVC (michi_cc)
glx
parents: 8280
diff changeset
    47
				revision = Mid(oExec.StdOut.ReadLine(), 7)
41a5f63e6062 (svn r11470) -Codechange: add git detection to MSVC (michi_cc)
glx
parents: 8280
diff changeset
    48
				revision = Mid(revision, 1, InStr(revision, ")") - 1)
41a5f63e6062 (svn r11470) -Codechange: add git detection to MSVC (michi_cc)
glx
parents: 8280
diff changeset
    49
			End If
8280
ada2ff981779 (svn r11334) -Codechange: add hg detection to MSVC
glx
parents: 8276
diff changeset
    50
	End Select
8276
1fe8700644de (svn r11330) -Add: OTTD version checking for NewGRFs. This allows NewGRFs to do something different for different versions of OpenTTD, like disabling it for too low versions or loading different graphics.
rubidium
parents: 8061
diff changeset
    51
1fe8700644de (svn r11330) -Add: OTTD version checking for NewGRFs. This allows NewGRFs to do something different for different versions of OpenTTD, like disabling it for too low versions or loading different graphics.
rubidium
parents: 8061
diff changeset
    52
	UpdateFile revision, version, cur_date, "../src/rev.cpp"
1fe8700644de (svn r11330) -Add: OTTD version checking for NewGRFs. This allows NewGRFs to do something different for different versions of OpenTTD, like disabling it for too low versions or loading different graphics.
rubidium
parents: 8061
diff changeset
    53
	UpdateFile revision, version, cur_date, "../src/ottdres.rc"
8060
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
    54
End Sub
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
    55
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
    56
Function DetermineSVNVersion()
8280
ada2ff981779 (svn r11334) -Codechange: add hg detection to MSVC
glx
parents: 8276
diff changeset
    57
	Dim WshShell, version, url, oExec, line
8060
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
    58
	Set WshShell = CreateObject("WScript.Shell")
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
    59
	On Error Resume Next
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
    60
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
    61
	' Try TortoiseSVN
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
    62
	' Get the directory where TortoiseSVN (should) reside(s)
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
    63
	Dim sTortoise
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
    64
	sTortoise = WshShell.RegRead("HKLM\SOFTWARE\TortoiseSVN\Directory")
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
    65
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
    66
	Dim file
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
    67
	' Write some "magic" to a temporary file so we can acquire the svn revision/state
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
    68
	Set file = FSO.CreateTextFile("tsvn_tmp", -1, 0)
8061
b6d9a2e58173 (svn r11090) -Fix (r11089): incorrect version format and failure with paths containing spaces
glx
parents: 8060
diff changeset
    69
	file.WriteLine "r$WCREV$$WCMODS?M:$"
8060
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
    70
	file.WriteLine "$WCURL$"
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
    71
	file.Close
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
    72
	Set oExec = WshShell.Exec(sTortoise & "\bin\SubWCRev.exe ../src tsvn_tmp tsvn_tmp")
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
    73
	' Wait till the application is finished ...
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
    74
	Do
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
    75
		OExec.StdOut.ReadLine()
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
    76
	Loop While Not OExec.StdOut.atEndOfStream
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
    77
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
    78
	Set file = FSO.OpenTextFile("tsvn_tmp", 1, 0, 0)
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
    79
	version = file.ReadLine
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
    80
	url = file.ReadLine
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
    81
	file.Close
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
    82
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
    83
	Set file = FSO.GetFile("tsvn_tmp")
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
    84
	file.Delete
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
    85
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
    86
	' Looks like there is no TortoiseSVN installed either. Then we don't know it.
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
    87
	If InStr(version, "$") Then
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
    88
		' Reset error and version
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
    89
		Err.Clear
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
    90
		version = "norev000"
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
    91
		' Do we have subversion installed? Check immediatelly whether we've got a modified WC.
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
    92
		Set oExec = WshShell.Exec("svnversion ../src")
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
    93
		If Err.Number = 0 Then
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
    94
			Dim modified
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
    95
			If InStr(OExec.StdOut.ReadLine(), "M") Then
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
    96
				modified = "M"
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
    97
			Else
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
    98
				modified = ""
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
    99
			End If
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
   100
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
   101
			' Set the environment to english
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
   102
			WshShell.Environment("PROCESS")("LANG") = "en"
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
   103
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
   104
			' And use svn info to get the correct revision and branch information.
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
   105
			Set oExec = WshShell.Exec("svn info ../src")
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
   106
			If Err.Number = 0 Then
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
   107
				Do
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
   108
					line = OExec.StdOut.ReadLine()
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
   109
					If InStr(line, "URL") Then
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
   110
						url = line
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
   111
					End If
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
   112
					If InStr(line, "Last Changed Rev") Then
8061
b6d9a2e58173 (svn r11090) -Fix (r11089): incorrect version format and failure with paths containing spaces
glx
parents: 8060
diff changeset
   113
						version = "r" & Mid(line, 19) & modified
8060
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
   114
					End If
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
   115
				Loop While Not OExec.StdOut.atEndOfStream
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
   116
			End If
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
   117
		End If
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
   118
	End If
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
   119
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
   120
	If version <> "norev000" Then
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
   121
		If InStr(url, "branches") Then
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
   122
			url = Mid(url, InStr(url, "branches") + 8)
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
   123
			url = Mid(url, 1, InStr(2, url, "/") - 1)
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
   124
			version = version & Replace(url, "/", "-")
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
   125
		End If
8280
ada2ff981779 (svn r11334) -Codechange: add hg detection to MSVC
glx
parents: 8276
diff changeset
   126
	Else
8413
41a5f63e6062 (svn r11470) -Codechange: add git detection to MSVC (michi_cc)
glx
parents: 8280
diff changeset
   127
		' svn detection failed, reset error and try git
8280
ada2ff981779 (svn r11334) -Codechange: add hg detection to MSVC
glx
parents: 8276
diff changeset
   128
		Err.Clear
8413
41a5f63e6062 (svn r11470) -Codechange: add git detection to MSVC (michi_cc)
glx
parents: 8280
diff changeset
   129
		Set oExec = WshShell.Exec("git rev-parse --verify --short=8 HEAD")
8471
f2d28f334d63 (svn r11531) -Fix [FS#1459]: version determination did stall (read: never finish) when both svn and git were not installed.
rubidium
parents: 8413
diff changeset
   130
		If Err.Number = 0 Then
8413
41a5f63e6062 (svn r11470) -Codechange: add git detection to MSVC (michi_cc)
glx
parents: 8280
diff changeset
   131
			version = "g" & oExec.StdOut.ReadLine()
41a5f63e6062 (svn r11470) -Codechange: add git detection to MSVC (michi_cc)
glx
parents: 8280
diff changeset
   132
			Set oExec = WshShell.Exec("git diff-index --exit-code --quiet HEAD ../src")
41a5f63e6062 (svn r11470) -Codechange: add git detection to MSVC (michi_cc)
glx
parents: 8280
diff changeset
   133
			Do While oExec.Status = 0 And Err.Number = 0
41a5f63e6062 (svn r11470) -Codechange: add git detection to MSVC (michi_cc)
glx
parents: 8280
diff changeset
   134
			Loop
41a5f63e6062 (svn r11470) -Codechange: add git detection to MSVC (michi_cc)
glx
parents: 8280
diff changeset
   135
			If Err.Number = 0 And oExec.ExitCode = 1 Then
41a5f63e6062 (svn r11470) -Codechange: add git detection to MSVC (michi_cc)
glx
parents: 8280
diff changeset
   136
				version = version & "M"
41a5f63e6062 (svn r11470) -Codechange: add git detection to MSVC (michi_cc)
glx
parents: 8280
diff changeset
   137
			End If
41a5f63e6062 (svn r11470) -Codechange: add git detection to MSVC (michi_cc)
glx
parents: 8280
diff changeset
   138
41a5f63e6062 (svn r11470) -Codechange: add git detection to MSVC (michi_cc)
glx
parents: 8280
diff changeset
   139
			Set oExec = WshShell.Exec("git symbolic-ref HEAD")
8280
ada2ff981779 (svn r11334) -Codechange: add hg detection to MSVC
glx
parents: 8276
diff changeset
   140
			If Err.Number = 0 Then
8413
41a5f63e6062 (svn r11470) -Codechange: add git detection to MSVC (michi_cc)
glx
parents: 8280
diff changeset
   141
				line = oExec.StdOut.ReadLine()
41a5f63e6062 (svn r11470) -Codechange: add git detection to MSVC (michi_cc)
glx
parents: 8280
diff changeset
   142
				line = Mid(line, InStrRev(line, "/")+1)
41a5f63e6062 (svn r11470) -Codechange: add git detection to MSVC (michi_cc)
glx
parents: 8280
diff changeset
   143
				If line <> "master" Then
41a5f63e6062 (svn r11470) -Codechange: add git detection to MSVC (michi_cc)
glx
parents: 8280
diff changeset
   144
					version = version & "-" & line
41a5f63e6062 (svn r11470) -Codechange: add git detection to MSVC (michi_cc)
glx
parents: 8280
diff changeset
   145
				End If
8280
ada2ff981779 (svn r11334) -Codechange: add hg detection to MSVC
glx
parents: 8276
diff changeset
   146
			End If
8413
41a5f63e6062 (svn r11470) -Codechange: add git detection to MSVC (michi_cc)
glx
parents: 8280
diff changeset
   147
		Else
41a5f63e6062 (svn r11470) -Codechange: add git detection to MSVC (michi_cc)
glx
parents: 8280
diff changeset
   148
			' try mercurial (hg)
41a5f63e6062 (svn r11470) -Codechange: add git detection to MSVC (michi_cc)
glx
parents: 8280
diff changeset
   149
			Err.Clear
41a5f63e6062 (svn r11470) -Codechange: add git detection to MSVC (michi_cc)
glx
parents: 8280
diff changeset
   150
			Set oExec = WshShell.Exec("hg tip")
8280
ada2ff981779 (svn r11334) -Codechange: add hg detection to MSVC
glx
parents: 8276
diff changeset
   151
			If Err.Number = 0 Then
8413
41a5f63e6062 (svn r11470) -Codechange: add git detection to MSVC (michi_cc)
glx
parents: 8280
diff changeset
   152
				version = "h" & Mid(OExec.StdOut.ReadLine(), 19, 8)
41a5f63e6062 (svn r11470) -Codechange: add git detection to MSVC (michi_cc)
glx
parents: 8280
diff changeset
   153
				Set oExec = WshShell.Exec("hg status ../src")
41a5f63e6062 (svn r11470) -Codechange: add git detection to MSVC (michi_cc)
glx
parents: 8280
diff changeset
   154
				If Err.Number = 0 Then
41a5f63e6062 (svn r11470) -Codechange: add git detection to MSVC (michi_cc)
glx
parents: 8280
diff changeset
   155
					Do
41a5f63e6062 (svn r11470) -Codechange: add git detection to MSVC (michi_cc)
glx
parents: 8280
diff changeset
   156
						line = OExec.StdOut.ReadLine()
41a5f63e6062 (svn r11470) -Codechange: add git detection to MSVC (michi_cc)
glx
parents: 8280
diff changeset
   157
						If Mid(line, 1, 1) <> "?" Then
41a5f63e6062 (svn r11470) -Codechange: add git detection to MSVC (michi_cc)
glx
parents: 8280
diff changeset
   158
							version = version & "M"
41a5f63e6062 (svn r11470) -Codechange: add git detection to MSVC (michi_cc)
glx
parents: 8280
diff changeset
   159
							Exit Do
41a5f63e6062 (svn r11470) -Codechange: add git detection to MSVC (michi_cc)
glx
parents: 8280
diff changeset
   160
						End If
41a5f63e6062 (svn r11470) -Codechange: add git detection to MSVC (michi_cc)
glx
parents: 8280
diff changeset
   161
					Loop While Not OExec.StdOut.atEndOfStream
41a5f63e6062 (svn r11470) -Codechange: add git detection to MSVC (michi_cc)
glx
parents: 8280
diff changeset
   162
				End If
41a5f63e6062 (svn r11470) -Codechange: add git detection to MSVC (michi_cc)
glx
parents: 8280
diff changeset
   163
				Set oExec = WshShell.Exec("hg branch")
41a5f63e6062 (svn r11470) -Codechange: add git detection to MSVC (michi_cc)
glx
parents: 8280
diff changeset
   164
				If Err.Number = 0 Then
41a5f63e6062 (svn r11470) -Codechange: add git detection to MSVC (michi_cc)
glx
parents: 8280
diff changeset
   165
						line = OExec.StdOut.ReadLine()
41a5f63e6062 (svn r11470) -Codechange: add git detection to MSVC (michi_cc)
glx
parents: 8280
diff changeset
   166
						If line <> "default" Then
41a5f63e6062 (svn r11470) -Codechange: add git detection to MSVC (michi_cc)
glx
parents: 8280
diff changeset
   167
							version = version & "-" & line
41a5f63e6062 (svn r11470) -Codechange: add git detection to MSVC (michi_cc)
glx
parents: 8280
diff changeset
   168
						End If
41a5f63e6062 (svn r11470) -Codechange: add git detection to MSVC (michi_cc)
glx
parents: 8280
diff changeset
   169
				End If
8280
ada2ff981779 (svn r11334) -Codechange: add hg detection to MSVC
glx
parents: 8276
diff changeset
   170
			End If
ada2ff981779 (svn r11334) -Codechange: add hg detection to MSVC
glx
parents: 8276
diff changeset
   171
		End If
8060
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
   172
	End If
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
   173
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
   174
	DetermineSVNVersion = version
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
   175
End Function
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
   176
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
   177
Function IsCachedVersion(version)
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
   178
	Dim cache_file, cached_version
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
   179
	cached_version = ""
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
   180
	Set cache_file = FSO.OpenTextFile("../config.cache.version", 1, True, 0)
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
   181
	If Not cache_file.atEndOfStream Then
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
   182
		cached_version = cache_file.ReadLine()
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
   183
	End If
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
   184
	cache_file.Close
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
   185
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
   186
	If version <> cached_version Then
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
   187
		Set cache_file = fso.CreateTextFile("../config.cache.version", True)
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
   188
		cache_file.WriteLine(version)
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
   189
		cache_file.Close
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
   190
		IsCachedVersion = False
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
   191
	Else
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
   192
		IsCachedVersion = True
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
   193
	End If
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
   194
End Function
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
   195
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
   196
Dim version
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
   197
version = DetermineSVNVersion
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
   198
If Not (IsCachedVersion(version) And FSO.FileExists("../src/rev.cpp") And FSO.FileExists("../src/ottdres.rc")) Then
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
   199
	UpdateFiles version
0e36becca525 (svn r11089) -Codechange: add revision detection to MSVC.
rubidium
parents:
diff changeset
   200
End If