packages feed

hatex-guide-1.1.0.0: Setup.hs

import System.Directory
  ( copyFile
  , getAppUserDataDirectory
  , createDirectoryIfMissing
    )
import Text.LaTeX.Guide.Update
import System.FilePath ((</>),(<.>))
import Control.Applicative ((<$>))
-- Cabal
import Distribution.Simple
import Distribution.PackageDescription
import Distribution.PackageDescription.Parse (readPackageDescription)
import Distribution.Verbosity (normal)
-- Version
import Data.Version

main :: IO ()
main = do
  -- Update (create if missing) guide files
  updateGuide "."
  -- Write aux module
  let dg = "Text" </> "LaTeX" </> "Guide"
  createDirectoryIfMissing True dg
  getAux >>= writeFile (dg </> "Auto" <.> "hs") . auxmodule
  --
  defaultMain

data Aux = Aux { guideVersion :: Version }

getAux :: IO Aux
getAux = do
  pd <- packageDescription <$> readPackageDescription normal "hatex-guide.cabal"
  return $ Aux (pkgVersion $ package pd)

auxmodule :: Aux -> String
auxmodule a = unlines [
   "-- | Automatically generated module."
 , "module Text.LaTeX.Guide.Auto ("
 , "  guideVersion"
 , "    ) where"
 , ""
 , "import Data.Version"
 , ""
 , "-- | The version of the guide. Based on the version of the package."
 , "guideVersion :: Version"
 , "guideVersion = " ++ (let v = guideVersion a
                         in  "Version " ++ show (versionBranch v) ++ " []")
   ]