summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Main.hs20
1 files changed, 19 insertions, 1 deletions
diff --git a/src/Main.hs b/src/Main.hs
index b65d67e..7506fe4 100644
--- a/src/Main.hs
+++ b/src/Main.hs
@@ -3,7 +3,7 @@
{-# LANGUAGE ViewPatterns #-}
module Main (main) where
-import Control.Monad (forM, guard)
+import Control.Monad (forM, guard, forM_)
import Data.ByteString (ByteString)
import Data.ByteString qualified as BS
import Data.ByteString.Char8 qualified as BS8
@@ -20,6 +20,7 @@ import Data.Text.IO.Utf8 qualified as T
import Data.Time (Day, toGregorian, fromGregorianValid)
import System.Environment
import System.Exit (die)
+import System.FilePath ((</>))
import Text.Mustache (Template, compileTemplate, substituteValue, (~>))
import Text.Mustache qualified as M
import Text.Mustache.Types (Value(..))
@@ -35,6 +36,7 @@ import Config
import Index
import Util
import ZNC
+import System.Directory (listDirectory)
newtype Pages = Pages (Map String Template)
@@ -274,8 +276,24 @@ mainServe confpath = do
testParseLog :: FilePath -> IO ()
testParseLog fname = print =<< parseLog <$> BS.readFile fname
+testCount :: FilePath -> IO ()
+testCount confpath = do
+ config <- enrichConfig <$> readConfig confpath
+ forM_ (econfChannels config) $ \(Channel nw ch) -> do
+ -- forM_ [Channel "liberachat" "#haskell"] $ \(Channel nw ch) -> do
+ let dir = confLogsDir config </> T.unpack nw </> T.unpack ch
+ files <- listDirectory dir
+ forM_ files $ \file -> do
+ evs <- parseLog <$> BS.readFile (dir </> file)
+ forM_ evs $ \case
+ (_, Talk _ msg) -> return ()
+ (_, Notice n msg) -> error (show (n, msg))
+ (_, Act _ msg) -> return ()
+ _ -> return ()
+
main :: IO ()
main = getArgs >>= \case
["test", "parselog", fname] -> testParseLog fname
+ ["test", "count", fname] -> testCount fname
["serve", fname] -> mainServe fname
_ -> die "Expected command-line argument (see Main.hs)"