Skip to content

Latest commit

 

History

History
409 lines (300 loc) · 22.8 KB

File metadata and controls

409 lines (300 loc) · 22.8 KB

Changelog

All notable user-facing changes to Ouch should be documented in this file.

This project adheres to Semantic Versioning.

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.
  • Removals - removal of a feature (and most likely a breaking change)

Bullet points in chronological order by PR

Removals

New Features

  • List: show symlink targets (for tar and zip) (#934)

Improvements

  • Report mtime-set errors for .7z as warnings (#950)

Bug Fixes

  • Fix various panics not handled gracefully (#950)

Tweaks

  • Unify directory extraction message for zip and tar archives (#937)

Removals

  • Remove archive auto-flattening on decompression (formerly known as "smart unpack") (#907)

New Features

  • Merge folders in decompression (#798)
  • Provide Nushell completions (packages still need to install them) (#827)
  • Add aliases for comic book archives (#835)
  • Support .lz decompression (#838)
  • Support .lzma decompression (and fix .lzma being a wrong alias for .xz) (#838)
  • Support .lz compression (#867)
  • Support .lzma compression (#867)
  • Support decompression of concatenated .gz, .bz2, and .lz4 (#898)

Improvements

  • Give better error messages when archive extensions are invalid (#817)
  • Improve misleading error message (#818)
  • Add aliases for --password flag (--pass and --pw) (#847)
  • Avoid loading entire 7z archive into memory when listing (#860)
  • Use lzma-rust2 crate instead of liblzma crate (#867)
  • Add info!, info_accessible! and warning! macros (#874)
  • Handle --quiet logic in logger (#885)
  • Refactor/simplify logger (#888)
  • Print input and output file sizes (#914)
  • Make path printing concise and consistent (#916)

Bug Fixes

  • Fix 7z BadSignature error when compressing and then listing (#819)
  • Fix tar extraction count when --quiet (#824)
  • Fix unpacking with merge flag failing without --dir flag (#826)
  • Handle broken symlinks in zip archives and normalize path separators (#841)
  • Fix folder softlink is not preserved after packing (#850)
  • Handle read-only directories in tar extraction (#873)
  • Fix tar hardlink is not preserved after decompressing or compressing (#879)
  • Fix enable gitignore flag should work without git (#881)
  • Fix .7z always being fully loaded to memory (#905)
  • Fix reporting wrong path when file is renamed (#913)
  • Fix renaming broken when multi extension paths (#919)
  • Fix incorrectly overwriting input file when file signature is sniffed (#920)
  • Add safeguards before deleting directories (#930)

Tweaks

  • Make .bz3 opt-out (#814)
  • Adjust INFO color to green (#858)
  • Sevenz rust2 bump to 0.19.1 (#875)
  • Bump gzp from 0.11.3 to 2.0.0 (#876)
  • Rename output when input is stdin (#903)
  • Fix .zip crash when file mode isn't present (#804)

New Features

  • Add multithreading support for zstd compression (#689)
  • Add bzip3 support (#522)
  • Add --remove flag for decompression subcommand to remove files after successful decompression (#757)
  • Add br (Brotli) support (#765)
  • Add rename option in overwrite menu (#779)
  • Store symlinks by default and add --follow-symlinks to store the target files (#789)

Bug Fixes

  • Fix output corrupted on parallel decompression (#642)

Tweaks

  • CI refactor (#578)
  • Use a prefix tmp-ouch- for temporary decompression path name to avoid conflicts (#725 and #788)
  • Ignore .git/ when -g/--gitignore is set (#507)
  • Run clippy for tests too (#738)
  • Sevenz-rust is unmaintained, switch to sevenz-rust2 (#796)

Improvements

  • Fix logging IO bottleneck (#642)
  • Support decompression over stdin (#692)
  • Make --format more forgiving with the formatting of the provided format (#519)
  • Use buffered writer for list output (#764)
  • Disable smart unpack when --dir flag is provided in decompress command (#782)
  • Align file sizes at left for each extracted file to make output clearer (#792)

Improvements

  • Explicitly declare feature flags use_zlib & use_zstd_thin (#564)

Tweaks

  • Mention support for 7z and rar in help message.

New Features

  • Add support for listing and decompressing .rar archives (#529)
  • Add support for 7z (#555)

Bug Fixes

  • Fix mime type detection (#529)
  • Fix size unit inconsistency (#502)

Improvements

  • Hint completions generator to expand file paths (#508)

New Features

  • Add flags to configure the compression level
    • --level to precisely set the compression level (#372)
    • --fast and --slow (#374)
  • Add --format option (#341)

Improvements

  • Multi-threaded compression for gzip and snappy using gzp (#348)
  • Add ls as an alternative alias for listing (#360)

Bug Fixes

  • Fix decompression of zip archives with files larger than 4GB (#354)
  • Fix handling of unknown extensions during decompression (#355)
  • Remove remaining mentions of .lz that refers to the LZMA format (#344)
  • Handle Zip when modification times are missing (#433)

New Features

  • Add cli option to (de)compress quietly (#325)

Improvements

  • Allow ouch to decompress archive into existing folder (#321)
  • Accept inserting subcommand-independent flags in any position (#329)
  • Improve extension parsing logic (#330)
  • Slight refactor when ensuring archive-only inputs (#331)
  • Use BStr to display possibly non-UTF8 byte sequences (#332)
  • Use ubyte instead of humansize (#333)
  • Stop keeping track of the names of unpacked files (#334)
  • Clean up (#335)

Bug Fixes

  • Stop incorrectly asking to remove the parent dir (#321)

Tweaks

  • Add scoop install instructions to readme (#323)

New Features

  • Add release-helper.sh to make github releases easier (#146)
  • Add support for lz4 (#150)
  • Add supported formats to help message (#189)
  • Add link to github to help message (#191)
  • Update to Rust 2021 edition (#192)
  • Implement accessibility mode (#197)
  • Add heuristics to decompressing archives (#209)
  • Add progress bar to compressing/decompressing (#210)
  • Support snappy format (#215)
  • Allow ignoring hidden files and files matched by .gitignore files (#245)
  • Automatically generate man pages with clap_mangen (#273)
  • Set last modified time during zip compression (#279)

Bug Fixes

  • Perform exhaustive matching on error variants (#147)
  • Fix short flag for the --dir flag (#149)
  • Rewrite tests (#163)
  • Switch from lz4_flex to lzzzz, enable lz4 tests (#173)
  • Fix error message panic when cannot list non-archive files (#182)
  • Fix not overwriting files/dirs when trying to create a dir (#190)
  • Skip compressing file if it's the same file as the output (#193)
  • Fix warnings in doc comments (#196)
  • Remove Lzip because its incorrect, and improve extension comparison (#198)
  • Fix error with format infer (#205)
  • Truncate long messages in the progress bar (#214)
  • Fix zip memory warnings (#217)
  • Fix the hint suggestion for compressing multiple files (#219)
  • Simple eprintln fixes (#226)
  • Actually use relative paths when extracting (#229)
  • Mark directories when compressing to zip regardless of their contents (#230)
  • Recover last modified time when unpacking zip archives (#250)
  • Remove single quotes from clap doc comments (#251)
  • Fix incorrect warnings for decompression (#270)
  • Fix infinite compression if output file is inside the input folder (#288)
  • Fix not overwriting a folder when compressing (#295)
  • Check for EOF when asking questions (#311)

Improvements

  • Infer file extension when decompressing (#154)
  • Extension: Use hardcoded slices instead of Vecs when creating an Extension (#155)
  • Avoid allocating in nice_directory_display when possible, make Extension non-exhaustive (#156)
  • Optimize strip_cur_dir (#167)
  • Improve zip errors when paths are not utf8 valid (#181)
  • Simplify/optimize several file inferring functions (#204)
  • List command: print file immediately after it is processed (#225)
  • Use Cow<'static, str> in FinalError (#246)
  • Don't allocate when possible in to_utf, nice_directory_display (#249)
  • Allow overriding the completions output directory (#251)
  • Use Lazy to optimize env::current_dir repeated call (#261)
  • Apply clippy lints and simplify smart_unpack (#267)
  • Respect file permissions when compressing zip files (#271)
  • Apply clippy lints (#273)
  • Warn user if file extension is passed as file name (#277)
  • Check for errors when setting the last modified time (#278)
  • Use the humansize crate for formatting human-readable file sizes (#281)
  • Reactivate CI targets for ARM Linux and Windows MinGW (#289)
  • Improve error message when compressing folder with single-file formats (#303)

Tweaks

  • Updating rustfmt (#144)
  • Remove import comments (#162)
  • Refactor utils into a module (#166)
  • README update (#161 and #175)
  • Organizing utils (#179)
  • Update issue templates (#186)
  • put compression backends behind features, clean up Cargo.toml (#187)
  • remove trailing blank lines in error messages (#188)
  • Improve/fix issue & question templates (#199 and #200)
  • Simplify decompress function (#206)
  • Add redundant check for --yes and --no flags conflict (#221)
  • Ignore broken symlinks when compressing (#224)
  • Remove redundant user_wants_to_continue function (#227)
  • Fix missing #[must_use] attribute on a method returning Self (#243)
  • Update dependencies (#253)
  • Update dependencies (#257)
  • Add pull request template (#263)
  • Clean up the description for the -d/--dir argument to decompress (#264)
  • Show subcommand aliases on --help (#275)
  • Update dependencies (#276)
  • Rewrite progress module (#280)
  • Create scripts for benchmarking ouch (#280)

Removals

  • Remove automatic detection for partial compression (#286)
  • Remove progress feature (#300)

Tweaks

  • Version bump

New Features

  • Properly detect if we are compressing a partially compressed file (#91)
  • Support .tgz (#85)
  • Add support for short tar archive extensions (#101)
  • Migrate from oof to clap for argument parsing (#108)
  • Shell completions & man page (#122)
  • Implement command 'list' to show archive contents (#129)
  • Print number of unpacked files by (#130)

Bug Fixes

  • Empty folders are ignored in archive compression formats (#41)
  • Fix macOS executable paths (#69)
  • Print the format type when the format is in an incorrect position (#84)
  • Compressing a single file to a single format that's not tar or zip panics (#89)
  • Compression flag --output not working with single file compression (#93)
  • Fix NO_COLOR issues, remove some dead code (#95)
  • Add proper error message when using conflicting flags (e.g., --yes --no) (#99)
  • Fix wrong archive format detection patterns (#125)
  • Decompressing file without extension gives bad error message (#137)
  • Fix decompression overwriting files without asking and failing on directories (#141)

Improvements

  • Add tests to check the resulting compressed files through MIME types (#74)
  • Add proper error message when adding several files to a non-archive format such as bzip or gzip (#79)
  • Apply clippy lints and small refactors (#86)
  • Use fs-err crate instead of std::fs (#94)
  • Change FinalError builder pattern to take and give ownership of self (#97)
  • Omit "./" at the start of the path (#109 and #116)
  • Introduce new enum for policy on how to handle y/n questions (#124)
  • Add missing docs (#128)
  • CI: Check the format with Github Action (#126)
  • CI: Rewrite (#135)
  • Improving error messages and removing dead error treatment code (#140)

Tweaks

  • CI: don't upload unused artifacts (#75)
  • Compression info lines should use the [INFO] formatting like when decompressing (#76)
  • CI: bump VM's Ubuntu version to 20 (#81)
  • CI: stop building for ARM and Windows MinGW (#82)
  • Updating Cargo.lock to newer dependencies (#92)
  • Create CONTRIBUTING.md (#98)
  • Minor cleanups and refactors (#100)
  • Readme revision (#102)
  • Fix README small markdown error (#104)
  • Escaping pipes in installation commands (#106)
  • Add 'Packaging Status' badge to README / note about installing on NixOS (#107)
  • Change decompress command INFO messages (#117 and #119)
  • Change decompress flag --output to --dir (#118)
  • Updating CONTRIBUTING.md (#132)
  • Remove tar combinations from compression format (#133)
  • Simplify cli canonicalize implementation (#139)

New Features

  • Add Cargo lock file (#46)
  • Allow compression of empty folders (#57)
  • Make decompress command explicit (#61)
  • Add support for Zstd (#64)

Bug Fixes

  • Fix download script, download from new linux urls (#40)

Improvements

  • Don't use colors when stdout or stderr are being redirected (#60)
  • Making an error message for running decompress without arguments (#63)
  • Increasing read and writer buffers capacity (#65)

New Features

  • Extension detection method supports more than 2 format suffixes (#28)
  • Change Display implementation of crate::Error to a more structured FinalUserError (#39)
  • Actions: new targets: Linux ARM64 (glibc), x86-64 (musl), Windows (MinGW) (#43)

Improvements

  • Further testing to oof cli (#38)
  • Reuse Confirmation struct when checking for overwrite permission (#42)

New Features

  • Add support for dot-dot (..) in output file/directory (#4)
  • Add install.sh script (#37)
  • Add checking for typos on the compression subcommand (#21)

Bug Fixes

  • Fix the -n, --no flag usage and add an alias for the compress subcommand (#22)

Improvements

  • Added compression and decompression tests for each current supported format (#24)
  • Add tests to oof (#27)

Tweaks

  • Switch panics to errors (#21)