summaryrefslogtreecommitdiff
path: root/projects/generate.vbs
diff options
context:
space:
mode:
authorglx <glx@openttd.org>2008-04-18 16:20:04 +0000
committerglx <glx@openttd.org>2008-04-18 16:20:04 +0000
commit3547e6d2ba7d0d149e7f09e7d53fad8caf17661a (patch)
treece29a6d12c5b60bbd73b184a987ae54fb7ed9dce /projects/generate.vbs
parent0cecc4af20fd6461505a875c8d1f6e5e3dd20d08 (diff)
downloadopenttd-3547e6d2ba7d0d149e7f09e7d53fad8caf17661a.tar.xz
(svn r12770) -Add: check for missing (forgotten) header files in the generate.vbs script.
Diffstat (limited to 'projects/generate.vbs')
-rwxr-xr-xprojects/generate.vbs80
1 files changed, 80 insertions, 0 deletions
diff --git a/projects/generate.vbs b/projects/generate.vbs
index 1435e84a1..fe6e0187b 100755
--- a/projects/generate.vbs
+++ b/projects/generate.vbs
@@ -46,6 +46,85 @@ Sub safety_check(filename)
file.Close
End Sub
+Sub get_files(srcdir, dir, list)
+ Dim file, filename
+ Dim rekeep, reskip
+
+ ' pattern for files to keep
+ Set rekeep = New RegExp
+ rekeep.Pattern = "\.h"
+ rekeep.Global = True
+
+ ' pattern for files to exclude
+ Set reskip = New RegExp
+ reskip.Pattern = "\.svn|\.hpp\.sq"
+ reskip.Global = True
+
+ For Each file in dir.Files
+ filename = Replace(file.path, srcdir, "") ' Remove */src/
+ filename = Replace(filename, "\", "/") ' Replace separators
+ If rekeep.Test(filename) And Not reskip.Test(filename) Then
+ list.Add filename, filename
+ End If
+ Next
+End Sub
+
+Sub get_dir_files(srcdir, dir, list)
+ Dim folder
+ ' Get files
+ get_files srcdir, dir, list
+
+ ' Recurse in subfolders
+ For Each folder in dir.SubFolders
+ get_dir_files srcdir, folder, list
+ Next
+End Sub
+
+Sub headers_check(filename, dir)
+ Dim source_list_headers, src_dir_headers, regexp, line, file, str
+
+ ' Define regexp for source.list parsing
+ Set regexp = New RegExp
+ regexp.Pattern = "\.h"
+ regexp.Global = True
+
+ ' Parse source.list and store headers in a dictionary
+ Set source_list_headers = CreateObject("Scripting.Dictionary")
+ Set file = FSO.OpenTextFile(filename, 1, 0, 0)
+ While Not file.AtEndOfStream
+ line = Replace(file.ReadLine, Chr(9), "") ' Remove tabs
+ If Len(line) > 0 And regexp.Test(line) And line <> "../objs/langs/table/strings.h" Then
+ source_list_headers.Add line, line
+ End If
+ Wend
+ file.Close()
+
+ ' Get header files in /src/
+ Set src_dir_headers = CreateObject("Scripting.Dictionary")
+ get_dir_files dir, FSO.GetFolder(dir), src_dir_headers
+
+ ' Finding files in source.list but not in /src/
+ For Each line In source_list_headers
+ If Not src_dir_headers.Exists(line) Then
+ str = str & "< " & line & vbCrLf
+ End If
+ Next
+
+ ' Finding files in /src/ but not in source.list
+ For Each line In src_dir_headers
+ If Not source_list_headers.Exists(line) Then
+ str = str & "> " & line & vbCrLf
+ End If
+ Next
+
+ ' Display the missing files if any
+ If str <> "" Then
+ str = "The following headers are missing in source.list and not in /src/ or vice versa." _
+ & vbCrLf & str
+ WScript.Echo str
+ End If
+End Sub
+
Function load_main_data(filename)
Dim res, file, line, deep, skip, first_time
res = ""
@@ -171,6 +250,7 @@ If Not FSO.FileExists(ROOT_DIR & "/source.list") Then
End If
safety_check ROOT_DIR & "/source.list"
+headers_check ROOT_DIR & "/source.list", ROOT_DIR & "\src\" ' Backslashes needed for DoFiles
Dim openttd
openttd = load_main_data(ROOT_DIR &"/source.list")