Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

64 lines (55 sloc) 3.183 kb
{-# LANGUAGE DeriveDataTypeable #-}
module Error (HackPortError(..), throwEx, catchEx, hackPortShowError) where
import Data.Typeable
import Control.Exception.Extensible as EE
import Control.Monad.Error
data HackPortError
= ArgumentError String
| ConnectionFailed String String
| PackageNotFound String
| InvalidTarballURL String String
| InvalidSignatureURL String String
| VerificationFailed String String
| DownloadFailed String String
| UnknownCompression String
| UnpackingFailed String Int
| NoCabalFound String
| ExtractionFailed String String Int
| CabalParseFailed String String
| BashNotFound
| BashError String
| NoOverlay
| MultipleOverlays [String]
| UnknownVerbosityLevel String
-- | WrongCacheVersion
-- | InvalidCache
| InvalidServer String
deriving (Typeable, Show)
instance Error HackPortError where
instance Exception HackPortError where
throwEx :: HackPortError -> IO a
throwEx = EE.throw
catchEx :: IO a -> (HackPortError -> IO a) -> IO a
catchEx = EE.catch
hackPortShowError :: HackPortError -> String
hackPortShowError err = case err of
ArgumentError str -> "Argument error: "++str
ConnectionFailed server reason -> "Connection to hackage server '"++server++"' failed: "++reason
PackageNotFound pkg -> "Package '"++ pkg ++"' not found on server. Try 'hackport update'?"
InvalidTarballURL url reason -> "Error while downloading tarball '"++url++"': "++reason
InvalidSignatureURL url reason -> "Error while downloading signature '"++url++"': "++reason
VerificationFailed file signature -> "Error while checking signature('"++signature++"') of '"++file++"'"
DownloadFailed url reason -> "Error while downloading '"++url++"': "++reason
UnknownCompression tarball -> "Couldn't guess compression type of '"++tarball++"'"
UnpackingFailed tarball code -> "Unpacking '"++tarball++"' failed with exit code '"++show code++"'"
NoCabalFound tarball -> "Tarball '"++tarball++"' doesn't contain a cabal file"
ExtractionFailed tarball file code -> "Extracting '"++file++"' from '"++tarball++"' failed with '"++show code++"'"
CabalParseFailed file reason -> "Error while parsing cabal file '"++file++"': "++reason
BashNotFound -> "The 'bash' executable was not found. It is required to figure out your portage-overlay. If you don't want to install bash, use '-p path-to-overlay'"
BashError str -> "Error while guessing your portage-overlay. Either set PORTDIR_OVERLAY in /etc/make.conf or use '-p path-to-overlay'.\nThe error was: \""++str++"\""
MultipleOverlays overlays -> "You have the following overlays available: '"++unwords overlays++"'. Please choose one by using 'hackport -p path-to-overlay' <command>"
NoOverlay -> "You don't have PORTDIR_OVERLAY set in '/etc/make.conf'. Please set it or use '-p path-to-overlay'"
UnknownVerbosityLevel str -> "The verbosity level '"++str++"' is invalid. Please use debug,normal or silent"
InvalidServer srv -> "Invalid server address, could not parse: " ++ srv
--WrongCacheVersion -> "The version of the cache is too old. Please update the cache using 'hackport update'"
--InvalidCache -> "Could not read the cache. Please ensure that it's up to date using 'hackport update'"
Jump to Line
Something went wrong with that request. Please try again.