tea-cleaner: Make no login period configurable

This commit is contained in:
2025-04-13 12:10:56 +02:00
parent 5a4c882d40
commit 0e6de99821
5 changed files with 22 additions and 17 deletions

View File

@ -42,20 +42,20 @@ printStatistics Settings{ statistics } =
$ "Count: " <> count'
handleResults :: Settings -> Bool -> Vector FilterResult -> IO (Vector User)
handleResults settings liveRun =
handleResults settings live =
Vector.foldM' handleResult Vector.empty
where
handleResult accumulator (FilterResult user FailedFilter)
= handleFailedFilter settings liveRun user
= handleFailedFilter settings live 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
handleFailedFilter settings live user = Text.IO.putStrLn buildValue
>> modifyIORef (getField @"statistics" settings) (+ 1)
>> when liveRun (purgeUser settings user)
>> when live (purgeUser settings user)
where
buildValue = getField @"username" user <> "\n"
<> " Website: " <> getField @"website" user <> "\n"
@ -70,12 +70,12 @@ handleFailedFilter settings liveRun user = Text.IO.putStrLn buildValue
main :: IO ()
main = execParser commandLineInfo >>= withArguments
where
withArguments ProgramOptions{ liveRun } = decodeSettingsFile "config/tea-cleaner.toml"
>>= withSettings liveRun
withArguments ProgramOptions{ live } = decodeSettingsFile "config/tea-cleaner.toml"
>>= withSettings live
withSettings :: Bool -> Settings -> IO ()
withSettings liveRun settings = getUsers settings
>>= handleResults settings liveRun . fmap (filterByUserProperties settings)
withSettings live settings = getUsers settings
>>= handleResults settings live . fmap (filterByUserProperties settings)
>>= traverse (filterByActivities settings)
>>= handleResults settings liveRun
>>= handleResults settings live
>> printStatistics settings