From ee4efc12fb20f14d4a2a1bb47a523c03b7bbeb59 Mon Sep 17 00:00:00 2001 From: James Crayne Date: Sat, 4 Nov 2017 03:30:12 +0000 Subject: remove debug foo, use .cache if in HOME or HOME/bin --- src/SensibleDir.hs | 47 +++++++++++++++-------------------------------- 1 file changed, 15 insertions(+), 32 deletions(-) diff --git a/src/SensibleDir.hs b/src/SensibleDir.hs index c5f9ae1..6151500 100644 --- a/src/SensibleDir.hs +++ b/src/SensibleDir.hs @@ -2,7 +2,6 @@ {-# LANGUAGE TupleSections #-} module SensibleDir where -import Paths_testcabaldir import System.Directory #ifdef VERSION_directory_xdg import System.DirectoryXdg @@ -15,36 +14,15 @@ import Control.Arrow import Control.Applicative import Data.List -installScenario = NotInstalled -doit = do - ddir <- getDataDir - ldir <- getLibDir - pname <- getProgName - ppath <- getExecutablePath - sysconfdir <- getSysconfDir - putStrLn ("ddir = " ++ ddir); - putStrLn ("ldir = " ++ ldir); - putStrLn ("sysconfdir = " ++ sysconfdir); - putStrLn ("pname = " ++ pname); - putStr "runningInBuildDir = " - print =<< runningInBuildDir - putStr "detectLikelyInstall = " - print =<< detectLikelyInstall - putStrLn "---------------------" - putStr "sensibleCacheDir = " - print =<< sensibleCacheDir pname - -- putStr "sensibleConfigDir = " - -- print =<< sensibleConfigDir pname - runningInBuildDir :: IO Bool runningInBuildDir = any (=="build") . take 2 . reverse . splitDirectories . takeDirectory <$> getExecutablePath - + runningInCabalDir :: IO Bool runningInCabalDir = any (==".cabal") . take 2 . reverse . splitDirectories . takeDirectory <$> getExecutablePath runningInSysBin = do exedir <- splitDirectories . takeDirectory <$> getExecutablePath - return $ + return $ case take 3 (drop 1 exedir) of ["bin"] -> True ["sbin"] -> True @@ -54,9 +32,7 @@ runningInSysBin = do runningInLocalBin = do exedir <- splitDirectories . takeDirectory <$> getExecutablePath - putStr "exedir = " - print exedir - return $ + return $ case take 3 (drop 1 exedir) of ["usr","local","bin"] -> True ["usr","local","sbin"] -> True @@ -91,7 +67,7 @@ detectLikelyInstall = do isUnix os = not $ "mingw" `isPrefixOf` os -- | Try to get the cache directory appropriate to the install scenario. --- On windows it just calls getAppUserDataDirectory and appends "cache". +-- On windows it just calls getAppUserDataDirectory and appends "cache". -- (windows behavior subject to change, contributions welcome) sensibleCacheDir suffix = do let ifunix x = if isUnix os then x @@ -101,11 +77,18 @@ sensibleCacheDir suffix = do PrefixInstall -> do if isUnix os then do - dir <- splitDirectories . takeDirectory <$> getExecutablePath - let rdir = reverse dir + dirs <- splitDirectories . takeDirectory <$> getExecutablePath + homedir <- getHomeDirectory + let rdir = reverse dirs case take 1 rdir of - ["bin"] -> return $ (foldl1 combine $ reverse (drop 1 rdir)) "cache" suffix - _ -> fmap (( suffix) . ( "cache") . takeDirectory) getExecutablePath + ["bin"] -> do + let dir = foldl1 combine $ reverse (drop 1 rdir) + if homedir == dir then getXdgDirectory XdgCache suffix + else return (dir "cache" suffix) + _ -> do + let dir = foldl1 combine dirs + if homedir == dir then getXdgDirectory XdgCache suffix + else return (dir "cache" suffix) else getAppUserDataDirectory ("cache" suffix) SystemInstall -> return ("/var/cache" suffix) LocalInstall -> return ("/var/local/cache" suffix) -- cgit v1.2.3