{-# LANGUAGE DeriveDataTypeable #-} module Diffy where import System.Console.CmdArgs data Diffy = Create {src :: FilePath, out :: FilePath} | Diff {old :: FilePath, new :: FilePath, out :: FilePath} deriving (Data,Typeable,Show,Eq) outFlags = text "Output file" & typFile create = mode $ Create {src = "." &= text "Source directory" & typDir ,out = "ls.txt" &= outFlags } &= prog "diffy" & text "Create a fingerprint" diff = mode $ Diff {old = def &= typ "OLDFILE" & argPos 0 ,new = def &= typ "NEWFILE" & argPos 1 ,out = "diff.txt" &= outFlags } &= text "Perform a diff" modes = [create,diff] main = print =<< cmdArgs "Diffy v1.0" modes