{-# LANGUAGE TemplateHaskell #-} module HsDev.Version ( cabalVersion ) where import Data.Char import Data.List import Data.Maybe import Language.Haskell.TH cabalVersion :: ExpQ cabalVersion = do s <- runIO (readFile "hsdev.cabal") let version = listToMaybe $ map (dropWhile isSpace) $ mapMaybe (stripPrefix "version:") $ lines s maybe (fail "Can't detect version") (\v -> [e| v |]) version