mirror of https://github.com/voidlizard/hbs2
42 lines
1.1 KiB
Haskell
42 lines
1.1 KiB
Haskell
module Fixme.Config where
|
|
|
|
import Fixme.Prelude
|
|
import Fixme.Types
|
|
|
|
import HBS2.System.Dir
|
|
import System.Environment
|
|
import System.Directory (getXdgDirectory, XdgDirectory(..))
|
|
|
|
binName :: FixmePerks m => m FilePath
|
|
binName = pure "fixme-new" -- liftIO getProgName
|
|
|
|
localConfigDir :: (FixmePerks m, MonadReader FixmeEnv m) => m FilePath
|
|
localConfigDir = do
|
|
p <- asks fixmeEnvWorkDir >>= readTVarIO
|
|
b <- binName
|
|
pure (p </> ("." <> b))
|
|
|
|
fixmeWorkDir :: (FixmePerks m, MonadReader FixmeEnv m) => m FilePath
|
|
fixmeWorkDir = asks fixmeEnvWorkDir >>= readTVarIO
|
|
|
|
localConfig:: (FixmePerks m, MonadReader FixmeEnv m) => m FilePath
|
|
localConfig = localConfigDir <&> (</> "config")
|
|
|
|
userConfigs :: FixmePerks m => m [FilePath]
|
|
userConfigs= do
|
|
bin <- binName
|
|
h <- home
|
|
xdg <- liftIO (getXdgDirectory XdgConfig bin)
|
|
|
|
let conf1 = h </> ("." <> bin)
|
|
let conf2 = xdg </> "config"
|
|
|
|
pure [conf2, conf1]
|
|
|
|
localDBName :: FilePath
|
|
localDBName = "state.db"
|
|
|
|
localDBPath :: (FixmePerks m, MonadReader FixmeEnv m) => m FilePath
|
|
localDBPath = localConfigDir <&> (</> localDBName)
|
|
|