#-}
module Main where
import Codec.Audio.WavPack.Block
+import Codec.Audio.WavPack.Metadata
import qualified Data.ByteString.Lazy as L
import qualified Data.Strict as S
+import Data.Maybe
+import Prelude.Unicode
import System.Environment
import System.IO
main ∷ IO ()
main = do [wvFile] ← getArgs
- wvStream ← L.readFile wvFile
+ wvData ← L.readFile wvFile
hSetBuffering stdout NoBuffering
- showWvInfo wvStream
+ showWvInfo wvData
showWvInfo ∷ L.ByteString → IO ()
showWvInfo stream
= case findNextBlock stream of
(# S.Just block, _ #)
- → print block
+ → printBlock block
(# S.Nothing , _ #)
→ fail "Can't find any WavPack block headers."
+
+printBlock ∷ Block → IO ()
+printBlock b
+ = do putStrLn "- Block header:"
+ print $ blockHeader b
+ putStrLn "- Block metadata sub-blocks:"
+ mapM_ printSub $ blockMetadata b
+ where
+ printSub ∷ SubBlock → IO ()
+ printSub sub
+ | isJust (fromSubBlock sub ∷ Maybe WVBitstream)
+ = putStrLn ( "(WV Bitstream omitted: " ⧺
+ show (metaSize sub) ⧺
+ " bytes)"
+ )
+ | otherwise
+ = print sub