{-# LANGUAGE CPP #-}
{-# LANGUAGE NoRebindableSyntax #-}
#if __GLASGOW_HASKELL__ >= 810
{-# OPTIONS_GHC -Wno-prepositive-qualified-module #-}
#endif
{-# OPTIONS_GHC -fno-warn-missing-import-lists #-}
{-# OPTIONS_GHC -w #-}
module Paths_Cabal (
    version,
    getBinDir, getLibDir, getDynLibDir, getDataDir, getLibexecDir,
    getDataFileName, getSysconfDir
  ) where


import qualified Control.Exception as Exception
import Data.Version (Version(..))
import System.Environment (getEnv)
import Prelude


#if defined(VERSION_base)

#if MIN_VERSION_base(4,0,0)
catchIO :: IO a -> (Exception.IOException -> IO a) -> IO a
#else
catchIO :: IO a -> (Exception.Exception -> IO a) -> IO a
#endif

#else
catchIO :: IO a -> (Exception.IOException -> IO a) -> IO a
#endif
catchIO :: forall a. IO a -> (IOException -> IO a) -> IO a
catchIO = IO a -> (IOException -> IO a) -> IO a
forall e a. Exception e => IO a -> (e -> IO a) -> IO a
Exception.catch

version :: Version
version :: Version
version = [Int] -> [String] -> Version
Version [Int
3,Int
14,Int
1,Int
0] []

getDataFileName :: FilePath -> IO FilePath
getDataFileName :: String -> IO String
getDataFileName String
name = do
  String
dir <- IO String
getDataDir
  String -> IO String
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (String
dir String -> String -> String
`joinFileName` String
name)

getBinDir, getLibDir, getDynLibDir, getDataDir, getLibexecDir, getSysconfDir :: IO FilePath




bindir, libdir, dynlibdir, datadir, libexecdir, sysconfdir :: FilePath
bindir :: String
bindir     = String
"/home/hecate/.cabal/bin"
libdir :: String
libdir     = String
"/home/hecate/.cabal/lib/x86_64-linux-ghc-9.6.6/Cabal-3.14.1.0-inplace"
dynlibdir :: String
dynlibdir  = String
"/home/hecate/.cabal/lib/x86_64-linux-ghc-9.6.6"
datadir :: String
datadir    = String
"/home/hecate/.cabal/share/x86_64-linux-ghc-9.6.6/Cabal-3.14.1.0"
libexecdir :: String
libexecdir = String
"/home/hecate/.cabal/libexec/x86_64-linux-ghc-9.6.6/Cabal-3.14.1.0"
sysconfdir :: String
sysconfdir = String
"/home/hecate/.cabal/etc"

getBinDir :: IO String
getBinDir     = IO String -> (IOException -> IO String) -> IO String
forall a. IO a -> (IOException -> IO a) -> IO a
catchIO (String -> IO String
getEnv String
"Cabal_bindir")     (\IOException
_ -> String -> IO String
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return String
bindir)
getLibDir :: IO String
getLibDir     = IO String -> (IOException -> IO String) -> IO String
forall a. IO a -> (IOException -> IO a) -> IO a
catchIO (String -> IO String
getEnv String
"Cabal_libdir")     (\IOException
_ -> String -> IO String
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return String
libdir)
getDynLibDir :: IO String
getDynLibDir  = IO String -> (IOException -> IO String) -> IO String
forall a. IO a -> (IOException -> IO a) -> IO a
catchIO (String -> IO String
getEnv String
"Cabal_dynlibdir")  (\IOException
_ -> String -> IO String
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return String
dynlibdir)
getDataDir :: IO String
getDataDir    = IO String -> (IOException -> IO String) -> IO String
forall a. IO a -> (IOException -> IO a) -> IO a
catchIO (String -> IO String
getEnv String
"Cabal_datadir")    (\IOException
_ -> String -> IO String
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return String
datadir)
getLibexecDir :: IO String
getLibexecDir = IO String -> (IOException -> IO String) -> IO String
forall a. IO a -> (IOException -> IO a) -> IO a
catchIO (String -> IO String
getEnv String
"Cabal_libexecdir") (\IOException
_ -> String -> IO String
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return String
libexecdir)
getSysconfDir :: IO String
getSysconfDir = IO String -> (IOException -> IO String) -> IO String
forall a. IO a -> (IOException -> IO a) -> IO a
catchIO (String -> IO String
getEnv String
"Cabal_sysconfdir") (\IOException
_ -> String -> IO String
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return String
sysconfdir)



joinFileName :: String -> String -> FilePath
joinFileName :: String -> String -> String
joinFileName String
""  String
fname = String
fname
joinFileName String
"." String
fname = String
fname
joinFileName String
dir String
""    = String
dir
joinFileName dir :: String
dir@(Char
c:String
cs) String
fname
  | Char -> Bool
isPathSeparator (Char -> String -> Char
forall {t}. t -> [t] -> t
lastChar Char
c String
cs) = String
dir String -> String -> String
forall a. [a] -> [a] -> [a]
++ String
fname
  | Bool
otherwise                       = String
dir String -> String -> String
forall a. [a] -> [a] -> [a]
++ Char
pathSeparator Char -> String -> String
forall a. a -> [a] -> [a]
: String
fname
 where
  -- We do not use Data.List.NonEmpty.last, as that would limit the module to
  -- base >= 4.9.0.0 (GHC >= 8.0.1).
  lastChar :: t -> [t] -> t
lastChar t
x [] = t
x
  lastChar t
_ (t
x:[t]
xs) = t -> [t] -> t
lastChar t
x [t]
xs

pathSeparator :: Char
pathSeparator :: Char
pathSeparator = Char
'/'

isPathSeparator :: Char -> Bool
isPathSeparator :: Char -> Bool
isPathSeparator Char
c = Char
c Char -> Char -> Bool
forall a. Eq a => a -> a -> Bool
== Char
'/'