hask-home-2006.3.23: bump-version.hs
#!/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