526 Commits

Author SHA1 Message Date
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
Vinícius Rodrigues Miguel
1c5005f5a9 Adapt the Python test script to the new Ouch interface 2021-04-05 20:57:18 -03:00
Vinícius Rodrigues Miguel
011626f09b (WIP) Minor misc. changes 2021-04-05 02:57:46 -03:00
Vinícius Rodrigues Miguel
d2af261f67 Fix cargo test tests 2021-04-05 01:14:27 -03:00
João M. Bezerra
28901ec44e Binary size decreased by 35% (-400KB)
Huge refactor, removed totally `clap` to use our argparsing instead.
500+ modified.
2021-04-04 23:26:57 -03:00
João M. Bezerra
b45f38f5fa Add utils::to_utf 2021-04-04 23:18:25 -03:00
João M. Bezerra
0c9131c307 Start replacing clap with oof 2021-04-04 23:13:03 -03:00
João M. Bezerra
5b37a117f1 Clippy lints 2021-04-04 01:58:22 -03:00
Vinícius Rodrigues Miguel
b002de78d9 Show better error messages 2021-03-30 00:11:46 -03:00
Vinícius Rodrigues Miguel
2dc828c0ff (WIP) Showing better error messages 2021-03-29 23:11:22 -03:00
Vinícius R. Miguel
a96d26eba6 Bump to version 0.1.4 2021-03-29 02:58:16 -03:00
Vinícius R. Miguel
cb10a45661 Use the -y and -n flags when decompressing single-file compression formats 2021-03-29 02:44:29 -03:00
Vinícius Rodrigues Miguel
1c0e883d99 dialogs: Remove duplicated to_ascii_lowercase 2021-03-29 02:00:47 -03:00
Vinícius Rodrigues Miguel
5ac3540145 Use the -y and -n flags when compressing to a file that already exists 2021-03-29 01:52:52 -03:00
Vinícius Rodrigues Miguel
0f0b086943 Use the the -y and -n flags when decompressing .tar and .zip 2021-03-29 01:37:01 -03:00
Vinícius R. Miguel
c7cf1112b6 Add -y, --yes and -n, --no flags (currently unused) 2021-03-28 23:50:28 -03:00
Vinícius Rodrigues Miguel
40fb926d80 evaluator: Add confirmation dialog for file overwriting 2021-03-28 14:52:09 -03:00
Vinícius Rodrigues Miguel
03d6fc1e60 decompressors/tar: Add confirmation dialog for file overwriting 2021-03-28 14:28:07 -03:00
Vinícius Rodrigues Miguel
7954eb07fd decompressors/zip: Add confirmation dialog for file overwriting 2021-03-28 13:56:00 -03:00
Vinícius Rodrigues Miguel
91f411439a rustfmt 2021-03-27 01:34:43 -03:00
Vinícius Rodrigues Miguel
234e0406a1 Don't allow ouch to compress the root folder 2021-03-27 00:37:47 -03:00
Vinícius Rodrigues Miguel
49e4c4afcd compressors/zip: replace a couple of unwraps to the question mark op. 2021-03-26 23:47:42 -03:00
Vinícius Rodrigues Miguel
8e37078043 zip: ensure usage of relational paths during compression 2021-03-26 22:56:57 -03:00
Vinícius Rodrigues Miguel
19f12ff791 Ensure correct permissions for decompressed files from .zip on Unix 2021-03-26 22:39:23 -03:00
Vinícius Rodrigues Miguel
96a4e8bb78 Bump version to 0.1.3 2021-03-26 21:32:54 -03:00
João M. Bezerra
41a81b75a6 Simplyfying tests 2021-03-26 14:24:24 -03:00
Vinícius Rodrigues Miguel
36db7d721d Fix tests 2021-03-26 14:11:13 -03:00
João M. Bezerra
dd9b6dd65f Renaming tomemory.rs to to_memory.rs 2021-03-26 14:03:36 -03:00
João M. Bezerra
ce26246fd4 Changing the error imports 2021-03-26 14:03:06 -03:00
Vinícius Rodrigues Miguel
71be492cd4 Fix CLI tests 2021-03-25 23:33:27 -03:00
Vinícius Rodrigues Miguel
d99d8e71d3 Add a sad Python script for Ouch testing 2021-03-25 22:47:34 -03:00
Vinícius Rodrigues Miguel
ceb507fd14 main: Make ouch return 1 upon failure 2021-03-25 21:43:45 -03:00
João M. Bezerra
755cc2a40d Refactoring and Clippy warnings 2021-03-25 20:50:42 -03:00
Vinícius Rodrigues Miguel
965041310c Make ouch support paths with dot-dot (..) for input files/directories 2021-03-25 03:20:20 -03:00
Vinícius Rodrigues Miguel
9ea18659e5 Update README, slightly reduce code repetition 2021-03-24 18:35:01 -03:00
Vinícius Rodrigues Miguel
6eee06a51a Bump app version 2021-03-24 17:51:59 -03:00
Vinícius Rodrigues Miguel
0b346eee3d Fixes Gzip and Lzma compression 2021-03-24 17:40:38 -03:00
Vinícius Rodrigues Miguel
f3dd4d9804 Progress in Lzma compression 2021-03-24 17:21:00 -03:00
Vinícius Rodrigues Miguel
3fa939ac90 Add support for Gzip compression (includes .tar.gz) 2021-03-24 17:03:49 -03:00
Vinícius Rodrigues Miguel
bdc16fdb17 Add support for Bzip compression (includes .tar.bz2 and .zip.bz2 and etc) 2021-03-24 14:33:43 -03:00
Vinícius Rodrigues Miguel
433f8b05b0 Simplify Lzma decompression logic 2021-03-24 12:56:12 -03:00
Vinícius Rodrigues Miguel
729dda819e Add support for Lzma decompression 2021-03-24 01:40:16 -03:00
Vinícius Rodrigues Miguel
f8ca0e3c56 Turns out LZMA decompression is not working 2021-03-23 23:17:48 -03:00
Vinícius Rodrigues Miguel
22e131fb46 Add support for zip (and... .zip.zip) compression 2021-03-23 21:28:22 -03:00
Vinícius Rodrigues Miguel
d72ca9eeae Tar compression seemingly working 2021-03-23 03:10:25 -03:00
Vinícius Rodrigues Miguel
2c0f2b380c Add Tar compression for in-memory buffers 2021-03-23 02:15:06 -03:00
Vinícius Rodrigues Miguel
fa2fb675de WIP Tar compression 2021-03-23 01:06:57 -03:00
Vinícius Rodrigues Miguel
9429fd8d67 Fix CLI parsing of decompression commands & early Compressor work 2021-03-22 23:39:08 -03:00
Vinícius Rodrigues Miguel
52afe3afd8 Update README & minor code cleanup 2021-03-22 15:12:11 -03:00
Vinícius Rodrigues Miguel
e08703850c Add support for decompressing .tar.{bz, xz, lz} and .zip.{bz, xz, lz} 2021-03-22 04:46:54 -03:00
Vinícius Rodrigues Miguel
77d7613967 WIP refactor 2021-03-22 03:44:56 -03:00
Vinícius Rodrigues Miguel
90ad9d8f8a WIP decompression support for .xz, .bz, .lzma 2021-03-22 02:18:35 -03:00
Vinícius Rodrigues Miguel
6c7d24084f decompressors.tar: Add info messages 2021-03-21 21:42:13 -03:00
Vinícius Rodrigues Miguel
23c8f567fc Minor changes in decompressors/zip.rs 2021-03-21 19:18:32 -03:00
Vinícius Rodrigues Miguel
e705024c61 decompressors.zip: now working 2021-03-21 19:11:27 -03:00
Vinícius Rodrigues Miguel
0a81384dd8 (Small) Zip decompressor progress 2021-03-21 15:41:05 -03:00
Vinícius Rodrigues Miguel
837a6a6a57 Get Decompressors as Trait Objects, start working on Zip decompressor 2021-03-21 15:23:00 -03:00
Vinícius Rodrigues Miguel
8d36120690 refactor decompressors/tar.rs 2021-03-21 14:03:15 -03:00
Vinícius Rodrigues Miguel
d351a8ef7b decompressors.tar: now working! 2021-03-21 04:23:00 -03:00
Vinícius Rodrigues Miguel
b6d4e50cca Early progress in supporting .tar files 2021-03-21 04:09:28 -03:00
Vinícius Rodrigues Miguel
155fca4526 refactor: New File struct and switch to use Extension 2021-03-21 00:53:54 -03:00
Vinícius Rodrigues Miguel
7fd6020d99 Add struct Extension 2021-03-20 18:58:26 -03:00
Vinícius Rodrigues Miguel
73398c2d50 tests: Add tests for extension extraction 2021-03-19 15:18:32 -03:00
Vinícius Rodrigues Miguel
e04aba8d53 cli: More tests 2021-03-19 13:20:22 -03:00
Vinícius Rodrigues Miguel
65bc13e8fa tests: Start adding test for the command-line interface 2021-03-19 12:40:49 -03:00
Vinícius Rodrigues Miguel
39abfdffde typo: Compressable -> Compressible 2021-03-19 11:41:38 -03:00
Vinícius Rodrigues Miguel
a47f41a257 typo: Decompressable -> Decompressible 2021-03-19 11:40:17 -03:00
Vinícius Rodrigues Miguel
08489b028c First commit 2021-03-19 04:40:19 -03:00