All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
This changelog was created after v0.3.1. As a result, there may be slight inaccuracies with prior versions.
Categories Used:
- New Features - new features added to ouch itself, not CI
- Bug Fixes
- Improvements - general enhancements
- Tweaks - anything that doesn't fit into other categories, small typo fixes, most CI stuff, meta changes (e.g. README updates), etc.
- Regression - removal of a feature (that might be readded, or reworked in the future)
Bullet points in chronological order by PR
- Fix output corrupted on parallel decompression #642 (AntoniosBarotsis)
- Fix logging IO bottleneck #642 (AntoniosBarotsis)
- Support decompression over stdin #692 (rcorre)
- Make
--format
more forgiving with the formatting of the provided format #519 (marcospb19)
- Mention support for
7z
andrar
in help message.
- Add support for listing and decompressing
.rar
archives #529 (lmkra) - Add support for 7z #555 (Flat & MissileLab)
- Fix mime type detection #529 (lmkra)
- Fix size unit inconsistency #502 (marcospb19)
- Hint completions generator to expand file paths #508 (marcospb19)
- Multi-threaded compression for gzip and snappy using gzp #348 (figsoda)
- Add
ls
as an alternative alias for listing #360 (orhun)
- Fix decompression of zip archives with files larger than 4GB #354 (figsoda)
- Fix handling of unknown extensions during decompression #355 (figsoda)
- Remove remaining mentions of
.lz
that refers to the LZMA format #344 (marcospb19) - Handle Zip when modification times are missing #433 (marcospb19)
- Allow ouch to decompress archive into existing folder #321 (a-moreira)
- Accept inserting subcommand-independent flags in any position #329 (marcospb19)
- Improve extension parsing logic #330 (figsoda)
- Slight refactor when ensuring archive-only inputs #331 (vrmiguel)
- Use BStr to display possibly non-UTF8 byte sequences#332 (vrmiguel)
- Use ubyte instead of humansize #333 #333 (vrmiguel)
- Stop keeping track of the names of unpacked files #334 (vrmiguel)
- Clean up #335 (figsoda)
0.4.0 (2022-11-20)
- Add release-helper.sh to make github releases easier #146 (marcospb19)
- Add support for lz4 #150 (figsoda)
- add supported formats to help message #189 (figsoda)
- add link to github to help message #191 (figsoda)
- Update to Rust 2021 edition #192 (marcospb19)
- Implement accessibility mode #197 (AntonHermann)
- Add heuristics to decompressing archives #209 (sigmaSd)
- Add progress bar to compressing/decompressing #210 (sigmaSd)
- Support snappy format #215 (figsoda)
- Allow ignoring hidden files and files matched by .gitignore files #245 (vrmiguel)
- Automatically generate man pages with clap_mangen #273 (figsoda)
- Set last modified time during zip compression #279 (figsoda)
- Perform exhaustive matching on error variants #147 (marcospb19)
- Fix short flag for the --dir flag #149 (marcospb19)
- Rewrite tests #163 (figsoda)
- switch from lz4_flex to lzzzz, enable lz4 tests #173 (figsoda)
- Fix error message panic when cannot list non-archive files #182 (marcospb19)
- Fix not overwriting files/dirs when trying to create a dir #190 (SpyrosRoum)
- Skip compressing file if its the same file as the output #193 (sigmaSd)
- Fix warnings in doc comments #196 (AntonHermann)
- Remove Lzip because its incorrect, and improve extension comparison #198 (sigmaSd)
- Fix error with format infer #205 (marcospb19)
- Truncate long messages in the progress bar #214 (sigmaSd)
- Fix zip memory warnings #217 (Crypto-Spartan)
- Fix the hint suggestion for compressing multiple files #219 (Crypto-Spartan)
- Simple eprintln fixes #226 (Crypto-Spartan)
- Actually use relative paths when extracting #229 (sigmaSd)
- Mark directories when compressing to zip regardless of their contents #230 (sigmaSd)
- Recover last modified time when unpacking zip archives #250 (vrmiguel)
- Remove single quotes from clap doc comments #251 (jcgruenhage)
- Fix incorrect warnings for decompression #270 (figsoda)
- Fix infinite compression if output file is inside the input folder #288 (figsoda)
- Fix not overwriting a folder when compressing #295 (marcospb19)
- Check for EOF when asking questions #311 (marcospb19)
- Infer file extension when decompressing #154 (sigmaSd)
- Extension: Use hardcoded slices instead of
Vecs
when creating anExtension
#155 (vrmiguel) - Avoid allocating in
nice_directory_display
when possible, makeExtension
non-exhaustive #156 (vrmiguel) - Optimize
strip_cur_dir
#167 (vrmiguel) - Improve zip errors when paths are not utf8 valid #181 (marcospb19)
- Simplify/optimize several file inferring functions #204 (vrmiguel)
- List command: print file immediately after it is processed #225 (sigmaSd)
- Use
Cow<'static, str>
inFinalError
#246 (vrmiguel) - Don't allocate when possible in
to_utf
,nice_directory_display
#249 (vrmiguel) - Allow overriding the completions output directory [#251]](ouch-org#251) (jcgruenhage)
- Use Lazy to optimize env::current_dir repeated call [#261]](ouch-org#261) (marcospb19)
- Apply clippy lints and simplify smart_unpack #267 (figsoda)
- Respect file permissions when compressing zip files #271 (figsoda)
- Apply clippy lints #273 (figsoda)
- Warn user if file extension is passed as file name #277 (marcospb19)
- Check for errors when setting the last modified time #278 (marcospb19)
- Use to the humansize crate for formatting human-readable file sizes #281 (figsoda)
- Reactivate CI targets for ARM Linux and Windows MinGW #289 (figsoda)
- Improve error message when compressing folder with single-file formats #303 (marcospb19)
- Updating rustfmt #144 (marcospb19)
- Remove import comments #162 (marcospb19)
- Refactor utils into a module #166 (vrmiguel)
- README update #161 & #175 (marcospb19)
- Fix typo #153 (figsoda) & #176 (marcospb19)
- Organizing utils #179 (marcospb19)
- Update issue templates #186 (marcospb19)
- put compression backends behind features, clean up Cargo.toml #187 (figsoda)
- remove trailing blank lines in error messages #188 (figsoda)
- Improve/fix issue & question templates #199 & #200 (figsoda)
- Simplify decompress function #206 (sigmaSd)
- Add redundant check for --yes and --no flags conflict #221 (marcospb19)
- Ignore broken symlinks when compressing #224 (sigmaSd)
- Remove redundant user_wants_to_continue function #227 (Crypto-Spartan)
- Fix missing #[must_use] attribute on a method returning
Self
#243 (vrmiguel) - Update dependencies #253 (Crypto-Spartan)
- Update dependencies #257 (Artturin)
- Add pull request template #263 (figsoda)
- Clean up the description for the
-d/--dir
argument todecompress
#264 (hivehand) - Show subcommand aliases on --help #275 (marcospb19)
- Update dependencies #276 (figsoda)
- Rewrite progress module #280 (figsoda)
- Create scripts for benchmarking ouch #280 (figsoda)
- Remove automatic detection for partial compression #286 (marcospb19)
- Remove progress feature #300 (figsoda)
- @sigmaSd made their first contribution in #154
- @Crypto-Spartan made their first contribution in #217
- @Artturin made their first contribution in #257
0.3.1 (2021-11-02)
- Version bump
0.3.0 (2021-11-02)
- Properly detect if we are compressing a partially compressed file #54 & #91 (SpyrosRoum)
- Support
.tgz
#47 & #85 (figsoda) - Add support for short tar archive extensions #101 (dnaka91)
- Migrate from
oof
toclap
for argument parsing #105 & #108 (SpyrosRoum) - Shell completions & man page #122 (figsoda)
- Implement command 'list' to show archive contents #129 (AntonHermann)
- Print number of unpacked files by #130 (boozec)
Disclaimer: Our installation script does not support installing man pages and shell completions yet, but PRs are welcome!
- Empty folders are ignored in archive compression formats #41 (GabrielSimonetto)
- fix macOS executable paths #69 (vrmiguel)
- Print the format type when the format is in an incorrect position #84 (boozec)
- Compressing a single file to a single format that's not
tar
orzip
panics #87 & #89 (marcospb19) - Compression flag
--output
not working with single file compression #90 & #93 (figsoda) - Fix NO_COLOR issues, remove some dead code #66, #62, & #95 (figsoda)
- Add proper error message when using conflicting flags (e.g.
--yes --no
) #55 & #99 (SpyrosRoum) - Fix wrong archive format detection patterns #125 (SpyrosRoum)
- Decompressing file without extension gives bad error message #137 (marcospb19)
- Fix decompression overwriting files without asking and failing on directories #141 (SpyrosRoum)
- Add tests to check the resulting compressed files through MIME types #72 & #74 (vrmiguel)
- Add proper error message when adding several files to a non-archive format such as bzip or gzip #78 & #79 (vrmiguel)
- Apply clippy lints and small refactors #86 (figsoda)
- Use
fs-err
crate instead ofstd::fs
#56 & #94 (GabrielSimonetto) - Change FinalError builder pattern to take and give ownership of self #97 (SpyrosRoum)
- Omit "./" at the start of the path #109 & #116 (exoego)
- Introduce new enum for policy on how to handle y/n questions #124 (AntonHermann)
- Add missing docs #128 (GabrielSimonetto)
- CI: Check the format with Github Action #126 (boozec)
- CI: Rewrite #135 (figsoda)
- Improving error messages and removing dead error treatment code #140 (marcospb19)
- CI: don't upload unused artifacts #75 (marcospb19)
- Compression info lines should use the [INFO] formatting like when decompressing #76 (vrmiguel)
- CI: bump VM's Ubuntu version to 20 #81 (vrmiguel)
- CI: stop building for ARM and Windows MinGW #82 (vrmiguel)
- Updating Cargo.lock to newer dependencies #92 (marcospb19)
- Create CONTRIBUTING.md #98 (marcospb19)
- Minor cleanups and refactors #100 (figsoda)
- Readme revision #102 (marcospb19)
- Fix README small markdown error #104 (marcospb19)
- Escaping pipes in installation commands #106 (marcospb19)
- Add 'Packaging Status' badge to README / note about installing on NixOS #107 (figsoda)
- Change decompress command INFO messages #117 & #119 (exoego)
- Change decompress flag
--output
to--dir
#118 (khubo) - Updating CONTRIBUTING.md #132 (marcospb19)
- Remove tar combinations from compression format #133 (SpyrosRoum)
- Simplify cli canonicalize implementation #139 (marcospb19)
- @figsoda made their first contribution in #86
- @boozec made their first contribution in #84
- @SpyrosRoum made their first contribution in #97
- @dnaka91 made their first contribution in #101
- @exoego made their first contribution in #109
- @AntonHermann made their first contribution in #124
- @khubo made their first contribution in #118
0.2.0 (2021-10-06)
- Add Cargo lock file #46 (psibi)
- Allow compression of empty folders #57 (GabrielSimonetto)
- Make decompress command explicit #61 (GabrielSimonetto)
- Add support for Zstd #64 (vrmiguel)
- Fix download script, download from new linux urls #40
- Don't use colors when
stdout
orstderr
are being redirected #60 (vrmiguel) - Making an error message for running decompress without arguments #63
- Increasing read and writer buffers capacity #65 (marcospb19)
- @psibi made their first contribution in #46
- @GabrielSimonetto made their first contribution in #57
0.1.6 (2021-09-17)
- Extension detection method supports more than 2 format suffixes. #28
- Change Display implementation of crate::Error to an more structured FinalUserError #39 (marcospb19)
- Actions: new targets: Linux ARM64 (glibc), x86-64 (musl), Windows (MinGW) #43 (vrmiguel)
- Further testing to oof cli #38 (demfabris)
- Reuse Confirmation struct when checking for overwrite permission #42 (vrmiguel)
0.1.5 (2021-05-27)
- Add support for dot-dot (
..
) in output file/directory #4 - Add install.sh script #37
- Add checking for typos on the compression subcommand #21 (vrmiguel)
- Added compression and decompression tests for each current supported format #24 (marcospb19)
- Add tests to oof #27 (demfabris)
- @demfabris made their first contribution in #27
0.1.5-rc (2021-04-07)
- Better error messages (vrmiguel)
- New
--help
message df1bc87 (marcospb19) - Create subproject
oof
, a thin argparsing lib #12 (marcospb19) - Pretty-printing for bytes #17 (vrmiguel)
- Verify inputs when decompressing #18 (vrmiguel)
- CI: use MUSL when compiling for Linux 8e6804 (vrmiguel)
- CI: build and test for Linux ARMv7 #19 (vrmiguel)
- Argparsing: problems with the
-o, --output
flag #13 (marcospb19) - Short flags not receiving values #15 (vrmiguel)