Dust-tools-1.3.2: Dust/Model/export.hs
import qualified Data.ByteString as B
import qualified Data.ByteString.Lazy as BL
import Data.ByteString.Char8 (pack)
import System.Environment (getArgs)
import System.IO.Error
import Data.Serialize
import Text.CSV
import Data.List as L
import Data.Word
import Foreign.Ptr
import Foreign.ForeignPtr
import Control.Monad
import System.Directory
import Dust.Model.TrafficModel
import Dust.Model.PacketLength
import Dust.Model.Content
import Dust.Model.Observations
main = do
args <- getArgs
case args of
(modelpath:csvpath:_) -> export modelpath csvpath
otherwise -> putStrLn "Usage: export [observation-file] [csv-file]"
export :: FilePath -> FilePath -> IO()
export modelpath csvpath = do
eitherObs <- loadObservations modelpath
case eitherObs of
Left error -> putStrLn "Could not load observations"
Right obs -> do
let model = makeModel obs
let text = csvify modelpath model
writeFile csvpath text
csvify :: String -> TrafficModel -> String
csvify name (TrafficModel (PacketLengthModel ls) _ _) =
name ++ "\n" ++ (unlines $ map show ls)