{-# LANGUAGE OverloadedStrings #-} module Main where import Distribution.Hackage.Upload import System.Environment import Control.Monad import qualified Data.Text as T main :: IO () main = do args <- getArgs case args of [url, pkg, ver, usr, pwd ] -> let settings = HackageSettings { hackageUrl = T.pack url , hackageUser = T.pack usr , hackageWhiteList = [T.pack url] , hackagePwd = T.pack pwd , hackageUploader = UPL_cabal , hackagePackageName = pkg , hackageBuildDocs = True , hackagePrivatePackage = False , hackagePackageVersion = T.pack ver } in hackageUpload settings [pkg, ver, usr, pwd ] -> do putStrLn "Going to upload to main Hackage. ARE YOU SURE??? [y/n]" areYouSure <- getLine putStrLn "Are you REALLY sure??? [y/n]" reallySure <- getLine when (yesNoParse [areYouSure, reallySure]) $ do let settings = HackageSettings { hackageUrl = T.pack "http://hackage.haskell.org" , hackageUser = T.pack usr , hackageUploader = UPL_cabal , hackageWhiteList = ["http://hackage.haskell.org"] , hackagePwd = T.pack pwd , hackagePackageName = pkg , hackageBuildDocs = True , hackagePrivatePackage = False , hackagePackageVersion = T.pack ver } hackageUpload settings _ -> putStrLn "Usage: [url] pkgName version username pwd" where yesNoParse :: [String] -> Bool yesNoParse = all parseIt parseIt "y" = True parseIt "Y" = True parseIt _ = False