diff --git a/idris.cabal b/idris.cabal index b46dc344d0..02a757af39 100644 --- a/idris.cabal +++ b/idris.cabal @@ -264,7 +264,7 @@ Library , cheapskate < 0.2 , containers >= 0.5 && < 0.6 , deepseq < 1.5 - , directory >= 1.2.2.0 && < 1.2.3.0 || > 1.2.3.0 + , directory > 1.2.3.0 , filepath < 1.5 , fingertree >= 0.1 && < 0.2 , haskeline >= 0.7 && < 0.8 diff --git a/src/Idris/Info.hs b/src/Idris/Info.hs index 4ffe3d4ebe..770eb2c616 100644 --- a/src/Idris/Info.hs +++ b/src/Idris/Info.hs @@ -17,6 +17,7 @@ module Idris.Info , getIdrisCC , getIdrisVersion , getIdrisVersionNoGit + , getIdrisUserConfigDir , getIdrisUserDataDir , getIdrisInitScript , getIdrisHistoryFile @@ -68,9 +69,13 @@ getIdrisVersion = showVersion S.version ++ suffix getIdrisVersionNoGit = S.version --- | Get the platform-specific, user-specific Idris dir +-- | Get the platform-specific, user-specific Idris configuration dir +getIdrisUserConfigDir :: IO FilePath +getIdrisUserConfigDir = getXdgDirectory XdgConfig "idris" + +-- | Get the platform-specific, user-specific Idris data dir getIdrisUserDataDir :: IO FilePath -getIdrisUserDataDir = getAppUserDataDirectory "idris" +getIdrisUserDataDir = getXdgDirectory XdgData "idris" -- | Locate the platform-specific location for the init script getIdrisInitScript :: IO FilePath diff --git a/src/Idris/Info/Show.hs b/src/Idris/Info/Show.hs index 8217816a6f..f41b022efb 100644 --- a/src/Idris/Info/Show.hs +++ b/src/Idris/Info/Show.hs @@ -107,6 +107,7 @@ showIdrisInfo = do putStrLn "Paths:" ldir <- getIdrisLibDir + cdir <- getIdrisUserConfigDir udir <- getIdrisUserDataDir ddir <- getIdrisDocDir idir <- getIdrisDataDir @@ -116,7 +117,8 @@ showIdrisInfo = do putStrLn $ unwords ["-", "Library Dir:", ldir] putStrLn $ unwords ["-", "C RTS Dir:", crdir] putStrLn $ unwords ["-", "JS RTS Dir:", jrdir] - putStrLn $ unwords ["-", "User Dir:", udir] + putStrLn $ unwords ["-", "User Data Config:", cdir] + putStrLn $ unwords ["-", "User Data Dir:", udir] putStrLn $ unwords ["-", "Documentation Dir:", ddir] putStrLn "Flags:" diff --git a/src/Idris/Main.hs b/src/Idris/Main.hs index b035434dc2..3bb82f90a7 100644 --- a/src/Idris/Main.hs +++ b/src/Idris/Main.hs @@ -188,11 +188,12 @@ idrisMain opts = Just expr -> execScript expr -- Create Idris data dir + repl history and config dir - idrisCatch (do dir <- runIO $ getIdrisUserDataDir - exists <- runIO $ doesDirectoryExist dir - unless exists $ logLvl 1 ("Creating " ++ dir) - runIO $ createDirectoryIfMissing True (dir "repl")) - (\e -> return ()) + sequence_ $ + [idrisCatch (do dir <- runIO $ getDir + exists <- runIO $ doesDirectoryExist dir + unless exists $ logLvl 1 ("Creating " ++ dir) + runIO $ createDirectoryIfMissing True (dir "repl")) + (\e -> return ()) | getDir <- [getIdrisUserConfigDir, getIdrisUserDataDir]] historyFile <- runIO $ getIdrisHistoryFile