packages feed

haskell-docs-cli-1.0.0.0: src/Docs/CLI/Directory.hs

module Docs.CLI.Directory where

import System.Directory (createDirectoryIfMissing, getXdgDirectory, XdgDirectory(..))
import System.FilePath


newtype AppCache = AppCache FilePath


-- | Create top directory of app cache if it doesn't exist
mkAppCacheDir :: Maybe FilePath -- ^ overwrite XDG_CACHE_HOME/haskell-docs-cli
              -> IO AppCache
mkAppCacheDir mpath = do
  dir <- (</> "html_cache") <$> case mpath of
    Just path -> return path
    Nothing -> getXdgDirectory XdgCache "haskell-docs-cli"
  createDirectoryIfMissing True dir
  return $ AppCache dir


getAppHistoryFile :: IO FilePath
getAppHistoryFile = do
  -- here's some discussion why history files belong in XDG_DATA_HOME:
  --   https://github.com/fish-shell/fish-shell/issues/744
  dir <- getXdgDirectory XdgData "haskell-docs-cli"
  createDirectoryIfMissing True dir
  return (dir </> "haskell-docs-cli.history")