packages feed

perceptual-hash-0.1.0.0: app/Parser.hs

module Parser ( wrapper ) where

import           Data.Semigroup        ((<>))
import           Data.Version          as V
import           Options.Applicative
import qualified Paths_perceptual_hash as P

phashVersion :: V.Version
phashVersion = P.version

debug :: Parser Bool
debug =
    switch
    (long "debug"
    <> help "Show debug output")

targets :: Parser ([FilePath], Bool)
targets = (,)
    <$> some (argument str
             (metavar "DIRECTORY"
             <> help "Directory to include"))
    <*> debug

wrapper :: ParserInfo ([FilePath], Bool)
wrapper = info (helper <* versionInfo <*> targets)
    (fullDesc
    <> progDesc "A command-line tool to detect duplicate images."
    <> header "phash - find duplicates using perceptual hashes")

versionInfo :: Parser (a -> a)
versionInfo = infoOption ("phash version: " ++ V.showVersion phashVersion) (short 'V' <> long "version" <> help "Show version")