@@ -19,26 +19,19 @@ module Types
1919 )
2020where
2121
22−import Data.Bifunctor
2322import Data.ByteString (ByteString)
23+import qualified Data.ByteString.Lazy as BS
24+import Data.Csv
25+import Data.Foldable
2426import Data.Text as T
25−import Data.Traversable
27+import Data.Text.Encoding as T
2628
2729import Common.Types
2830import Data.Time
2931
3032-- | Parses deployment metadata.
31−parseDeploymentMetadata :: [Text] -> IO DeploymentMetadata
32−parseDeploymentMetadata texts = fmap DeploymentMetadata $
33− for texts $ \t ->
34− case T.findIndex (== ',') t of
35− Just i -> do
36− let (key, value) = bimap strip (T.tail . strip) $ T.splitAt i t
37− pure $ DeploymentMetadatum key value
38− Nothing ->
39− error $
40− "Malformed metadata key-value pair " <> T.unpack t
41− <> ", should be similar to foo,bar"
33+parseDeploymentMetadata :: Text -> Either String DeploymentMetadata
34+parseDeploymentMetadata = fmap (DeploymentMetadata . toList) . decode NoHeader . BS.fromStrict . T.encodeUtf8
4235
4336-- | Server port.
4437newtype ServerPort = ServerPort {unServerPort :: Int}