#!/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
