packages feed

buildbox-tools 1.3.0.1 → 1.5.0.1

raw patch · 2 files changed

+37/−20 lines, 2 filesdep ~buildboxdep ~parseargs

Dependency ranges changed: buildbox, parseargs

Files

buildbox-tools.cabal view
@@ -1,5 +1,5 @@ Name:                buildbox-tools-Version:             1.3.0.1+Version:             1.5.0.1 License:             BSD3 License-file:        LICENSE Author:              Ben Lippmeier@@ -21,7 +21,7 @@ Executable buildbox-results   Build-depends:          base                 == 4.*,-        buildbox             == 1.3.*,-        parseargs            == 0.1.*+        buildbox             == 1.5.*,+        parseargs            == 0.1.3.*   Main-is: Main.hs   hs-source-dirs: results 
results/Main.hs view
@@ -5,10 +5,11 @@ import BuildBox.FileFormat.BuildResults import System.Console.ParseArgs	hiding (args) import Data.List+import Control.Monad  main :: IO () main - = do	args	<- parseArgsIO ArgsTrailing resultsArgs+ = do	args	<- parseArgsIO (ArgsTrailing "files") resultsArgs 	mainWithArgs args  mainWithArgs :: Args ResultsArg -> IO ()@@ -35,21 +36,7 @@ 			$ vcat 			$ map (text . benchResultName) 			$ buildResultBench results---	-- Merge two results files, prefering benchmark results on the left.-	-- The time and environment fields are taken from the file on the right.-	| gotArg args ArgMerge-	= do	-		-- Read all the files.-		let fileNames	= argsRest args-		contentss <- mapM readFile fileNames-		let (results :: [BuildResults])-			  = map read contentss 			-		print $ mergeResults results--		 	-- Compare two results files. 	| gotArg args ArgCompare 	= do	let fileNames	= argsRest args@@ -66,7 +53,7 @@ 				(map statBenchResult baseline) 				(map statBenchResult current) -	-- Compare two results files.+	-- Compare two results files and summarise them. 	| Just swing	<- getArg args ArgSummarise 	= do	let fileNames	= argsRest args 		contentss	<- mapM readFile fileNames@@ -78,7 +65,37 @@ 			$ compareManyBenchResults  				(map statBenchResult baseline) 				(map statBenchResult current)-			 ++	-- Merge two results files, prefering benchmark results on the left.+	-- The time and environment fields are taken from the file on the right.+	| gotArg args ArgMerge+	= do	+		-- Read all the files.+		let fileNames	= argsRest args+		contentss <- mapM readFile fileNames+		let (results :: [BuildResults])+			  = map read contentss+			+		print $ mergeResults results++	-- Accept the most recent run of a named benchmark.+	| Just name	<- getArg args ArgAccept+	, [fileBase, fileRecent] <- argsRest args+	= do	baseline	<- liftM read $ readFile fileBase+		recent		<- liftM read $ readFile fileRecent+		let Just result	= acceptResult name baseline recent+		print	$ result+	+	-- Advance winning results to form a new baseline.+	| Just swing	<- getArg args ArgAdvance+	= do	let fileNames	= argsRest args+		contentss <- mapM readFile fileNames++		let ([baseline, recent] :: [BuildResults])+			= map read contentss++		print 	$ advanceResults swing baseline recent+		 	| otherwise 	= usageError args "Nothing to do...\n"