37 lines
935 B
Haskell
37 lines
935 B
Haskell
{- git-annex backend list
|
|
- -}
|
|
|
|
module BackendList (
|
|
supportedBackends,
|
|
parseBackendList,
|
|
lookupBackendName
|
|
) where
|
|
|
|
import Types
|
|
|
|
-- When adding a new backend, import it here and add it to the list.
|
|
import qualified BackendFile
|
|
import qualified BackendChecksum
|
|
import qualified BackendUrl
|
|
supportedBackends =
|
|
[ BackendFile.backend
|
|
, BackendChecksum.backend
|
|
, BackendUrl.backend
|
|
]
|
|
|
|
{- Parses a string with a list of backend names into
|
|
- a list of Backend objects. If the list is empty,
|
|
- defaults to supportedBackends. -}
|
|
parseBackendList :: String -> [Backend]
|
|
parseBackendList s =
|
|
if (length s == 0)
|
|
then supportedBackends
|
|
else map (lookupBackendName) $ words s
|
|
|
|
{- Looks up a supported backed by name. -}
|
|
lookupBackendName :: String -> Backend
|
|
lookupBackendName s =
|
|
if ((length matches) /= 1)
|
|
then error $ "unknown backend " ++ s
|
|
else matches !! 0
|
|
where matches = filter (\b -> s == name b) supportedBackends
|