module Propellor.PrivData.Paths where import Utility.Exception import System.FilePath import Control.Applicative import Prelude privDataDir :: FilePath privDataDir = "privdata" privDataFile :: IO FilePath privDataFile = allowRelocate $ privDataDir "privdata.gpg" privDataKeyring :: IO FilePath privDataKeyring = allowRelocate $ privDataDir "keyring.gpg" privDataLocal :: FilePath privDataLocal = privDataDir "local" privDataRelay :: String -> FilePath privDataRelay host = privDataDir "relay" host -- Allow relocating files in privdata, by checking for a file -- privdata/relocate, which contains the path to a subdirectory that -- contains the files. allowRelocate :: FilePath -> IO FilePath allowRelocate f = reloc . lines <$> catchDefaultIO "" (readFile (privDataDir "relocate")) where reloc (p:_) | not (null p) = privDataDir p takeFileName f reloc _ = f