packages feed

sak 0.1.2.3 → 0.1.2.4

raw patch · 6 files changed

+59/−14 lines, 6 filesdep +snappy-lazydep ~bz2

Dependencies added: snappy-lazy

Dependency ranges changed: bz2

Files

CHANGELOG.md view
@@ -1,5 +1,9 @@ # sak +## 0.1.2.4++  * Add snappy support+ ## 0.1.2.3    * Add `recompress` subcommand
README.md view
@@ -10,6 +10,12 @@ sak transcode sak-0.1.0.0.tar.gz sak-0.1.0.0.tar.lz ``` +To recompress a file:++```+sak recompress binary.tar.zst --best+```+ ### Bash Completions  To get bash completions in your current shell session:
man/sak.1 view
@@ -65,6 +65,8 @@ deflate (0-9) .IP \[bu] 2 brotli (0-11)+.IP \[bu] 2+snappy .SH SHELL COMPLETIONS .PP To get shell completions in your current session:
sak.cabal view
@@ -1,6 +1,6 @@ cabal-version:      1.18 name:               sak-version:            0.1.2.3+version:            0.1.2.4 license:            BSD3 license-file:       LICENSE copyright:          Copyright: (c) 2020 Vanessa McHale@@ -25,6 +25,9 @@     description:         Build with support for brotli encoding/decoding (disable this to statically link) +flag with-snappy+    description: Build with support for snappy encoding/decoding+ executable sak     main-is:            Main.hs     build-tool-depends: cpphs:cpphs -any@@ -50,6 +53,12 @@         bytestring -any,         directory >=1.3.1.0,         parallel-io -any++    if flag(with-snappy)+        build-depends: snappy-lazy -any++    if flag(with-snappy)+        cpp-options: -DSNAPPY      if flag(with-brotli)         build-depends: brotli -any
src/Compression.cpphs view
@@ -13,19 +13,22 @@                    ) where  #ifdef BROTLI-import qualified Codec.Compression.Brotli    as Br+import qualified Codec.Compression.Brotli     as Br #endif-import qualified Codec.Compression.BZip      as BZip-import qualified Codec.Compression.GZip      as GZip-import qualified Codec.Compression.Lzma      as Lzma-import qualified Codec.Compression.Zlib      as Zlib-import qualified Codec.Compression.Zstd.Lazy as Zstd-import qualified Codec.Lz4                   as Lz4-import qualified Codec.Lzip                  as Lzip-import qualified Data.ByteString.Lazy        as BSL-import           Data.List                   (isSuffixOf)-import           System.FilePath             (dropExtension, (-<.>))-import           System.IO                   (IOMode (ReadMode), hFileSize, withFile)+import qualified Codec.Compression.BZip       as BZip+import qualified Codec.Compression.GZip       as GZip+import qualified Codec.Compression.Lzma       as Lzma+#ifdef SNAPPY+import qualified Codec.Compression.Snappy.BSL as Snappy+#endif+import qualified Codec.Compression.Zlib       as Zlib+import qualified Codec.Compression.Zstd.Lazy  as Zstd+import qualified Codec.Lz4                    as Lz4+import qualified Codec.Lzip                   as Lzip+import qualified Data.ByteString.Lazy         as BSL+import           Data.List                    (isSuffixOf)+import           System.FilePath              (dropExtension, (-<.>))+import           System.IO                    (IOMode (ReadMode), hFileSize, withFile)  data CompressionLevel = Best                       | Fastest@@ -40,6 +43,9 @@ #ifdef BROTLI                  | Brotli #endif+#ifdef SNAPPY+                 | Snappy+#endif                  | Lz4                  | Z                  | None@@ -56,6 +62,9 @@ #ifdef BROTLI ext Brotli = ".br" #endif+#ifdef SNAPPY+ext Snappy = ".sz"+#endif ext None   = ""  uncompressedExt :: FilePath -> FilePath@@ -69,7 +78,7 @@                    | ".xcfbz2" `isSuffixOf` fp = fp -<.> ".xcf"                    | ".tbz2" `isSuffixOf` fp   = fp -<.> "tar"                    | ".tbz" `isSuffixOf` fp    = fp -<.> "tar"-                   | ".tbr" `isSuffixOf` fp = fp -<.> "tar"+                   | ".tbr" `isSuffixOf` fp    = fp -<.> "tar"                    | otherwise                 = dropExtension fp  detectCompression :: FilePath -> Compression@@ -93,6 +102,9 @@ #ifdef BROTLI     | ".br" `isSuffixOf` fp     = Brotli #endif+#ifdef SNAPPY+    | ".sz" `isSuffixOf` fp     = Snappy+#endif     | otherwise                 = None -- error "Suffix not supported or invalid"  toFileDecompressor :: Compression -> FilePath -> IO BSL.ByteString@@ -110,6 +122,9 @@ #ifdef BROTLI toDecompressor Brotli = Br.decompress #endif+#ifdef SNAPPY+toDecompressor Snappy = Snappy.decompress+#endif toDecompressor None   = id  check :: Compression -> BSL.ByteString -> IO ()@@ -139,6 +154,9 @@ #endif  toInt :: Compression -> CompressionLevel -> Int+#ifdef SNAPPY+toInt Snappy _          = undefined+#endif #ifdef BROTLI toInt Brotli Fastest    = fromEnum (minBound :: Br.CompressionLevel) toInt Brotli (Custom i) = levelGuard (0,11) i@@ -185,6 +203,9 @@ toCompressor Lz4  lvl _         = Lz4.compressSz (toInt Lz4 lvl) #ifdef BROTLI toCompressor Brotli lvl _       = Br.compressWith (brotliCompression $ toInt Brotli lvl)+#endif+#ifdef SNAPPY+toCompressor Snappy _ _         = Snappy.compress #endif toCompressor None _ _           = id 
src/Version.cpphs view
@@ -22,3 +22,6 @@ #ifdef BROTLI     ++ "\nbrotli-hs: " ++ VERSION_brotli #endif+#ifdef SNAPPY+    ++ "\nsnappy-lazy-hs " ++ VERSION_snappy_lazy+#endif