import Development.Hake import Development.Hake.FunSetRaw import Text.RegexPR (getbrsRegexPR) getV :: String -> String -> String getV k = (!! 1) . getbrsRegexPR ("(?i)^" ++ k ++ "\\s*:\\s*(\\S+)\\s*$") ebuildFile v = "portage/dev-haskell/ehaskell/ehaskell-" ++ v ++ ".ebuild" ebuildGen = "portage/dev-haskell/ehaskell/ehaskell.ebuild.gen" srcName v = "ehaskell-" ++ v ++ ".tar.gz" ftpDir = "/home/ftp/portage/distfiles/" distDir = "dist/" localDir = "/usr/portage/distfiles/" main = do addrs <- readFile "../address_file" cbl <- readFile "ehaskell.cabal" let address = getV "address" addrs user = getV "user" addrs version = getV "version" cbl hake $ [ file [ "install" ] [ ebuildFile version, localDir ++ srcName version ] $ \_ [ ebld, _ ] -> [ [ "emerge", "-av", "ehaskell" ] ] , file [ localDir ++ srcName version ] [ ebuildFile version, ftpDir ++ srcName version ] $ \t [ ebld, _ ] -> [ [ "rm", "-f", t ] , [ "rm", "-f", "portage/dev-haskell/ehaskell/Manifest" ] , [ "ebuild", ebld, "manifest" ] , [ "touch", t ] ] , file [ ebuildFile version ] [ ebuildGen ] $ \t [s] -> [ [ "cp", s, t ] ] , file [ ftpDir ++ srcName version ] [ distDir ++ srcName version ] $ \t [s] -> [ [ "cp", s, t ] ] , task "test_build" $ [ [ "runhaskell", "Setup.hs", "configure" ] , [ "runhaskell", "Setup.hs", "build" ] , [ "runhaskell", "Setup.hs", "sdist" ] ] , task "upload" $ [ [ "yjftp", "put", "dist/ehaskell-" ++ version ++ ".tar.gz", address ++ "/homepage/second/portage/distfiles", user ] ] ]