add descriptions for all remote config fields

not yet used
This commit is contained in:
Joey Hess 2020-01-20 15:20:04 -04:00
parent 201049cf93
commit 7038acf96c
No known key found for this signature in database
GPG key ID: DB12DB0FF05F8F38
20 changed files with 141 additions and 48 deletions

View file

@ -99,11 +99,15 @@ importTree = fromMaybe False . getRemoteConfigValue importTreeField
commonFieldParsers :: [RemoteConfigFieldParser]
commonFieldParsers =
[ optionalStringParser nameField
, optionalStringParser sameasNameField
, optionalStringParser sameasUUIDField
(FieldDesc "name for the special remote")
, optionalStringParser sameasNameField HiddenField
, optionalStringParser sameasUUIDField HiddenField
, optionalStringParser typeField
(FieldDesc "type of special remote")
, trueFalseParser autoEnableField False
(FieldDesc "automatically enable special remote")
, optionalStringParser preferreddirField
(FieldDesc "directory whose content is preferred")
]
{- A remote with sameas-uuid set will inherit these values from the config
@ -204,26 +208,39 @@ parseRemoteConfig c rpc =
notaccepted (Proposed _) = True
notaccepted (Accepted _) = False
optionalStringParser :: RemoteConfigField -> RemoteConfigFieldParser
optionalStringParser f = RemoteConfigFieldParser f p
optionalStringParser :: RemoteConfigField -> FieldDesc -> RemoteConfigFieldParser
optionalStringParser f fielddesc = RemoteConfigFieldParser
{ parserForField = f
, valueParser = p
, fieldDesc = fielddesc
, valueDesc = Nothing
}
where
p (Just v) _c = Right (Just (RemoteConfigValue (fromProposedAccepted v)))
p Nothing _c = Right Nothing
yesNoParser :: RemoteConfigField -> Bool -> RemoteConfigFieldParser
yesNoParser = genParser yesNo "yes or no"
yesNoParser :: RemoteConfigField -> Bool -> FieldDesc -> RemoteConfigFieldParser
yesNoParser f v fd = genParser yesNo f v fd
(Just (ValueDesc "yes or no"))
trueFalseParser :: RemoteConfigField -> Bool -> RemoteConfigFieldParser
trueFalseParser = genParser Git.Config.isTrueFalse "true or false"
trueFalseParser :: RemoteConfigField -> Bool -> FieldDesc -> RemoteConfigFieldParser
trueFalseParser f v fd = genParser Git.Config.isTrueFalse f v fd
(Just (ValueDesc "true or false"))
genParser
:: Typeable t
=> (String -> Maybe t)
-> String -- ^ description of the value
-> RemoteConfigField
-> t -- ^ fallback value
-> FieldDesc
-> Maybe ValueDesc
-> RemoteConfigFieldParser
genParser parse desc f fallback = RemoteConfigFieldParser f p
genParser parse f fallback fielddesc valuedesc = RemoteConfigFieldParser
{ parserForField = f
, valueParser = p
, fieldDesc = fielddesc
, valueDesc = valuedesc
}
where
p Nothing _c = Right (Just (RemoteConfigValue fallback))
p (Just v) _c = case parse (fromProposedAccepted v) of
@ -232,4 +249,7 @@ genParser parse desc f fallback = RemoteConfigFieldParser f p
Accepted _ -> Right (Just (RemoteConfigValue fallback))
Proposed _ -> Left $
"Bad value for " ++ fromProposedAccepted f ++
" (expected " ++ desc ++ ")"
case valuedesc of
Just (ValueDesc vd) ->
" (expected " ++ vd ++ ")"
Nothing -> ""