#!/usr/bin/env runghc import Data.Char import Data.List import Distribution.Simple.Utils import System.Directory import System.Locale import System.Time bumpVersion v x | "version:" `isPrefixOf` map toLower x = "Version: " ++ v | otherwise = x newVersion = do t <- getClockTime >>= toCalendarTime let f = formatCalendarTime defaultTimeLocale "%Y.%m.%d" t return $ dropZero f dropZero [] = [] dropZero ('.':xs) = '.' : dropZero (dropWhile (=='0') xs) dropZero (x:xs) = x : dropZero xs main = do packageDesc <- defaultPackageDesc f <- readFile packageDesc let tmpFile = packageDesc ++ ".tmp" v <- newVersion let f' = unlines $ map (bumpVersion v) $ lines f writeFile tmpFile f' renameFile tmpFile packageDesc