From 7f2bfd41d7de9f78ab9f7e15937668fcd5cdc1b2 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Wed, 15 Jan 2020 10:57:45 -0400 Subject: [PATCH] include credPairRemoteFields in RemoteConfigParsers Avoids parse error when the fields are added to RemoteConfig at setup time and it then gets parsed, also at setup time. After setup time, such internally added fields are not a problem, because they're Accepted. So it may not be necessary in all cases to list such internally added fields, but I think it's a good idea to always do so. --- Remote/Glacier.hs | 1 + Remote/Helper/AWS.hs | 6 +++++- Remote/S3.hs | 1 + Remote/WebDAV.hs | 6 +++++- 4 files changed, 12 insertions(+), 2 deletions(-) diff --git a/Remote/Glacier.hs b/Remote/Glacier.hs index 02a7b5c264..e5b541bb4d 100644 --- a/Remote/Glacier.hs +++ b/Remote/Glacier.hs @@ -40,6 +40,7 @@ remote = specialRemoteType $ RemoteType [ optionalStringParser datacenterField , optionalStringParser vaultField , optionalStringParser fileprefixField + , optionalStringParser AWS.s3credsField ] , setup = glacierSetup , exportSupported = exportUnsupported diff --git a/Remote/Helper/AWS.hs b/Remote/Helper/AWS.hs index 759de1972b..21ef69c2b4 100644 --- a/Remote/Helper/AWS.hs +++ b/Remote/Helper/AWS.hs @@ -13,6 +13,7 @@ module Remote.Helper.AWS where import Annex.Common import Creds import Types.ProposedAccepted +import Types.RemoteConfig import qualified Data.Map as M import qualified Data.ByteString as B @@ -24,9 +25,12 @@ creds :: UUID -> CredPairStorage creds u = CredPairStorage { credPairFile = fromUUID u , credPairEnvironment = ("AWS_ACCESS_KEY_ID", "AWS_SECRET_ACCESS_KEY") - , credPairRemoteField = Accepted "s3creds" + , credPairRemoteField = s3credsField } +s3credsField :: RemoteConfigField +s3credsField = Accepted "s3creds" + data Service = S3 | Glacier deriving (Eq) diff --git a/Remote/S3.hs b/Remote/S3.hs index 347f8836fa..b8b2969bfc 100644 --- a/Remote/S3.hs +++ b/Remote/S3.hs @@ -88,6 +88,7 @@ remote = specialRemoteType $ RemoteType , optionalStringParser portField , optionalStringParser requeststyleField , optionalStringParser mungekeysField + , optionalStringParser AWS.s3credsField ] , remoteConfigRestPassthrough = \f -> isMetaHeader f || isArchiveMetaHeader f diff --git a/Remote/WebDAV.hs b/Remote/WebDAV.hs index 1abd176adb..583a0017be 100644 --- a/Remote/WebDAV.hs +++ b/Remote/WebDAV.hs @@ -49,6 +49,7 @@ remote = specialRemoteType $ RemoteType , generate = gen , configParser = mkRemoteConfigParser [ optionalStringParser urlField + , optionalStringParser davcredsField ] , setup = webdavSetup , exportSupported = exportIsSupported @@ -58,6 +59,9 @@ remote = specialRemoteType $ RemoteType urlField :: RemoteConfigField urlField = Accepted "url" +davcredsField :: RemoteConfigField +davcredsField = Accepted "davcreds" + gen :: Git.Repo -> UUID -> ParsedRemoteConfig -> RemoteGitConfig -> RemoteStateHandle -> Annex (Maybe Remote) gen r u c gc rs = new <$> remoteCost gc expensiveRemoteCost where @@ -351,7 +355,7 @@ davCreds :: UUID -> CredPairStorage davCreds u = CredPairStorage { credPairFile = fromUUID u , credPairEnvironment = ("WEBDAV_USERNAME", "WEBDAV_PASSWORD") - , credPairRemoteField = Accepted "davcreds" + , credPairRemoteField = davcredsField } {- Content-Type to use for files uploaded to WebDAV. -}