tea-cleaner: Configure word lists
This commit is contained in:
@ -25,19 +25,32 @@ import TeaCleaner.Configuration
|
||||
, execParser
|
||||
)
|
||||
import Control.Monad (when)
|
||||
import Data.IORef (modifyIORef, readIORef)
|
||||
|
||||
handleResults :: Settings -> Bool -> Vector User -> IO ()
|
||||
handleResults settings liveRun users = printCount
|
||||
>> Vector.forM_ users (handleResult settings liveRun)
|
||||
printStatistics :: Settings -> IO ()
|
||||
printStatistics Settings{ statistics } =
|
||||
readIORef statistics >>= printCount
|
||||
where
|
||||
printCount =
|
||||
let count = Text.Builder.decimal $ Vector.length users
|
||||
printCount count =
|
||||
let count' = Text.Builder.decimal count
|
||||
in Text.Lazy.IO.putStrLn
|
||||
$ Text.Builder.toLazyText
|
||||
$ "Count: " <> count
|
||||
$ "Count: " <> count'
|
||||
|
||||
handleResult :: Settings -> Bool -> User -> IO ()
|
||||
handleResult settings liveRun user = Text.IO.putStrLn buildValue
|
||||
handleResults :: Settings -> Bool -> Vector FilterResult -> IO (Vector User)
|
||||
handleResults settings liveRun =
|
||||
Vector.foldM' handleResult Vector.empty
|
||||
where
|
||||
handleResult accumulator (FilterResult user FailedFilter)
|
||||
= handleFailedFilter settings liveRun user
|
||||
>> pure accumulator
|
||||
handleResult accumulator (FilterResult _ PassFilter) = pure accumulator
|
||||
handleResult accumulator (FilterResult user SuspiciousFilter) = pure
|
||||
$ Vector.snoc accumulator user
|
||||
|
||||
handleFailedFilter :: Settings -> Bool -> User -> IO ()
|
||||
handleFailedFilter settings liveRun user = Text.IO.putStrLn buildValue
|
||||
>> modifyIORef (getField @"statistics" settings) (+ 1)
|
||||
>> when liveRun (purgeUser settings user)
|
||||
where
|
||||
buildValue = getField @"username" user <> "\n"
|
||||
@ -58,14 +71,7 @@ main = execParser commandLineInfo >>= withArguments
|
||||
|
||||
withSettings :: Bool -> Settings -> IO ()
|
||||
withSettings liveRun settings = getUsers settings
|
||||
>>= Vector.foldM' foldFilterResult Vector.empty . fmap filterByUserProperties
|
||||
>>= handleResults settings liveRun . fmap (filterByUserProperties settings)
|
||||
>>= traverse (filterByActivities settings)
|
||||
>>= Vector.foldM' foldFilterResult Vector.empty
|
||||
>>= handleResults settings liveRun
|
||||
where
|
||||
foldFilterResult accumulator (FilterResult user SuspiciousFilter)
|
||||
= pure $ Vector.snoc accumulator user
|
||||
foldFilterResult accumulator (FilterResult _ PassFilter) = pure accumulator
|
||||
foldFilterResult accumulator (FilterResult user FailedFilter)
|
||||
= handleResult settings liveRun user
|
||||
>> pure accumulator
|
||||
>> printStatistics settings
|
||||
|
Reference in New Issue
Block a user