83 Commits

Author SHA1 Message Date
João M. Bezerra
5dac8431f2 Fix --format parsing extensions with dots
Also improve error reporting for `--format` with malformed or
unsupported extensions

This commit is very messy, as it also does an refac in the project,
which should ideally be in a separated commit
2024-09-07 00:24:50 -03:00
Ryan Roden-Corrent
77c1a4e9db Support decompressing stdin.
Fixes #687.

If "-" is passed as a filename, decompress data from stdin.

Currently `--format` must be passed as well, but as a next step,
we could try to infer the format from magic numbers.

As stdin is not connected to the terminal, we cannot prompt for Y/N
when warning about decompression in memory, for e.g. zip. Just default
to No, and require passing "-y" in these cases.

For zip, we have to buffer the whole stream in memory to seek into it,
just as we do with a chained decoder like `.zip.bz`.

The rar format requires an actual file (not an `impl Read`), so
we write a temp file that it can decode.

When decoding a single-file archive (e.g. file.bz), the output filename
is just `-`, since we don't know the original filename. I had to add
a bit of a hack to the tests to work around this. Another option
would be to interpret "-d" as a destination filename in this case.

When decoding a multi-file archive, I decided to unpack directly into
the destination directory, as this seemed like a better experience than
adding a top-level "-" folder inside the destination.
2024-08-26 03:40:52 -03:00
Antonios Barotsis
a14bbfc904 Switched to explicit shutdown message instead of None 2024-04-01 10:58:35 -03:00
João Marcos P. Bezerra
a3e5bac438 fix STDIN syncrhonization problems 2024-04-01 10:58:35 -03:00
João Marcos P. Bezerra
ccbdceac34 logger: fix warning output 2024-04-01 10:58:35 -03:00
João Marcos P. Bezerra
615a7d3c49 logger: flush logs temporarily 2024-04-01 10:58:35 -03:00
João Marcos P. Bezerra
25d7d3d870 logger: refactor usage of sync primitives
use `std::sync::Barrier` instead of the barebones `Condvar` + `Mutex`
combo
2024-04-01 10:58:35 -03:00
João Marcos P. Bezerra
792db000bb move spawn_logger_thread to logger module
and create another module inside of the logger module to reorganize
things
2024-04-01 10:58:35 -03:00
João Marcos P. Bezerra
0b760aadf7 fix logger thread shutdown system 2024-04-01 10:58:35 -03:00
João Marcos P. Bezerra
d0280f0579 move code to function spawn_logger_thread 2024-04-01 10:58:35 -03:00
João Marcos P. Bezerra
28daa9e8c4 make logger channel static 2024-04-01 10:58:35 -03:00
João Marcos P. Bezerra
bed8ea0276 create Logger::info_accessible 2024-04-01 10:58:35 -03:00
Antonios Barotsis
1e56bb8f1f Improve logging interface 2024-04-01 10:58:35 -03:00
Antonios Barotsis
380893b6df Add levels and fix output 2024-04-01 10:58:35 -03:00
Antonios Barotsis
e2ac5c4c9b Make all info logs use the new system 2024-04-01 10:58:35 -03:00
Antonios Barotsis
e989db7a3a Added buffering 2024-04-01 10:58:35 -03:00
Antonios Barotsis
c2873f77d3 wip 2024-04-01 10:58:35 -03:00
misilelab
db0bc8a7d9 impl except test 2023-11-25 21:33:22 -03:00
Łukasz Krawiec
dade163243 added support for listing and decompressing .rar archives 2023-11-15 08:59:00 -03:00
João Marcos
9507c4d93a
Merge pull request #502 from ouch-org/fix-size-unit-inconsistency
Fix size unit inconsistency
2023-09-07 16:12:20 -03:00
João M. Bezerra
c32cbd8c7b fix clippy warning 2023-09-04 21:49:42 -03:00
João M. Bezerra
cbd327aad7 replace usage of ubyte by our own Bytes formatter 2023-09-04 21:15:57 -03:00
João M. Bezerra
693167e933 formatting: fix gibibytes vs gigabytes issue 2023-09-04 20:54:49 -03:00
João M. Bezerra
76116ed5ec re-add our size unit code from 368a776 2023-09-04 20:40:00 -03:00
João M. Bezerra
54ee52610a fix rustdoc warnings 2023-02-03 02:24:07 -03:00
figsoda
e06b2c8635 apply clippy suggestions 2023-01-05 14:23:37 -05:00
Vinícius R. Miguel
2caeb1004c refac: add support for Windows in EscapedPathDisplay 2023-01-05 13:39:06 -03:00
Vinícius R. Miguel
0deb18289a refac: use BStr to display possibly non-UTF8 byte sequences 2023-01-05 12:46:29 -03:00
João M. Bezerra
c737956a4e check for EOF when asking questions
when invoking Ouch from shell scripts, it is likely that questions will
be left unanswered with EOF, this commit fixes Ouch interpreting EOF as
Yes in Y/N questions
2022-11-23 00:43:53 -03:00
João M. Bezerra
e8d0914a01 improve error message when compressing folder with single-file formats 2022-10-17 00:03:44 -03:00
figsoda
13fab6d241 remove progress feature 2022-10-15 23:03:20 -04:00
João M. Bezerra
9f7cba79e1 use remove_file_or_dir to remove dir check 2022-10-15 22:31:47 -03:00
João M. Bezerra
2da497c1ca fix fatal error if read fails when compressing 2022-10-15 22:01:30 -03:00
João M. Bezerra
4d2ccf4873 create remove_file_or_dir util 2022-10-15 21:51:52 -03:00
João M. Bezerra
cdd1b530be fix not overwriting a folder when compressing 2022-10-15 21:36:24 -03:00
figsoda
d4766c4bf3
Merge branch 'main' into rewrite-progress 2022-10-13 11:37:09 -04:00
figsoda
51855948f1 add OutputLine trait for performance improvements 2022-10-13 11:31:43 -04:00
figsoda
2f4404e658 use humansize instead of Bytes 2022-10-12 22:33:41 -04:00
João M. Bezerra
a2c91c4248 minor tweaks 2022-10-11 22:09:39 -03:00
figsoda
5dc8d3efed fix: apply clippy lints 2022-10-03 20:56:48 -04:00
figsoda
996e597c1f fix: apply clippy lint 2022-08-14 12:32:54 +08:00
João M. Bezerra
86234084ab refac: use Lazy cell to optimize env::current_dir call 2022-08-12 13:03:48 -03:00
João M. Bezerra
2e165e57cb fix rustdoc lint warnings 2022-06-05 12:52:20 -03:00
João M. Bezerra
801189ec02 create is_running_in_accessible_mode helper
also renamed some variables
2022-06-04 21:38:16 -03:00
João M. Bezerra
278bc980c1 small changes and rewrite zip warning message 2022-06-04 14:36:57 -03:00
João M. Bezerra
97c4387fcf minor simplifications and renamings 2022-06-04 14:04:31 -03:00
João M. Bezerra
14025c6816 remove use_small_heuristics = "Max" from rustfmt
and update edition to 2021
2022-06-04 13:06:52 -03:00
João M. Bezerra
eac0a0687a fix clippy warnings 2022-06-04 10:59:51 -03:00
Vinícius Miguel
8b1cd18fb5
feat: don't allocate when possible in to_utf, nice_directory_display (#249) 2022-02-05 12:31:20 -03:00
Vinícius Miguel
336fc97831
feat: allow ignoring hidden files and files matched by .gitignore files (#245) 2022-01-16 23:30:26 -03:00