317 Commits

Author SHA1 Message Date
Anton Hermann
e8f24b7178 list: highlight directories (either coloring them or adding a /) 2021-11-01 12:15:36 +01:00
Anton Hermann
5421a5db77 Implement tree output for 'list' command 2021-11-01 08:53:18 +01:00
Anton Hermann
30ebcf4f9e Implement command 'list' to show archive contents 2021-11-01 08:53:03 +01:00
Spyros Roum
4921d3d3d2 Add Extension wrapper that lets us keep tgz instead of forcing tar.gz 2021-11-01 01:09:37 +02:00
João M. Bezerra
d9e0b4c5fb Fixing documentation conflicting with build.rs 2021-10-31 12:57:30 -03:00
Spyros Roum
604616e042 Use proper match with no wildcard when detecting if it's archive 2021-10-31 11:09:35 +02:00
João M. Bezerra
20e0067cad Adding docs in new files and functions 2021-10-31 03:21:52 -03:00
João Marcos Bezerra
95d38e99f6 Merge branch 'master' into issue-32 2021-10-31 03:01:41 -03:00
João Marcos Bezerra
9b7b863e94
Merge branch 'master' into master 2021-10-31 02:41:43 -03:00
João M. Bezerra
a85eb68a60 Merge branch 'pr/completions-manpage' 2021-10-31 02:23:21 -03:00
João M. Bezerra
77873cde15 Merge branch 'pr/fix-archive-format-detection' 2021-10-31 01:59:41 -03:00
João M. Bezerra
4e731f8af3 Merge branch 'dir-flag' 2021-10-31 01:49:33 -03:00
figsoda
614f2aa6d5
Merge branch 'master' into completions-manpage 2021-10-30 16:59:24 -04:00
Gabriel Simonetto
7c82f2b3b7 Make remaining modules public in order to gain the documentation check 2021-10-30 17:00:07 -03:00
Gabriel Simonetto
704a4efdd7 Merge branch 'master' into issue-56 2021-10-30 11:31:09 -03:00
João M. Bezerra
d1c905cda4 Improving permission denied error message 2021-10-30 11:17:38 -03:00
João M. Bezerra
6c6f721f35 Solved FinalError compile errors 2021-10-30 11:17:38 -03:00
Gabriel Simonetto
09b050d836 Introduce fs_err as a replacement for fs 2021-10-30 11:17:38 -03:00
Santo Cariotti
09c2830190 feat: print number of unpacked files 2021-10-29 19:21:17 +02:00
Santo Cariotti
2d84686b25 feat: write only one time the info on stdout 2021-10-29 19:14:16 +02:00
Gabriel Simonetto
70b787b58e Fix repo link on documentation 2021-10-27 00:08:26 -03:00
Gabriel Simonetto
0fdef287c4 Warn for missing docs, and add necessary docs 2021-10-27 00:08:00 -03:00
Spyros Roum
6b6ade8c9a Break down tgz, tbz, etc to tar + gz/bz 2021-10-22 14:49:32 +03:00
Spyros Roum
caca7901c4 Run cargo fmt 2021-10-22 14:47:44 +03:00
Spyros Roum
02657ee5bc Remove the variants from CompressionFormat 2021-10-22 14:46:54 +03:00
Spyros Roum
bdf5090844 zst is not an archive format.. 2021-10-22 02:21:31 +03:00
figsoda
d6054ba3ee move QuestionPolicy to lib 2021-10-21 19:13:29 -04:00
Spyros Roum
91a1054c3c Remove duplicated if/else branches 2021-10-22 02:05:38 +03:00
Spyros Roum
0f3bc4f444 Use the new method were applicable 2021-10-22 02:04:55 +03:00
Spyros Roum
340827de1f Introduce is_archive_format method on CompressionFormat 2021-10-22 02:00:11 +03:00
figsoda
2816b837e2
Merge branch 'master' into completions-manpage 2021-10-21 18:57:24 -04:00
Anton Hermann
10f7462b8b Introduce new type for policy on how to handle questions 2021-10-21 23:31:53 +02:00
figsoda
7efac2e55d generate completions 2021-10-20 22:18:39 -04:00
João Marcos Bezerra
e17eb9595e Merge branch 'master' into migrate-to-clap 2021-10-20 14:04:19 -03:00
TATSUNO Yasuhiro
4404b91a23
refactoring: Extract function (#116) 2021-10-20 01:10:10 -03:00
TATSUNO Yasuhiro
5f7d777342
Change display of current directory (#119) 2021-10-20 00:57:11 -03:00
khubo
d9196f997f change output flag to dir flag 2021-10-20 08:38:06 +05:30
TATSUNO Yasuhiro
b8a2c3899e Use a same term as in command 2021-10-20 10:54:14 +09:00
Spyros Roum
7b758c0ffb Remove author's names from help message 2021-10-19 19:56:52 +03:00
Spyros Roum
7fb4398c04 Remove redundant code 2021-10-19 19:56:27 +03:00
TATSUNO Yasuhiro
2e6cd893dc
Omit "./" at the start of the path (#109) 2021-10-19 12:57:11 -03:00
Spyros Roum
e24c9ce931 Replace oof with clap 2021-10-19 14:42:07 +03:00
João Marcos Bezerra
9d7c8a9abb
Merge pull request #100 from figsoda/cleanup
Minor cleanups and refactors
2021-10-18 02:01:02 -03:00
figsoda
2feefb3ca3 minor cleanups 2021-10-17 18:02:32 -04:00
Dominik Nakamura
06af320595
Add support for short tar archive extensions 2021-10-18 00:42:35 +09:00
João Marcos Bezerra
2c5a57c01c
Merge pull request #91 from SpyrosRoum/properly-compress-partially-compressed-files
Properly detect if we are compressing a partially compressed file
2021-10-15 11:38:02 -03:00
João Marcos Bezerra
55466a314e
Merge pull request #99 from SpyrosRoum/Add-proper-error-for-conflicted-flags
Add proper error handling for conflicting flags
2021-10-15 11:26:44 -03:00
João Marcos Bezerra
d33dd7f445
Merge branch 'master' into Improve-FinalError 2021-10-15 11:23:25 -03:00
Spyros Roum
16ee513906 Replace todo! with an actual error 2021-10-15 17:21:35 +03:00
Spyros Roum
c44cdf1013 Enable nightly for unstable fmt feature and run cargo fmt 2021-10-15 17:11:44 +03:00
João M. Bezerra
15c54a615d Renaming NO_COLOR_IS_SET to DISABLE_COLORED_TEXT 2021-10-15 09:35:07 -03:00
Spyros Roum
702e7622db Run cargo fmt removing redundant braces 2021-10-15 14:49:05 +03:00
Spyros Roum
d852a5897c Change FinalError builder pattern to take and give ownership of self
This means that when you do `let e = FinalError::with_title("Foo").detail("Blah");`, `e` will be of type `FinalError` instead of `&mut FinalError`, thus you don't have to call `clone()` on it
2021-10-15 14:20:49 +03:00
João M. Bezerra
05f82d3aee Adding unwrap safety for file_name 2021-10-15 05:45:56 -03:00
figsoda
161b8d0d66 refactor: better NO_COLOR support 2021-10-14 21:27:11 -04:00
Spyros Roum
baf23fa685 Use represents_several_files instead of checking len of files 2021-10-15 02:45:07 +03:00
Spyros Roum
aa65743e4e Add some info! for the user 2021-10-15 02:44:34 +03:00
Spyros Roum
123ccddd91 Move the check to run function 2021-10-15 02:44:15 +03:00
figsoda
69e5e3291c
Fix single file decompression with specified output directory (#93) 2021-10-14 20:00:40 -03:00
Spyros Roum
9907ebcf36 Properly detect if we are compressing a partially compressed file 2021-10-15 00:33:17 +03:00
João Marcos Bezerra
c89c34a91f
Fix single format compression (#89)
Now working for formats that are not archives, like file.gz and file.xz
2021-10-14 18:17:52 -03:00
Santo Cariotti
1c24f41494
chore: print format type instead of index (#84)
When it raises an error caused by position of the format, now prints
the format type as string instead of the position inside the array of
formats.
In this way you can read on stdout the type like `.tar` or `.lz` instead
of `1`, `2`, .., `n`.
2021-10-14 17:18:46 -03:00
figsoda
f923423a06
Extension: add support for tgz (#85)
* extension: add support for tgz
2021-10-14 16:55:34 -03:00
figsoda
cd461fa5a5
apply clippy lints and small refactors (#86) 2021-10-14 16:22:48 -03:00
Vinícius Miguel
14961bed65
Check if a folder is being compressed to a non-archive format (#79) 2021-10-07 17:09:33 -03:00
Vinícius Rodrigues Miguel
a739b5a482 Re-add "Compressing" output to Tar and make Tar and Zip compression use the info macro 2021-10-07 11:36:54 -03:00
Vinícius Rodrigues Miguel
d4862e2b6f test: check the resulting compressed files through MIME types 2021-10-06 23:54:20 -03:00
Vinícius Rodrigues Miguel
89271d465f extension: fix .bz2 being inferred to Gzip 2021-10-06 23:53:34 -03:00
Vinícius Rodrigues Miguel
a6eaef1220 commands: replace usage of "bundle" by "archive" 2021-10-06 22:37:36 -03:00
Vinícius Rodrigues Miguel
b093277a85 Refactor FinalError::display_and_crash into Error::Custom 2021-10-06 16:23:19 -03:00
Vinícius Rodrigues Miguel
40410840c9 error: add MissingArgumentsForDecompression 2021-10-06 15:55:13 -03:00
Vinícius Rodrigues Miguel
990458b771 Release 0.2.0 2021-10-06 15:39:55 -03:00
Vinícius Miguel
a8beaaae84
Merge pull request #65 from ouch-org/buffers-capacity-improvement
Increasing read and writer buffers capacity
2021-10-06 01:07:28 -03:00
João M. Bezerra
5b54bf85ee Increasing read and writer buffers capacity
By changing from 8KB to 64KB we will be making 8 times less syscalls
2021-10-06 00:56:39 -03:00
Vinícius Rodrigues Miguel
e9bc65a787 Add support for Zstd 2021-10-05 23:56:09 -03:00
João M. Bezerra
3f718b8335 Simplify tests by making gen_args more generic 2021-10-05 22:21:11 -03:00
João Marcos Bezerra
4ddc21a551
Merge pull request #61 from GabrielSimonetto/issue-48
Make the "decompress" command explicit
2021-10-05 22:10:27 -03:00
Gabriel Simonetto
788809b8f3 Make decompress command explicit
- No subcommand given now calls the help menu
- Also added docs for the short version of compress and decompress
2021-10-05 22:06:18 -03:00
Vinícius Rodrigues Miguel
e7dd6f2d4f Don't use colors when stdout or stderr are being redirected 2021-10-05 21:12:15 -03:00
João M. Bezerra
f7139548f6 Switch from BTree to Hash collections 2021-10-05 18:10:28 -03:00
João M. Bezerra
2f5083278f Add libc dependency
Cross compatible (with windows) exit failure code
2021-10-03 00:20:12 -03:00
João M. Bezerra
89d1e6a752 Document modules 2021-10-03 00:17:57 -03:00
Gabriel Simonetto
e352f8bc93 Allow empty dirs on tar 2021-10-02 17:33:16 -03:00
Gabriel Simonetto
0c65fbd2d4 Allow empty dirs on zip 2021-10-02 17:14:16 -03:00
Vinícius Rodrigues Miguel
df062f4155 zip: optimize UTF-8 checks on Unix, remove unneeded Clone 2021-10-01 19:13:43 -03:00
Vinícius Rodrigues Miguel
17d8959a0f unix: if setting permission fails, return an error instead of panicking 2021-10-01 12:00:52 -03:00
Vinícius Rodrigues Miguel
8fc2f06ef7 error: remove unused error variants 2021-10-01 11:46:20 -03:00
Vinícius Rodrigues Miguel
6085807ddf cd_into_same_dir_as: allow the proper IO error to bubble up and add docs 2021-09-17 11:54:55 -03:00
Vinícius Rodrigues Miguel
8565e475c3 Rework FinalError::display into a FinalError::Display impl 2021-09-17 11:49:46 -03:00
Vinícius Rodrigues Miguel
130288beb4 dialogs: use Cow<str> to avoid cloning a String 2021-09-17 09:33:19 -03:00
Vinícius Rodrigues Miguel
a0f43b62f7 Release 0.1.6 2021-09-17 00:55:58 -03:00
Vinícius Rodrigues Miguel
b099e4ac20 Respect the NO_COLOR env. arg. 2021-09-17 00:55:38 -03:00
Vinícius Rodrigues Miguel
55aa65dcea Reduced repetition caused by [INFO] printing 2021-09-17 00:22:41 -03:00
Vinícius Rodrigues Miguel
c4a4792816 Misc cleanup 2021-09-16 23:14:00 -03:00
Vinícius Rodrigues Miguel
eabaac0145 Run rustfmt 2021-09-16 21:35:18 -03:00
João M. Bezerra
c9d4eea403 Minor renaming 2021-08-13 02:14:28 -03:00
João M. Bezerra
8f7f812e87 Removing unused macros 2021-08-04 12:41:32 -03:00
João M. Bezerra
33382d06c3 Adding more checks before compression 2021-08-04 12:05:41 -03:00
João M. Bezerra
bb93e46535 Reworked compression
Now works with multiple formats, like
archive.zip.gz.lz.gz.gz2.xz

Now with minimum in-memory copying, compressing and decompressing (with
exception to .zip, due to the format limitations) is all done directly
into the final destination file.
2021-08-03 21:18:22 -03:00
João M. Bezerra
b969bda5a8 Added check for missing formats when decompressing 2021-08-03 19:12:22 -03:00
João M. Bezerra
ac4948abf7 Decompression: multiple formats, no extra copying
Rewrote decompression to use chained decoders, creating a stream and
avoiding in-memory decompression, which caused redundant copying.

Now ouch supports any number of extensions as decompressing formats, not
only two.
2021-08-03 16:58:21 -03:00
Vinícius Rodrigues Miguel
a9673a3eba Reuse Confirmation struct when checking for overwrite permission 2021-07-25 01:23:58 -03:00
Fabricio Dematte
dd6718bd3b chore: remove comments 2021-06-10 13:01:45 -03:00
João M. Bezerra
8eb973d470 Fixing --output flag missing in tests 2021-06-02 03:31:30 -03:00
Fabricio Dematte
38c88c1df2 more ouch cli testing 2021-05-31 08:22:10 -03:00
Fabricio Dematte
09e9036301 attempt to assert 2021-05-31 08:00:03 -03:00
João M. Bezerra
51a88bebba Adding FinalError, using in crate::Error Display
Helps us add nice and consistently formatted error messages
2021-05-28 16:53:18 -03:00
João M. Bezerra
8707328944 Temporarly disabling platform-dependent test 2021-05-28 05:14:51 -03:00
João M. Bezerra
bf8ef70d16 Fixing Oof and Walkdir Error Display 2021-05-28 04:34:06 -03:00
João M. Bezerra
d1734b54cb Eliding some lifetimes 2021-05-28 03:14:03 -03:00
João M. Bezerra
f51a5c8727 Moving cli input .canonicalize to help testing
We are moving canonicalize_files step
    from parse_args_from
    to parse_args

This helps testing our CLI without panicking when files don't exist
2021-05-28 03:07:25 -03:00
João M. Bezerra
cd43f215ea Replace io::Error by reason: String - crate::Error
By removing io::Error from crate::Error, we can implement PartialEq in
the enum to make testing easier.
2021-05-28 02:15:12 -03:00
João M. Bezerra
57a3d231eb Turning oof subcrate into a module 2021-05-26 21:54:50 -03:00
João M. Bezerra
f203b80eb8 Fixing ouch OofError convertion 2021-05-19 12:28:49 -03:00
João M. Bezerra
d01947d9e1 Adding rustfmt.toml and reformatting 2021-05-16 17:52:29 -03:00
João M. Bezerra
3dc9a78539 Removing src/test.rs 2021-05-15 01:15:19 -03:00
João M. Bezerra
de28e573d8 Fix error message typo 2021-05-15 01:14:22 -03:00
João M. Bezerra
864fc1a29b decompression: panic if there are no arguments 2021-05-15 01:12:03 -03:00
Vinícius Miguel
2ba91644e8 commands: remove two unnecessary clones 2021-04-09 12:05:49 -03:00
Vinícius Miguel
3cb0bfa1e5 cli: refactor path canonicalizing logic 2021-04-09 02:05:31 -03:00
Vinícius Miguel
38e7009a27 cli: add an alias for the compress subcommand 2021-04-08 22:46:47 -03:00
Vinícius Miguel
b614533fd5 utils: fix usage of the -n, --no flag 2021-04-08 22:31:10 -03:00
Vinícius Miguel
c94b49f013 cli: Only suggest the typo correction and exit 2021-04-08 12:48:52 -03:00
Vinícius Miguel
5ca99c101e oof: remove unnecessary closures (((and undo last commit))) 2021-04-08 03:03:07 -03:00
Vinícius Miguel
e7eb55a4cf test: make_dummy_files: return an error instead of panicking 2021-04-08 02:55:34 -03:00
Vinícius Miguel
2f6ac5e54c error: Save std::io::Error as a crate::Error variant 2021-04-08 00:26:02 -03:00
Vinícius Miguel
faae7c088f oof: add error variant MissingValueToFlag 2021-04-07 23:28:37 -03:00
Vinícius Miguel
d9b39706e2 Drop dependency on Termion 2021-04-07 02:23:50 -03:00
Vinícius Miguel
0026e4d4de Drop dependency on Colored 2021-04-07 02:02:50 -03:00
Vinícius Miguel
8a4ac5d6d1 cli: Check for typos on ouch compress 2021-04-07 00:26:53 -03:00
João M. Bezerra
e1c72a6a6b Removing unused cli::CommandInfo 2021-04-06 23:36:44 -03:00
João M. Bezerra
3ac28b8d5c Fixing Windows build warnings 2021-04-06 23:16:39 -03:00
João M. Bezerra
bb004dc78c Fixing Windows build: no termion support 2021-04-06 23:12:40 -03:00
João M. Bezerra
df1bc879cb New --help message 2021-04-06 22:52:41 -03:00
João M. Bezerra
973af5fe1c Change evaluator.rs to commands.rs 2021-04-06 21:18:56 -03:00
João M. Bezerra
3869c2502e Moving bytes.rs implementation to utils.rs 2021-04-06 21:16:33 -03:00
Vinícius Miguel
20bcf1ecde evaluator: Fix an error message 2021-04-06 20:36:47 -03:00
João M. Bezerra
aa03d2723e Separate lib from binary
Makes integration testing easier
2021-04-06 20:22:56 -03:00
João M. Bezerra
78d5f435ee Minor style changes 2021-04-06 20:14:33 -03:00
João M. Bezerra
575abeb454 Testing bytes formatting 2021-04-06 20:12:51 -03:00
Vinícius Miguel
784217143a Better error message for MissingArgumentsForDecompression 2021-04-06 19:05:36 -03:00
Vinícius Miguel
8c88d5cb0f evaluator: Accept the other compression formats as 'first compressors' 2021-04-06 19:01:44 -03:00
Vinícius Miguel
249e9959fc Fix failing test 2021-04-06 12:51:53 -03:00
Vinícius Miguel
5b70940596 Fix cargo test 2021-04-06 04:44:08 -03:00
Vinícius Miguel
f9272b5ce5 evaluator: Verify if input files are decompressible 2021-04-06 04:30:36 -03:00
Vinícius Miguel
9b8dcb40fa cli: Canonicalize input files when decompressing 2021-04-06 04:12:00 -03:00
Vinícius Miguel
095ade6621 Code cleanup 2021-04-06 03:37:49 -03:00
Vinícius R. Miguel
42b139f1a5 Add tests for byte pretty-printing 2021-04-06 03:08:44 -03:00
Vinícius R. Miguel
1b9faab96a refactor: pretty-print bytes 2021-04-06 02:49:03 -03:00
Vinícius R. Miguel
368a776b70 Add Bytes and impl Display for Bytes 2021-04-06 02:34:27 -03:00