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"