include passthrough params in --describe-other-params

This commit is contained in:
Joey Hess 2020-01-20 16:23:35 -04:00
parent aa949bbb7d
commit 2be4122bfc
No known key found for this signature in database
GPG key ID: DB12DB0FF05F8F38
8 changed files with 46 additions and 27 deletions

View file

@ -792,7 +792,10 @@ lenientRemoteConfigParser = addRemoteConfigParser specialRemoteConfigParsers $
, trueFalseParser readonlyField False
(FieldDesc "enable readonly mode")
]
, remoteConfigRestPassthrough = const True
, remoteConfigRestPassthrough = Just
( const True
, [("*", FieldDesc "all other parameters are passed to external special remote program")]
)
}
{- When the remote supports LISTCONFIGS, only accept the ones it listed.
@ -804,14 +807,14 @@ strictRemoteConfigParser external = listConfigs external >>= \case
let s = S.fromList (map fst l)
let listed f = S.member (fromProposedAccepted f) s
return $ lenientRemoteConfigParser
{ remoteConfigRestPassthrough = listed }
{ remoteConfigRestPassthrough = Just (listed, l) }
listConfigs :: External -> Annex (Maybe [(Setting, Description)])
listConfigs :: External -> Annex (Maybe [(Setting, FieldDesc)])
listConfigs external = handleRequest external LISTCONFIGS Nothing (collect [])
where
collect l req = case req of
CONFIG s d -> Just $ return $
GetNextMessage $ collect ((s, d) : l)
GetNextMessage $ collect ((s, FieldDesc d) : l)
CONFIGEND -> result (Just (reverse l))
UNSUPPORTED_REQUEST -> result Nothing
_ -> Nothing

View file

@ -78,7 +78,7 @@ encryptionConfigs = S.fromList (map parserForField encryptionConfigParsers)
parseEncryptionConfig :: RemoteConfig -> Either String ParsedRemoteConfig
parseEncryptionConfig c = parseRemoteConfig
(M.restrictKeys c encryptionConfigs)
(RemoteConfigParser encryptionConfigParsers (const False))
(RemoteConfigParser encryptionConfigParsers Nothing)
encryptionFieldParser :: RemoteConfigFieldParser
encryptionFieldParser = RemoteConfigFieldParser

View file

@ -102,8 +102,13 @@ remote = specialRemoteType $ RemoteType
, optionalStringParser mungekeysField HiddenField
, optionalStringParser AWS.s3credsField HiddenField
]
, remoteConfigRestPassthrough = \f ->
isMetaHeader f || isArchiveMetaHeader f
, remoteConfigRestPassthrough = Just
( \f -> isMetaHeader f || isArchiveMetaHeader f
,
[ ("x-amz-meta-*", FieldDesc "http headers to add when storing on S3")
, ("x-archive-meta-*", FieldDesc "http headers to add when storing on Internet Archive")
]
)
}
, setup = s3Setup
, exportSupported = exportIsSupported