Repository : ssh://darcs.haskell.org//srv/darcs/packages/Cabal On branch : master
http://hackage.haskell.org/trac/ghc/changeset/264e38d82d2d4b065b688f447e2560ce3b7dd36a >--------------------------------------------------------------- commit 264e38d82d2d4b065b688f447e2560ce3b7dd36a Author: Duncan Coutts <[email protected]> Date: Mon Mar 10 23:33:46 2008 +0000 Make the 'upload' command more self explanatory It tells you what to do if you don't supply any args, rather than doing nothing and it check for simple mistakes and gives helpful error messages. >--------------------------------------------------------------- cabal-install/Main.hs | 21 ++++++++++++++++++++- 1 files changed, 20 insertions(+), 1 deletions(-) diff --git a/cabal-install/Main.hs b/cabal-install/Main.hs index 6435d41..b308ede 100644 --- a/cabal-install/Main.hs +++ b/cabal-install/Main.hs @@ -21,7 +21,7 @@ import Distribution.Simple.Program (defaultProgramConfiguration) import Distribution.Simple.Command import Distribution.Simple.SetupWrapper (setupWrapper) import Distribution.Simple.Configure (configCompilerAux) -import Distribution.Simple.Utils (cabalVersion, die) +import Distribution.Simple.Utils (cabalVersion, die, intercalate) import Hackage.Config (SavedConfig(..), savedConfigToConfigFlags, defaultConfigFile, loadConfig, configRepos, configPackageDB) @@ -40,6 +40,8 @@ import qualified Paths_cabal_install (version) import System.Environment (getArgs, getProgName) import System.Exit (exitFailure) +import System.FilePath (splitExtension, takeExtension) +import System.Directory (doesFileExist) import Data.List (intersperse) import Data.Monoid (Monoid(..)) import Control.Monad (unless) @@ -183,6 +185,7 @@ uploadAction flags extraArgs = do config <- loadConfig verbosity configFile -- FIXME: check that the .tar.gz files exist and report friendly error message if not let tarfiles = extraArgs + checkTarFiles tarfiles if fromFlag (uploadCheck flags) then Upload.check verbosity tarfiles else upload verbosity @@ -191,6 +194,22 @@ uploadAction flags extraArgs = do (flagToMaybe $ configUploadPassword config `mappend` uploadPassword flags) tarfiles + where + checkTarFiles tarfiles + | null tarfiles + = die "the 'upload' command expects one or more .tar.gz packages." + | not (null otherFiles) + = die $ "the 'upload' command expects only .tar.gz packages: " + ++ intercalate ", " otherFiles + | otherwise = sequence_ + [ do exists <- doesFileExist tarfile + unless exists $ die $ "file not found: " ++ tarfile + | tarfile <- tarfiles ] + + where otherFiles = filter (not . isTarGzFile) tarfiles + isTarGzFile file = case splitExtension file of + (file', ".gz") -> takeExtension file' == ".tar" + _ -> False checkAction :: Flag Verbosity -> [String] -> IO () checkAction verbosityFlag extraArgs = do _______________________________________________ Cvs-libraries mailing list [email protected] http://www.haskell.org/mailman/listinfo/cvs-libraries
