cfn-flip-0.1.0.6: src/CfnFlip.hs
-- | Haskell re-implementation of [cfn_flip](https://github.com/awslabs/aws-cfn-template-flip/blob/837aa56e21cb00b1c7fa0150f0fd38365c508e4e/cfn_flip/yaml_dumper.py)
module CfnFlip
( yamlFileToJson
, yamlToJson
, jsonToYamlFile
, jsonFileToYaml
, jsonToYaml
) where
import CfnFlip.Prelude
import CfnFlip.Aeson
import qualified CfnFlip.JsonToYaml as JsonToYaml
import qualified CfnFlip.Yaml as Yaml
import qualified CfnFlip.YamlToJson as YamlToJson
-- | Read a file of Yaml and produce a @'FromJSON' a@
yamlFileToJson :: (MonadIO m, FromJSON a) => FilePath -> m a
yamlFileToJson = yamlToJson <=< readFileBinary
-- | Convert a 'ByteString' of Yaml to a @'FromJSON' a@
yamlToJson :: (MonadIO m, FromJSON a) => ByteString -> m a
yamlToJson = Yaml.decode YamlToJson.translate
-- | Write a @'ToJSON a@ to a file as Yaml
jsonToYamlFile :: (MonadUnliftIO m, ToJSON a) => FilePath -> a -> m ()
jsonToYamlFile path = writeFileBinary path <=< jsonToYaml
-- | Read a file of JSON and produce a 'ByteString' of Yaml
--
-- NB. The conversion occurs at 'Value'.
jsonFileToYaml :: MonadUnliftIO m => FilePath -> m ByteString
jsonFileToYaml = jsonToYaml @_ @Value <=< eitherDecodeFileStrictThrow
-- | Convert a 'ToJSON a' to a 'ByteString' of Yaml
jsonToYaml :: (MonadUnliftIO m, ToJSON a) => a -> m ByteString
jsonToYaml = Yaml.encode JsonToYaml.translate