{-# LANGUAGE CPP #-}
{-# LANGUAGE NoRebindableSyntax #-}
{-# 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 qualified Data.List as List
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
7,Int
0,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
"/usr/local/bin"
libdir :: String
libdir     = String
"/usr/local/lib/x86_64-linux-ghc-9.3.20220306/Cabal-3.7.0.0"
dynlibdir :: String
dynlibdir  = String
"/usr/local/lib/x86_64-linux-ghc-9.3.20220306"
datadir :: String
datadir    = String
"/usr/local/share/x86_64-linux-ghc-9.3.20220306/Cabal-3.7.0.0"
libexecdir :: String
libexecdir = String
"/usr/local/libexec/x86_64-linux-ghc-9.3.20220306/Cabal-3.7.0.0"
sysconfdir :: String
sysconfdir = String
"/usr/local/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 String
dir String
fname
  | Char -> Bool
isPathSeparator (String -> Char
forall a. HasCallStack => [a] -> a
List.last String
dir) = 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

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
'/'