37 lines
949 B
Haskell
37 lines
949 B
Haskell
{- git-annex backend list
|
|
- -}
|
|
|
|
module BackendList (
|
|
supportedBackends,
|
|
parseBackendList,
|
|
lookupBackendName
|
|
) where
|
|
|
|
import BackendTypes
|
|
|
|
-- When adding a new backend, import it here and add it to the list.
|
|
import qualified Backend.File
|
|
import qualified Backend.Checksum
|
|
import qualified Backend.Url
|
|
supportedBackends =
|
|
[ Backend.File.backend
|
|
, Backend.Checksum.backend
|
|
, Backend.Url.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 backend 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
|