diff options
-rw-r--r-- | CabalHelper/Compiletime/Compile.hs | 8 | ||||
-rw-r--r-- | CabalHelper/Compiletime/Wrapper.hs | 5 | ||||
-rw-r--r-- | CabalHelper/Shared/Common.hs | 16 |
3 files changed, 21 insertions, 8 deletions
diff --git a/CabalHelper/Compiletime/Compile.hs b/CabalHelper/Compiletime/Compile.hs index 8da3802..0af950d 100644 --- a/CabalHelper/Compiletime/Compile.hs +++ b/CabalHelper/Compiletime/Compile.hs @@ -151,7 +151,7 @@ compileHelper opts cabalVer projdir distdir = do compile :: FilePath -> Options -> Compile -> IO (Either ExitCode FilePath) compile distdir opts@Options {..} Compile {..} = do cnCabalSourceDir <- canonicalizePath `traverse` compCabalSourceDir - appdir <- appDataDir + appdir <- appCacheDir let (outdir, exedir, exe, mchsrcdir) = case cnCabalSourceDir of @@ -250,7 +250,7 @@ processFailedException fn exe args rv = installCabal :: Options -> Version -> IO FilePath installCabal opts ver = do - appdir <- appDataDir + appdir <- appCacheDir let sver = showVersion ver hPutStr stderr $ printf "\ \cabal-helper-wrapper: Installing a private copy of Cabal because we couldn't\n\ @@ -435,7 +435,7 @@ errorInstallCabal cabalVer _distdir = panic $ printf "\ cachedExe :: Version -> IO (Maybe FilePath) cachedExe compCabalVersion = do - appdir <- appDataDir + appdir <- appCacheDir let exe = appdir </> exeName (Right compCabalVersion) exists <- doesFileExist exe return $ if exists then Just exe else Nothing @@ -487,7 +487,7 @@ createPkgDb opts@Options {..} cabalVer = do getPrivateCabalPkgDb :: Options -> Either String Version -> IO FilePath getPrivateCabalPkgDb opts cabalVer = do - appdir <- appDataDir + appdir <- appCacheDir ghcVer <- ghcVersion opts return $ appdir </> exeName cabalVer ++ "-ghc" ++ showVersion ghcVer ++ ".package-db" diff --git a/CabalHelper/Compiletime/Wrapper.hs b/CabalHelper/Compiletime/Wrapper.hs index d002886..dccbc29 100644 --- a/CabalHelper/Compiletime/Wrapper.hs +++ b/CabalHelper/Compiletime/Wrapper.hs @@ -51,7 +51,7 @@ usage = do hPutStr stderr $ "Usage: " ++ prog ++ " " ++ usageMsg where usageMsg = "\ -\( print-appdatadir\n\ +\( print-appcachedir\n\ \| print-build-platform\n\ \| [--verbose]\n\ \ [--with-ghc=GHC_PATH]\n\ @@ -124,7 +124,8 @@ main = handlePanic $ do [] -> usage "help":[] -> usage "version":[] -> putStrLn $ showVersion version - "print-appdatadir":[] -> putStrLn =<< appDataDir + "print-appdatadir":[] -> putStrLn =<< appCacheDir + "print-appcachedir":[] -> putStrLn =<< appCacheDir "print-build-platform":[] -> putStrLn $ display buildPlatform projdir:_distdir:"package-id":[] -> do diff --git a/CabalHelper/Shared/Common.hs b/CabalHelper/Shared/Common.hs index 3d79f90..588cd03 100644 --- a/CabalHelper/Shared/Common.hs +++ b/CabalHelper/Shared/Common.hs @@ -29,6 +29,7 @@ import qualified Data.ByteString as BS import qualified Data.ByteString.Char8 as BS8 import System.Environment import System.IO +import qualified System.Info import System.Exit import System.Directory import System.FilePath @@ -84,8 +85,19 @@ runReadP p i = case filter ((=="") . snd) $ readP_to_S p i of (a,""):[] -> a _ -> error $ "Error parsing: " ++ show i -appDataDir :: IO FilePath -appDataDir = (</> "cabal-helper") <$> getAppUserDataDirectory "ghc-mod" +appCacheDir :: IO FilePath +appCacheDir = + (</> "ghc-mod") <$> getEnvDefault "XDG_CACHE_HOME" (homeRel cache) + where + getEnvDefault var def = lookupEnv var >>= \m -> case m of Nothing -> def; Just x -> return x + homeRel path = (</> path) <$> getHomeDirectory + cache = + case System.Info.os of + "mingw32" -> windowsCache + _ -> unixCache + + windowsCache = "Local Settings" </> "Cache" + unixCache = ".cache" isCabalFile :: FilePath -> Bool isCabalFile f = takeExtension' f == ".cabal" |