b9 0.5.48 → 0.5.49
raw patch · 2 files changed
+17/−8 lines, 2 filesdep +base64-bytestringPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependencies added: base64-bytestring
API changes (from Hackage documentation)
- B9.Content.Generator: FromStrictBinary :: ByteString -> Content
- B9.Content.Generator: packBinaryContent :: [Word8] -> Content
+ B9.Content.Generator: RenderBase64Binary :: ByteString -> Content
+ B9.Content.Generator: RenderBase64BinaryFile :: FilePath -> Content
Files
- b9.cabal +2/−1
- src/lib/B9/Content/Generator.hs +15/−7
b9.cabal view
@@ -1,5 +1,5 @@ name: b9-version: 0.5.48+version: 0.5.49 synopsis: A tool and library for building virtual machine images. @@ -106,6 +106,7 @@ , aeson >= 1.0 , async >= 2.1 , base >= 4.8 && < 5+ , base64-bytestring , binary >= 0.8.3 , bytestring >= 0.10.8 , conduit >= 1.2
src/lib/B9/Content/Generator.hs view
@@ -19,8 +19,9 @@ import B9.Content.ErlangPropList import B9.Content.StringTemplate import B9.Content.YamlObject+import qualified Data.ByteString.Base64 as B64 import qualified Data.ByteString.Char8 as B-import qualified Data.ByteString as BStrict+import qualified Data.ByteString as BS import Test.QuickCheck import B9.QCUtil@@ -32,31 +33,38 @@ | RenderYaml (AST Content YamlObject) | FromString String | FromTextFile SourceFile+ -- | The data in the given file will be base64 encoded.+ | RenderBase64BinaryFile FilePath+ -- | This data will be base64 encoded.+ | RenderBase64Binary B.ByteString | FromURL String- | FromStrictBinary BStrict.ByteString deriving (Read,Show,Typeable,Eq,Data,Generic) --- | Pack bytes into a 'Content' such that a binary file will generated.-packBinaryContent :: [Word8] -> Content-packBinaryContent = FromStrictBinary . BStrict.pack- instance Hashable Content instance Binary Content instance NFData Content instance Arbitrary Content where arbitrary = oneof [FromTextFile <$> smaller arbitrary+ ,RenderBase64BinaryFile <$> smaller arbitrary ,RenderErlang <$> smaller arbitrary ,RenderYaml <$> smaller arbitrary ,FromString <$> smaller arbitrary+ ,RenderBase64Binary . BS.pack <$> smaller arbitrary ,FromURL <$> smaller arbitrary] instance CanRender Content where render (RenderErlang ast) = encodeSyntax <$> fromAST ast render (RenderYaml ast) = encodeSyntax <$> fromAST ast render (FromTextFile s) = readTemplateFile s+ render (RenderBase64BinaryFile s) = readBinaryFileAsBase64 s+ where+ -- | Read a binary file and encode it as base64+ readBinaryFileAsBase64 :: MonadIO m => FilePath -> m B.ByteString+ readBinaryFileAsBase64 f = B64.encode <$> liftIO (B.readFile f)++ render (RenderBase64Binary b) = return (B64.encode b) render (FromString str) = return (B.pack str)- render (FromStrictBinary b) = return b render (FromURL url) = lift $ do dbgL $ "Downloading: " ++ url (exitcode,out,err) <- liftIO $ readProcessWithExitCode "curl" [url] ""