module H.Common (
module Hydrogen.Prelude
, module Hydrogen.CliArgs
, Tool
, LogLevel (..)
, getOpts
, onFiles
, (>+>)
, (<+<)
) where
import Hydrogen.Prelude hiding (log)
import Hydrogen.CliArgs hiding (getOpts)
import Hydrogen.Parsing
type Tool = (LogLevel -> String -> IO ()) -> [String] -> IO ()
data LogLevel = WARN | INFO | FINE | FINER | FINEST
deriving (Eq, Ord, Enum, Show, Read, Generic, Typeable)
onFiles :: (String -> IO ()) -> [String] -> IO ()
onFiles f = \case
[] -> getContents >>= f
fs -> mapM_ (readFile >=> f) fs
getOpts :: [String] -> [Option] -> OptArgs
getOpts = flip getOpts'