@@ -1,7 +1,17 @@
1{-# LANGUAGE CPP #-}
1{-# LANGUAGE CPP #-}
4+#define POSIX_LIKE !defined(_WIN32_HOST_OS) && \
5+ (defined(unix_HOST_OS) || defined(__unix___HOST_OS) || \
6+ defined(__unix_HOST_OS) || defined(linux_HOST_OS) || \
7+ defined(__linux___HOST_OS) || defined(__linux_HOST_OS) || \
8+ (defined(__APPLE___HOST_OS) && defined(__MACH___HOST_OS)))
3module Main where
11module Main where
5import Distribution.PackageDescription
15import Distribution.PackageDescription
6import Distribution.Simple
16import Distribution.Simple
7import Distribution.Simple.LocalBuildInfo
17import Distribution.Simple.LocalBuildInfo
@@ -9,7 +19,7 @@ import Distribution.Simple.Setup
10import System.Directory
20import System.Directory
11import System.Environment.XDG.BaseDir
21import System.Environment.XDG.BaseDir
12−#if !defined(mingw32_HOST_OS) || !defined(__MINGW32__)
22+#if POSIX_LIKE
13import System.Posix.Files
23import System.Posix.Files
@@ -19,7 +29,11 @@ main = defaultMainWithHooks $ simpleUserHooks {postInst = setupXDG}
19setupXDG :: Args -> InstallFlags -> PackageDescription -> LocalBuildInfo -> IO ()
29setupXDG :: Args -> InstallFlags -> PackageDescription -> LocalBuildInfo -> IO ()
20setupXDG _ _ _ _ = do
30setupXDG _ _ _ _ = do
21 configDir <- getUserConfigDir "purescript"
31 configDir <- getUserConfigDir "purescript"
32+ configExists <- doesDirectoryExist configDir
33+ putStrLn "\n\n\noh it worked!\n\n\n"
34+ unless configExists $ do
22− createDirectoryIfMissing True configDir
35+ createDirectoryIfMissing True configDir
23−#if !defined(mingw32_HOST_OS) || !defined(__MINGW32__)
36+#if POSIX_LIKE
24− setFileMode configDir ownerModes
37+ setFileMode configDir ownerModes