From 6af5a746cbd72f817f689c885c4f9f034df2d22c Mon Sep 17 00:00:00 2001 From: Daan Rijks Date: Wed, 20 Nov 2024 13:04:17 +0100 Subject: [PATCH] Allow empty secrets files and empty secrets blocks --- src/SecretsFile.hs | 8 ++++---- test/golden/empty-block.secrets | 5 +++++ test/golden/empty-v1.secrets | 0 test/golden/empty-v2.secrets | 1 + 4 files changed, 10 insertions(+), 4 deletions(-) create mode 100644 test/golden/empty-block.secrets create mode 100644 test/golden/empty-v1.secrets create mode 100644 test/golden/empty-v2.secrets diff --git a/src/SecretsFile.hs b/src/SecretsFile.hs index 9b54fcc..fc3f5f3 100644 --- a/src/SecretsFile.hs +++ b/src/SecretsFile.hs @@ -21,7 +21,7 @@ If you are user, please see the README for more information. -} module SecretsFile where -import Control.Applicative.Combinators (some, option, optional) +import Control.Applicative.Combinators (some, many, option, optional) import Control.Exception (try, displayException) import Data.Char (toUpper, isSpace, isControl) import Data.Functor (void) @@ -111,8 +111,8 @@ secretsFileP = do _ <- whitespace version <- versionP case version of - V1 -> some (secretP version "secret") - V2 -> concat <$> some secretBlockP + V1 -> many (secretP version "secret") + V2 -> concat <$> many secretBlockP -- | Parse the file version -- @@ -134,7 +134,7 @@ secretBlockP = do _ <- symbol "MOUNT" mountPath <- lexeme pathComponentP _ <- newlines - some (MP.try (lexeme (secretP V2 mountPath))) + many (MP.try (lexeme (secretP V2 mountPath))) -- | Parses legal Vault path components. -- diff --git a/test/golden/empty-block.secrets b/test/golden/empty-block.secrets new file mode 100644 index 0000000..a39687e --- /dev/null +++ b/test/golden/empty-block.secrets @@ -0,0 +1,5 @@ +VERSION 2 +MOUNT empty +MOUNT nonempty +FOO_BAR=foo#bar +MOUNT empty2 diff --git a/test/golden/empty-v1.secrets b/test/golden/empty-v1.secrets new file mode 100644 index 0000000..e69de29 diff --git a/test/golden/empty-v2.secrets b/test/golden/empty-v2.secrets new file mode 100644 index 0000000..677f5ae --- /dev/null +++ b/test/golden/empty-v2.secrets @@ -0,0 +1 @@ +VERSION 2