diff options
author | James Crayne <jim.crayne@gmail.com> | 2017-11-04 04:41:30 +0000 |
---|---|---|
committer | Joe Crayne <joe@jerkface.net> | 2020-01-01 19:33:47 -0500 |
commit | 23fc82387d7e6dd50e273e7ec512959966f95f91 (patch) | |
tree | 5281fd7b924a551316f00a38fcb55bb3902addd3 | |
parent | b092c66def1b07dc69be72d9f4a3b57a4641f283 (diff) |
sensibleVarLib
-rw-r--r-- | sensible-directory/src/SensibleDir.hs | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/sensible-directory/src/SensibleDir.hs b/sensible-directory/src/SensibleDir.hs index 61515001..0133736d 100644 --- a/sensible-directory/src/SensibleDir.hs +++ b/sensible-directory/src/SensibleDir.hs | |||
@@ -102,3 +102,36 @@ sensibleCacheDir suffix = do | |||
102 | sensibleCacheDirCreateIfMissing suffix = do | 102 | sensibleCacheDirCreateIfMissing 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.. | ||
109 | sensibleVarLib 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 | |||