module Header ( withSpecHead, headerOption, headerVersion ) where import Data.List (isPrefixOf) import SimpleCmd (removePrefix) import FileUtils (assertFileNonEmpty) withSpecHead :: FilePath -> ([String] -> IO a) -> IO a withSpecHead spec act = do assertFileNonEmpty spec readFile spec >>= (act . headerWords) where headerWords :: String -> [String] headerWords = words . head . lines headerVersion :: [String] -> String headerVersion headerwords = let cblrpm = filter ("cabal-rpm-" `isPrefixOf`) headerwords in case cblrpm of [nv] -> removePrefix "cabal-rpm-" nv _ -> "0.9.11" headerOption :: String -> [String] -> Maybe String headerOption opt headerwords = if opt `elem` headerwords then (Just . head . tail . dropWhile (/= opt)) headerwords else Nothing