packages feed

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 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] ""