apelsin-1.1: src/Constants.hs
{-# LANGUAGE CPP #-}
module Constants where
import Data.String
import System.Environment.XDG.BaseDir
import System.FilePath
import System.Directory
import System.IO
import System.Process
import Control.Exception
#ifdef CABAL_PATH
import Paths_apelsin
#endif
configName, programName, fullProgramName :: IsString s => s
configName = "apelsin"
programName = "Apelsin"
fullProgramName = "Apelsin Tremulous Browser"
inCacheDir, inConfDir :: FilePath -> IO FilePath
inCacheDir x = do
dir <- getUserCacheDir configName
createDirectoryIfMissing True dir
return (dir </> x)
inConfDir x = do
dir <- getUserConfigDir configName
createDirectoryIfMissing True dir
return (dir </> x)
getDataDir :: IO FilePath
#ifdef CABAL_PATH
getDataDir = dropTrailingPathSeparator `fmap` getDataFileName ""
#else
getDataDir = getCurrentDirectory
#endif
defaultTremulousPath, defaultTremulousGPPPath:: FilePath
trace :: String -> IO ()
defaultBrowser :: String -> IO CreateProcess
#if defined(mingw32_HOST_OS) || defined(__MINGW32__)
defaultTremulousPath = "C:\\Program Files\\Tremulous\\tremulous.exe"
defaultTremulousGPPPath = "C:\\Program Files\\Tremulous\\tremulous-gpp.exe"
trace _ = return ()
defaultBrowser x = do
ddir <- getDataDir
return (proc "wscript" [ddir </> "open.js", x])
#else
defaultTremulousPath = "tremulous"
defaultTremulousGPPPath = "tremulous-gpp"
trace x = hPutStrLn stderr x >> hFlush stderr
#if defined(__APPLE__) || defined(__MACH__)
defaultBrowser x = return $ proc "open" [x]
#else
defaultBrowser x = return $ proc "xdg-open" [x]
#endif
#endif
openInBrowser :: String -> IO ()
openInBrowser x = handle (\(_ :: IOError) -> return ()) $ do
p <-defaultBrowser x
createProcess p
{close_fds = True, std_in = Inherit, std_out = Inherit, std_err = Inherit}
return ()
spacing, spacingHalf, spacingBig :: Integral i => i
spacing = 4
spacingHalf = 2
spacingBig = 8