From 4b6b9b8f197b3fdd81f597c50acbe98fa8103780 Mon Sep 17 00:00:00 2001 From: Mats Rauhala Date: Tue, 1 Jan 2019 17:30:55 +0200 Subject: [PATCH] Retain filename --- src/Main.hs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/Main.hs b/src/Main.hs index 8922528..033cefb 100644 --- a/src/Main.hs +++ b/src/Main.hs @@ -3,10 +3,12 @@ {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE ScopedTypeVariables #-} +{-# LANGUAGE TupleSections #-} module Main where import Codec.Picture import Codec.Picture.Extra (scaleBilinear) +import Data.Bifunctor (second) import Data.Bits import Data.List (foldl') import Data.Word (Word64) @@ -16,6 +18,7 @@ import Pipes.Files import qualified Pipes.Prelude as P import Pipes.Safe (runSafeT) + data Cmd = Cmd { source :: FilePath , target :: FilePath , recursive :: Bool @@ -36,5 +39,7 @@ fingerprint = hash . grey . scale . convertRGB8 main :: IO () main = do Cmd{..} <- getRecord "Image duplicate finder" - runSafeT (runEffect (for (find source (glob "*.jpg" <> regular) >-> P.mapM (liftIO . readImage) >-> P.map (fmap fingerprint)) (liftIO . print))) + runSafeT $ + runEffect $ + for (find source (glob "*.jpg" <> regular) >-> P.mapM (\path -> fmap (path,) <$> liftIO (readImage path)) >-> P.map (fmap (second fingerprint))) (liftIO . print) putStrLn "Hello, Haskell!"