diff tests/makewebstatistics.d @ 257:4234b014a4f2 trunk

[svn r275] improved makewebstatistics
author ChristianK
date Thu, 12 Jun 2008 18:40:47 +0200
parents 26127a48bc09
children 5723b7385c25
line wrap: on
line diff
--- a/tests/makewebstatistics.d	Thu Jun 12 18:22:33 2008 +0200
+++ b/tests/makewebstatistics.d	Thu Jun 12 18:40:47 2008 +0200
@@ -333,11 +333,20 @@
 int main(char[][] args){
 
 	if(args.length < 2){
-		fwritefln(stderr, "%s <log> <log> ...", args[0]);
+		fwritefln(stderr, "%s [--regenerate] <log> <log> ...", args[0]);
 		fwritefln(stderr, "bash example: %s $(ls reference/llvmdc*)", args[0]);
 		return 1;
 	}
 
+	bool regenerate = false;
+	char[][] files;
+	if(args[1] == "--regenerate") {
+		regenerate = true;
+		files = args[2..$];
+	} else {
+		files = args[1..$];
+	}
+
 	// make sure base path exists
 	char[] basedir = "web";
 	if(std.file.exists(basedir) && !std.file.isdir(basedir))
@@ -349,14 +358,16 @@
 	Log[char[]] logs;
 
 	// parse log and emit per-log data if necessary
-	foreach(char[] file; args[1 .. $]){
+	foreach(char[] file; files){
 		char[] id = std.path.getBaseName(file);
 		char[] dirname = std.path.join(basedir, id);
 
 		if(std.file.exists(dirname)) {
 			if(std.file.isdir(dirname)) {
-				writefln("Directory ", dirname, " already exists, skipping...");
-				continue;
+				if(!regenerate) {
+					writefln("Directory ", dirname, " already exists, skipping...");
+					continue;
+				}
 			}
 			else
 				throw new Exception(dirname ~ " is not a directory!");
@@ -388,7 +399,7 @@
 		foreach(tkey; log.tests.keys.sort) {
 			auto test = log.tests[tkey];
 			auto result = test.r & Result.BASE_MASK;
-			resultsfile[result].writefln(test.name, " in ", test.file, "<br>");
+			resultsfile[result].writefln(test.name, " in ", test.file);
 		}
 
 
@@ -405,16 +416,18 @@
 	}
 	
 	// differences between logs
-	foreach(int i, char[] file; args[2 .. $]){
-		char[] newid = std.path.getBaseName(args[2+i]);
-		char[] oldid = std.path.getBaseName(args[2+i-1]);
+	foreach(int i, char[] file; files[1 .. $]){
+		char[] newid = std.path.getBaseName(files[1+i]);
+		char[] oldid = std.path.getBaseName(files[1+i-1]);
 
 		char[] dirname = std.path.join(basedir, oldid ~ "-to-" ~ newid);
 
 		if(std.file.exists(dirname)) {
 			if(std.file.isdir(dirname)) {
-				writefln("Directory ", dirname, " already exists, skipping...");
-				continue;
+				if(!regenerate) {
+					writefln("Directory ", dirname, " already exists, skipping...");
+					continue;
+				}
 			}
 			else
 				throw new Exception(dirname ~ " is not a directory!");
@@ -433,8 +446,8 @@
 				return tmp;
 			}
 		}
-		newLog = getOrParse(newid, args[2+i]);
-		oldLog = getOrParse(oldid, args[2+i-1]);
+		newLog = getOrParse(newid, files[1+i]);
+		oldLog = getOrParse(oldid, files[1+i-1]);
 
 		int nRegressions, nImprovements, nChanges;
 		auto regressionsFile = new BufferedFile(std.path.join(dirname, "regressions.html"), FileMode.Out);
@@ -463,7 +476,7 @@
 					targetFile = changesFile;
 					nChanges++;
 				}
-				targetFile.writefln(toString(oldT.r), " -> ", toString(t.r), " : ", t.name, " in ", t.file, "<br>");
+				targetFile.writefln(toString(oldT.r), " -> ", toString(t.r), " : ", t.name, " in ", t.file);
 			}
 		}		
 
@@ -502,16 +515,16 @@
 		</tr>
 	`);
 
-	for(int i = args.length - 1; i >= 1; --i) {
-		auto file = args[i];
+	for(int i = files.length - 1; i >= 0; --i) {
+		auto file = files[i];
 		char[] id = std.path.getBaseName(file);
 		char[] statsname = std.path.join(std.path.join(basedir, id), "stats.base");
 		index.writef(cast(char[])std.file.read(statsname));
 
-		if(i == 1) 
+		if(i == 0) 
 			continue;
 
-		char[] newid = std.path.getBaseName(args[i-1]);
+		char[] newid = std.path.getBaseName(files[i-1]);
 		statsname = std.path.join(std.path.join(basedir, newid ~ "-to-" ~ id), "stats.base");
 		index.writef(cast(char[])std.file.read(statsname));
 	}