module Cloudy.Path where import System.Directory (getXdgDirectory, XdgDirectory (XdgConfig, XdgData), createDirectoryIfMissing) import System.FilePath ( (</>) ) getCloudyConfDir :: IO FilePath getCloudyConfDir :: IO FilePath getCloudyConfDir = do FilePath cloudyConfDirLocal <- XdgDirectory -> FilePath -> IO FilePath getXdgDirectory XdgDirectory XdgConfig FilePath "cloudy" Bool -> FilePath -> IO () createDirectoryIfMissing Bool True FilePath cloudyConfDirLocal FilePath -> IO FilePath forall a. a -> IO a forall (f :: * -> *) a. Applicative f => a -> f a pure FilePath cloudyConfDirLocal getCloudyConfFilePath :: IO FilePath getCloudyConfFilePath :: IO FilePath getCloudyConfFilePath = do FilePath cloudyConfDirLocal <- IO FilePath getCloudyConfDir FilePath -> IO FilePath forall a. a -> IO a forall (f :: * -> *) a. Applicative f => a -> f a pure (FilePath -> IO FilePath) -> FilePath -> IO FilePath forall a b. (a -> b) -> a -> b $ FilePath cloudyConfDirLocal FilePath -> FilePath -> FilePath </> FilePath "cloudy.yaml" getCloudyInstanceSetupsDir :: IO FilePath getCloudyInstanceSetupsDir :: IO FilePath getCloudyInstanceSetupsDir = do FilePath cloudyConfDirLocal <- IO FilePath getCloudyConfDir let instanceSetupsDir :: FilePath instanceSetupsDir = FilePath cloudyConfDirLocal FilePath -> FilePath -> FilePath </> FilePath "instance-setups" Bool -> FilePath -> IO () createDirectoryIfMissing Bool False FilePath instanceSetupsDir FilePath -> IO FilePath forall a. a -> IO a forall (f :: * -> *) a. Applicative f => a -> f a pure FilePath instanceSetupsDir getCloudyDbPath :: IO FilePath getCloudyDbPath :: IO FilePath getCloudyDbPath = do FilePath cloudyStateDirLocal <- XdgDirectory -> FilePath -> IO FilePath getXdgDirectory XdgDirectory XdgData FilePath "cloudy" Bool -> FilePath -> IO () createDirectoryIfMissing Bool True FilePath cloudyStateDirLocal FilePath -> IO FilePath forall a. a -> IO a forall (f :: * -> *) a. Applicative f => a -> f a pure (FilePath -> IO FilePath) -> FilePath -> IO FilePath forall a b. (a -> b) -> a -> b $ FilePath cloudyStateDirLocal FilePath -> FilePath -> FilePath </> FilePath "db.sqlite3"