summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Crayne <jim.crayne@gmail.com>2017-11-04 04:41:30 +0000
committerJames Crayne <jim.crayne@gmail.com>2017-11-04 05:12:33 +0000
commit920dd2de299a53c2a6f7dacf4c9542eb97e23f7d (patch)
tree2df27a7a8d78bad4dc6031f5696fc4df87cfe248
parentee4efc12fb20f14d4a2a1bb47a523c03b7bbeb59 (diff)
sensibleVarLib
-rw-r--r--src/SensibleDir.hs33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/SensibleDir.hs b/src/SensibleDir.hs
index 6151500..0133736 100644
--- a/src/SensibleDir.hs
+++ b/src/SensibleDir.hs
@@ -102,3 +102,36 @@ sensibleCacheDir suffix = do
102sensibleCacheDirCreateIfMissing suffix = do 102sensibleCacheDirCreateIfMissing suffix = do
103 dir <- sensibleCacheDir suffix 103 dir <- sensibleCacheDir suffix
104 createDirectoryIfMissing True dir 104 createDirectoryIfMissing True dir
105 return dir
106
107-- | Try to get something approximately equivalent to /var/lib
108-- but appropriate to install scenario..
109sensibleVarLib suffix = do
110 let ifunix x = if isUnix os then x
111 else PrefixInstall
112 install <- ifunix <$> detectLikelyInstall
113 case install of
114 PrefixInstall -> do
115 if isUnix os
116 then do
117 dirs <- splitDirectories . takeDirectory <$> getExecutablePath
118 homedir <- getHomeDirectory
119 let rdir = reverse dirs
120 case take 1 rdir of
121 ["bin"] -> do
122 let dir = foldl1 combine $ reverse (drop 1 rdir)
123 if homedir == dir then getXdgDirectory XdgData suffix
124 else return (dir </> "share" </> suffix)
125 _ -> do
126 let dir = foldl1 combine dirs
127 if homedir == dir then getXdgDirectory XdgData suffix
128 else return (dir </> "share" </> suffix)
129 else getAppUserDataDirectory ("share" </> suffix)
130 SystemInstall -> return ("/var/lib" </> suffix)
131 LocalInstall -> return ("/var/lib" </> suffix) -- not using /var/local/lib because it should be easy to find
132 UserInstall -> getXdgDirectory XdgCache suffix
133 NotInstalled -> do
134 dir <- splitDirectories . takeDirectory <$> getExecutablePath
135 let rdir = reverse dir
136 return . foldl1 combine $ reverse ("share": drop 2 rdir)
137