more namespace cleanup
This commit is contained in:
parent
4c1d8b9689
commit
0b55bd05de
8 changed files with 49 additions and 39 deletions
|
@ -14,4 +14,34 @@ module AbstractTypes (
|
|||
Backend
|
||||
) where
|
||||
|
||||
import Types
|
||||
import Control.Monad.State
|
||||
import qualified GitRepo as Git
|
||||
import BackendTypes
|
||||
|
||||
-- constructor
|
||||
makeAnnexState :: Git.Repo -> AnnexState
|
||||
makeAnnexState g = AnnexState { repo = g, backends = [] }
|
||||
|
||||
-- performs an action in the Annex monad
|
||||
runAnnexState state action = runStateT (action) state
|
||||
|
||||
-- Annex monad state accessors
|
||||
gitAnnex :: Annex Git.Repo
|
||||
gitAnnex = do
|
||||
state <- get
|
||||
return (repo state)
|
||||
gitAnnexChange :: Git.Repo -> Annex ()
|
||||
gitAnnexChange r = do
|
||||
state <- get
|
||||
put state { repo = r }
|
||||
return ()
|
||||
backendsAnnex :: Annex [Backend]
|
||||
backendsAnnex = do
|
||||
state <- get
|
||||
return (backends state)
|
||||
backendsAnnexChange :: [Backend] -> Annex ()
|
||||
backendsAnnexChange b = do
|
||||
state <- get
|
||||
put state { backends = b }
|
||||
return ()
|
||||
|
||||
|
|
|
@ -30,7 +30,8 @@ import BackendList
|
|||
import Locations
|
||||
import qualified GitRepo as Git
|
||||
import Utility
|
||||
import Types
|
||||
import AbstractTypes
|
||||
import BackendTypes
|
||||
|
||||
{- Attempts to store a file in one of the backends. -}
|
||||
storeFile :: FilePath -> Annex (Maybe (Key, Backend))
|
||||
|
|
|
@ -5,7 +5,7 @@ module BackendChecksum (backend) where
|
|||
|
||||
import qualified BackendFile
|
||||
import Data.Digest.Pure.SHA
|
||||
import Types
|
||||
import BackendTypes
|
||||
|
||||
-- based on BackendFile just with a different key type
|
||||
backend = BackendFile.backend {
|
||||
|
|
|
@ -7,7 +7,7 @@ import Control.Monad.State
|
|||
import System.IO
|
||||
import System.Cmd
|
||||
import Control.Exception
|
||||
import Types
|
||||
import BackendTypes
|
||||
import LocationLog
|
||||
import Locations
|
||||
import qualified Remotes
|
||||
|
|
|
@ -7,7 +7,7 @@ module BackendList (
|
|||
lookupBackendName
|
||||
) where
|
||||
|
||||
import Types
|
||||
import BackendTypes
|
||||
|
||||
-- When adding a new backend, import it here and add it to the list.
|
||||
import qualified BackendFile
|
||||
|
|
|
@ -1,12 +1,16 @@
|
|||
{- git-annex core data types -}
|
||||
{- git-annex backend data types
|
||||
-
|
||||
- Mostly only backend implementations should need to import this.
|
||||
-}
|
||||
|
||||
module Types where
|
||||
module BackendTypes where
|
||||
|
||||
import Control.Monad.State
|
||||
import Data.String.Utils
|
||||
import qualified GitRepo as Git
|
||||
|
||||
-- git-annex's runtime state
|
||||
-- git-annex's runtime state type doesn't really belong here,
|
||||
-- but it uses Backend, so has to be here to avoid a depends loop.
|
||||
data AnnexState = AnnexState {
|
||||
repo :: Git.Repo,
|
||||
backends :: [Backend]
|
||||
|
@ -15,33 +19,6 @@ data AnnexState = AnnexState {
|
|||
-- git-annex's monad
|
||||
type Annex = StateT AnnexState IO
|
||||
|
||||
-- constructor
|
||||
makeAnnexState :: Git.Repo -> AnnexState
|
||||
makeAnnexState g = AnnexState { repo = g, backends = [] }
|
||||
|
||||
-- performs an action in the Annex monad
|
||||
runAnnexState state action = runStateT (action) state
|
||||
|
||||
-- Annex monad state accessors
|
||||
gitAnnex :: Annex Git.Repo
|
||||
gitAnnex = do
|
||||
state <- get
|
||||
return (repo state)
|
||||
gitAnnexChange :: Git.Repo -> Annex ()
|
||||
gitAnnexChange r = do
|
||||
state <- get
|
||||
put state { repo = r }
|
||||
return ()
|
||||
backendsAnnex :: Annex [Backend]
|
||||
backendsAnnex = do
|
||||
state <- get
|
||||
return (backends state)
|
||||
backendsAnnexChange :: [Backend] -> Annex ()
|
||||
backendsAnnexChange b = do
|
||||
state <- get
|
||||
put state { backends = b }
|
||||
return ()
|
||||
|
||||
-- annexed filenames are mapped into keys
|
||||
data Key = Key String deriving (Eq)
|
||||
|
|
@ -6,7 +6,7 @@ module BackendUrl (backend) where
|
|||
import Control.Monad.State
|
||||
import System.Cmd
|
||||
import IO
|
||||
import Types
|
||||
import BackendTypes
|
||||
|
||||
backend = Backend {
|
||||
name = "url",
|
||||
|
|
|
@ -11,7 +11,8 @@ module Locations (
|
|||
) where
|
||||
|
||||
import Data.String.Utils
|
||||
import Types
|
||||
import AbstractTypes
|
||||
import qualified BackendTypes as Backend
|
||||
import qualified GitRepo as Git
|
||||
|
||||
{- Long-term, cross-repo state is stored in files inside the .git-annex
|
||||
|
@ -32,7 +33,7 @@ annexLocation r backend key =
|
|||
{- Annexed file's location relative to the gitWorkTree -}
|
||||
annexLocationRelative :: Git.Repo -> Backend -> Key -> FilePath
|
||||
annexLocationRelative r backend key =
|
||||
Git.dir r ++ "/annex/" ++ (name backend) ++ "/" ++ (keyFile key)
|
||||
Git.dir r ++ "/annex/" ++ (Backend.name backend) ++ "/" ++ (keyFile key)
|
||||
|
||||
{- Converts a key into a filename fragment.
|
||||
-
|
||||
|
@ -50,4 +51,5 @@ keyFile key = replace "/" "%" $ replace "%" "&s" $ replace "&" "&a" $ show key
|
|||
{- Reverses keyFile, converting a filename fragment (ie, the basename of
|
||||
- the symlink target) into a key. -}
|
||||
fileKey :: FilePath -> Key
|
||||
fileKey file = Key $ replace "&a" "&" $ replace "&s" "%" $ replace "%" "/" file
|
||||
fileKey file = Backend.Key $
|
||||
replace "&a" "&" $ replace "&s" "%" $ replace "%" "/" file
|
||||
|
|
Loading…
Reference in a new issue