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 +3/−3
- results/Main.hs +34/−17
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"