diff options
author | Joey Hess <joey@kitenet.net> | 2010-10-12 20:04:36 -0400 |
---|---|---|
committer | Joey Hess <joey@kitenet.net> | 2010-10-12 20:04:36 -0400 |
commit | b7858ada038084c8455cdf9d3598382308dc52b3 (patch) | |
tree | 373fec9662eb3b7c592dc28ccd301473fb3ce1a2 /Locations.hs | |
parent | 476f66abb99ad2baa18b699c26ac9ee7250eca76 (diff) |
bugfixes
Diffstat (limited to 'Locations.hs')
-rw-r--r-- | Locations.hs | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/Locations.hs b/Locations.hs index 300f443f7..59f9df727 100644 --- a/Locations.hs +++ b/Locations.hs @@ -3,9 +3,14 @@ module Locations ( gitStateDir, - stateLoc + stateLoc, + keyFile, + annexLocation, + backendFile ) where +import Data.String.Utils +import Types import GitRepo {- Long-term, cross-repo state is stored in files inside the .git-annex @@ -13,3 +18,21 @@ import GitRepo stateLoc = ".git-annex" gitStateDir :: GitRepo -> FilePath gitStateDir repo = (gitWorkTree repo) ++ "/" ++ stateLoc ++ "/" + +{- Generates a filename that can be used to record a key somewhere to disk. + - Just escape "/" in the key name, to keep a flat + - tree of files and avoid issues with files ending with "/" etc. -} +keyFile :: Key -> FilePath +keyFile key = replace "/" "%" $ replace "%" "%%" key + +{- An annexed file's content is stored somewhere under .git/annex/, + - based on the key. -} +annexLocation :: State -> Key -> FilePath +annexLocation state key = gitDir (repo state) ++ "/annex/" ++ (keyFile key) + +{- Name of state file that holds the key for an annexed file, + - using a given backend. -} +backendFile :: State -> Backend -> FilePath -> String +backendFile state backend file = + gitStateDir (repo state) ++ (gitRelative (repo state) file) ++ + "." ++ (name backend) |