summaryrefslogtreecommitdiff
path: root/diddohs.hs
diff options
context:
space:
mode:
Diffstat (limited to 'diddohs.hs')
-rw-r--r--diddohs.hs26
1 files changed, 19 insertions, 7 deletions
diff --git a/diddohs.hs b/diddohs.hs
index 7ee35cd..6baa5e9 100644
--- a/diddohs.hs
+++ b/diddohs.hs
@@ -3,7 +3,9 @@ import Data.DateTime( parseDateTime, startOfTime, diffSeconds, formatDateTime )
import Data.List( zip4, zipWith4, transpose )
import Data.List.Split( splitOn )
import Data.Maybe( fromJust, fromMaybe )
+import Data.Monoid( mempty )
import Data.Time.Clock( secondsToDiffTime )
+import Options.Applicative( execParser, info, strOption, long )
import System.Environment( getArgs )
import Text.Printf( printf )
@@ -24,17 +26,27 @@ data DiddoEntry = DiddoEntry { start :: String
instance Show DiddoEntry where
show (DiddoEntry start finish delta entry) = printf "%s;%s;%s;%s" start finish (show delta) entry
-main :: IO ()
-main = do
- logfile_name : timestring_format : _ <- getArgs
- logfile_lines_split <- map (splitOn ";") . lines <$> readFile logfile_name
+data DiddoOpts = DiddoOpts
+ { inDateFmt :: String
+ , inFile :: String
+ }
- let [timestrings_finish
+mainWithOpts :: DiddoOpts -> IO ()
+mainWithOpts opts = do
+ [timestrings_finish
, entries
- ] = transpose logfile_lines_split
- utcTimes_finish = map (fromMaybe (error "Input data broken.") . parseDateTime timestring_format) timestrings_finish
+ ] <- transpose . map (splitOn ";") . lines <$> readFile (inFile opts)
+ let utcTimes_finish = map (fromMaybe (error "Input data broken.") . parseDateTime (inDateFmt opts)) timestrings_finish
entry_deltas_HMMSS = zipWith (\x y -> secondsToHMS $ diffSeconds x y) utcTimes_finish (startOfTime : init utcTimes_finish)
diddos_summarized = zipWith4 DiddoEntry ("" : init timestrings_finish) timestrings_finish entry_deltas_HMMSS entries
mapM_ print diddos_summarized
+main :: IO ()
+main = execParser opts >>= mainWithOpts
+ where
+ opts = info parser mempty
+ parser = DiddoOpts
+ <$> strOption ( long "indateform" )
+ <*> strOption ( long "infile" )
+