hstar 0.1.0.2 → 0.1.0.3
raw patch · 5 files changed
+117/−11 lines, 5 filesdep +snappy-lazy
Dependencies added: snappy-lazy
Files
- CHANGELOG.md +4/−0
- hstar.cabal +13/−1
- man/hstar.1 +72/−0
- src/Compression.cpphs +25/−10
- src/Version.cpphs +3/−0
CHANGELOG.md view
@@ -1,3 +1,7 @@+# 0.1.0.3++ * Add support for snappy (`.sz`) compressed archive with `with-snappy` flag+ # 0.1.0.2 * Add support for brotli (`.br`) compressed archives with `with-brotli` flag
hstar.cabal view
@@ -1,17 +1,19 @@ cabal-version: 2.0 name: hstar-version: 0.1.0.2+version: 0.1.0.3 license: BSD3 license-file: LICENSE copyright: Copyright: (c) 2019-2020 Vanessa McHale maintainer: vamchale@gmail.com author: Vanessa McHale+bug-reports: https://github.com/vmchale/archive-backpack/issues synopsis: Haskell version of tar CLI utility description: Haskell implementation of the tar utility, demonstrating backpack category: Codec, Tar, Archive build-type: Simple+data-files: man/hstar.1 extra-source-files: CHANGELOG.md README.md@@ -37,6 +39,10 @@ flag with-brotli description: Enable brotli compression support +flag with-snappy+ description: Enable snappy support+ default: False+ executable hstar main-is: Main.hs build-tool-depends: cpphs:cpphs -any@@ -64,11 +70,17 @@ lz4-hs >=0.1.1.0, lzlib >=1.0.1.0 + if flag(with-snappy)+ build-depends: snappy-lazy -any+ if flag(with-brotli) build-depends: brotli -any if flag(with-brotli) cpp-options: -DBROTLI++ if flag(with-snappy)+ cpp-options: -DSNAPPY if impl(ghc >=8.10) ghc-options: -Wunused-packages
+ man/hstar.1 view
@@ -0,0 +1,72 @@+.\" Automatically generated by Pandoc 2.9.2.1+.\"+.TH "hstar (1)" "" "" "" ""+.hy+.SH NAME+.PP+hstar - An archiving tool+.SH DESCRIPTION+.PP+\f[B]hstar\f[R] is an archiving tool+.SH SYNOPSIS+.PP+hstar sanitize archive.tar.lz+.PP+hstar unpack src-dist-0.1.0.0.tar.zst+.SH SUBCOMMANDS+.PP+\f[B]unpack\f[R] - Unpack an archive+.PP+\f[B]pack-dir\f[R] - Pack a directory into an tarball+.PP+\f[B]pack\f[R] - Pack files into an archive+.PP+\f[B]pack-src\f[R] - Pack up a source directory, ignoring version+control+.PP+\f[B]sanitize\f[R] - Convert a tarball to a pax-compatible archive.+This reads the whole file into memory.+.SH OPTIONS+.TP+\f[B]-h\f[R] \f[B]--help\f[R]+Display help+.TP+\f[B]-V\f[R] \f[B]--version\f[R]+Display version information+.SH SUPPORTED FORMATS+.SS COMPRESSION+.IP \[bu] 2+gzip+.IP \[bu] 2+bzip2+.IP \[bu] 2+lzma+.IP \[bu] 2+lzip+.IP \[bu] 2+zstd+.IP \[bu] 2+lz4+.IP \[bu] 2+deflate+.IP \[bu] 2+brotli (optional)+.SH SHELL COMPLETIONS+.PP+To get shell completions in your current session:+.PP+\f[C]eval \[dq]$(hstar --bash-completion-script hstar)\[dq]\f[R]+.PP+Put this in your \f[C]\[ti]/.bashrc\f[R] or+\f[C]\[ti]/.bash_profile\f[R] to install them.+.SH BUGS+.PP+Please report any bugs you may come across to+http://github.com/vmchale/archive-backpack/issues.+.SH COPYRIGHT+.PP+Copyright 2020.+Vanessa McHale.+All Rights Reserved.+.SH AUTHORS+Vanessa McHale<vamchale@gmail.com>.
src/Compression.cpphs view
@@ -4,17 +4,20 @@ ) where #ifdef BROTLI-import qualified Codec.Compression.Brotli as Brotli+import qualified Codec.Compression.Brotli as Brotli #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 Codec.Lzip as Lzip-import qualified Data.ByteString.Lazy as BSL-import Data.List (isSuffixOf)+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 Codec.Lzip as Lzip+import qualified Data.ByteString.Lazy as BSL+import Data.List (isSuffixOf) data Compressor = Lzma | Lz@@ -26,6 +29,9 @@ #ifdef BROTLI | Brotli #endif+#ifdef SNAPPY+ | Snappy+#endif | None compressionByFileExt :: FilePath -> Compressor@@ -46,6 +52,9 @@ | ".tbr" `isSuffixOf` fp = Brotli | ".tar.br" `isSuffixOf` fp = Brotli #endif+#ifdef SNAPPY+ | ".tar.sz" `isSuffixOf` fp = Snappy+#endif | ".tar" `isSuffixOf` fp = None | otherwise = error "Suffix not supported or invalid." @@ -60,6 +69,9 @@ #ifdef BROTLI decompressor Brotli = Brotli.decompress #endif+#ifdef SNAPPY+decompressor Snappy = Snappy.decompress+#endif decompressor None = id compressor :: Compressor -> (BSL.ByteString -> BSL.ByteString)@@ -72,5 +84,8 @@ compressor Lz4 = Lz4.compress #ifdef BROTLI compressor Brotli = Brotli.compress+#endif+#ifdef SNAPPY+compressor Snappy = Snappy.compress #endif compressor None = id
src/Version.cpphs view
@@ -24,5 +24,8 @@ #ifdef BROTLI ++ "brotli-hs: " ++ VERSION_brotli ++ "\n" #endif+#ifdef SNAPPY+ ++ "snappy-lazy-hs: " ++ VERSION_snappy_lazy ++ "\n"+#endif ++ "bz2-hs: " ++ VERSION_bz2 ++ "\n" ++ "bz2: " ++ bZ2BzlibVersion