From efab3b7f013066f6a12d1557ab1925d023f84efb Mon Sep 17 00:00:00 2001 From: Dmitry Zuikov Date: Fri, 2 Aug 2024 18:42:45 +0300 Subject: [PATCH] wip, cant do any faster --- .../lib/Data/Config/Suckless/Script/File.hs | 26 +++++-------------- 1 file changed, 6 insertions(+), 20 deletions(-) diff --git a/hbs2-cli/lib/Data/Config/Suckless/Script/File.hs b/hbs2-cli/lib/Data/Config/Suckless/Script/File.hs index 25eb7e6d..e989932d 100644 --- a/hbs2-cli/lib/Data/Config/Suckless/Script/File.hs +++ b/hbs2-cli/lib/Data/Config/Suckless/Script/File.hs @@ -20,8 +20,6 @@ import UnliftIO import Control.Concurrent.STM qualified as STM import Streaming.Prelude qualified as S -import Data.List.Split (chunksOf) - glob :: forall m . MonadIO m => [FilePattern] -- ^ search patterns -> [FilePattern] -- ^ ignore patterns @@ -30,25 +28,14 @@ glob :: forall m . MonadIO m -> m () glob pat ignore dir action = do - q <- newTQueueIO - void $ liftIO (async $ go q dir >> atomically (writeTQueue q Nothing)) - - flip runContT pure do - callCC \exit -> do - fix $ \next -> do - e <- atomically do - void (peekTQueue q) - STM.flushTQueue q - - for_ e $ \case - Nothing -> exit () - Just x -> do - r <- lift (action x) - unless r (exit ()) - - next + fix $ \next -> do + atomically (readTQueue q) >>= \case + Nothing -> pure () + Just x -> do + r <- action x + when r next where @@ -72,7 +59,6 @@ glob pat ignore dir action = do forConcurrently_ co (go q) - entries :: forall c m . ( IsContext c , Exception (BadFormException c) , MonadUnliftIO m)