From e4e0a735201c6e4f67d7bd4e0fd492404ba7c363 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 26 Jan 2014 16:37:27 -0400 Subject: [PATCH] re-add --- CmdLine/GitAnnexShell/Fields.hs | 35 +++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 CmdLine/GitAnnexShell/Fields.hs diff --git a/CmdLine/GitAnnexShell/Fields.hs b/CmdLine/GitAnnexShell/Fields.hs new file mode 100644 index 0000000000..e71f2c2a0d --- /dev/null +++ b/CmdLine/GitAnnexShell/Fields.hs @@ -0,0 +1,35 @@ +{- git-annex-shell fields + - + - Copyright 2012 Joey Hess + - + - Licensed under the GNU GPL version 3 or higher. + -} + +module CmdLine.GitAnnexShell.Fields where + +import Common.Annex +import qualified Annex + +import Data.Char + +{- A field, stored in Annex state, with a value sanity checker. -} +data Field = Field + { fieldName :: String + , fieldCheck :: String -> Bool + } + +getField :: Field -> Annex (Maybe String) +getField = Annex.getField . fieldName + +remoteUUID :: Field +remoteUUID = Field "remoteuuid" $ + -- does it look like a UUID? + all (\c -> isAlphaNum c || c == '-') + +associatedFile :: Field +associatedFile = Field "associatedfile" $ \f -> + -- is the file a safe relative filename? + not (isAbsolute f) && not ("../" `isPrefixOf` f) + +direct :: Field +direct = Field "direct" $ \f -> f == "1"