git.iko.soy/rowtype-yoga/purescript-native
on 28fa718 help sign in
38 lines 1.2 kB history raw
1{-# LANGUAGE CPP #-}
3#ifndef POSIX_LIKE
4#define POSIX_LIKE !(defined(_WIN32_HOST_OS) || defined(_WIN64_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)))
9#endif
11module Main where
13import Control.Monad
15import Distribution.PackageDescription
16import Distribution.Simple
17import Distribution.Simple.LocalBuildInfo
18import Distribution.Simple.Setup
20import System.Directory
21import System.Environment.XDG.BaseDir
22#if POSIX_LIKE
23import System.Posix.Files
24#endif
26main :: IO ()
27main = defaultMainWithHooks $ simpleUserHooks {postInst = setupXDG}
29setupXDG :: Args -> InstallFlags -> PackageDescription -> LocalBuildInfo -> IO ()
30setupXDG _ _ _ _ = do
31 configDir <- getUserConfigDir "purescript"
32 configExists <- doesDirectoryExist configDir
33 unless configExists $ do
34 createDirectoryIfMissing True configDir
35#if POSIX_LIKE
36 setFileMode configDir ownerModes
37#endif
38#undef POSIX_LIKE