summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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