diff --git a/CHANGELOG.md b/CHANGELOG.md index 0a9799c..7f8898a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ Dates are given in YYYY-MM-DD format. ### v0.3.1 (2021-xx-yy) #### Features - Added JSON output support via `-o json` +- Added plaintext output support via `-o text` #### Other - `videos` is now an alias for `video` - More extensive README documentation diff --git a/Cargo.lock b/Cargo.lock index 25f1811..bc60760 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -116,9 +116,9 @@ dependencies = [ [[package]] name = "crossbeam-epoch" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52fb27eab85b17fbb9f6fd667089e07d6a2eb8743d02639ee7f6a7a7729c9c94" +checksum = "4ec02e091aa634e2c3ada4a392989e7c3116673ef0ac5b72232439094d73b7fd" dependencies = [ "cfg-if", "crossbeam-utils", @@ -129,11 +129,10 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.4" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4feb231f0d4d6af81aed15928e58ecf5816aa62a2393e2c82f46973e92a9a278" +checksum = "d82cfc11ce7f2c3faef78d8a684447b40d503d9681acebed6cb728d45940c4db" dependencies = [ - "autocfg", "cfg-if", "lazy_static", ] @@ -209,9 +208,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9495705279e7140bf035dde1f6e750c162df8b625267cd52cc44e0b156732c8" +checksum = "7fcd999463524c52659517fe2cea98493cfe485d10565e7b0fb07dbba7ad2753" dependencies = [ "cfg-if", "libc", @@ -232,9 +231,9 @@ checksum = "d7afe4a420e3fe79967a00898cc1f4db7c8a49a9333a29f8a4bd76a253d5cd04" [[package]] name = "heck" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87cbf45460356b7deeb5e3415b5563308c0a9b057c85e12b06ad551f98d0a6ac" +checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" dependencies = [ "unicode-segmentation", ] @@ -260,9 +259,9 @@ dependencies = [ [[package]] name = "infer" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f92b41dab759f9e8427c03f519c344a14655490b8db548dac1e57a75b3258391" +checksum = "ea70330449622910e0edebab230734569516269fb32342fb0a8956340fa48c6c" dependencies = [ "cfb", ] @@ -303,9 +302,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.94" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18794a8ad5b29321f790b55d93dfba91e125cb1a9edbd4f8e3150acc771c1a5e" +checksum = "789da6d93f1b866ffe175afc5322a4d76c038605a1c3319bb57b06967ca98a36" [[package]] name = "log" @@ -324,9 +323,9 @@ checksum = "b16bd47d9e329435e309c58469fe0791c2d0d1ba96ec0954152a5ae2b04387dc" [[package]] name = "memoffset" -version = "0.6.3" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f83fb6581e8ed1f85fd45c116db8405483899489e38406156c25eb743554361d" +checksum = "59accc507f1338036a0477ef61afdae33cde60840f4dfe481319ce3ad116ddf9" dependencies = [ "autocfg", ] @@ -412,9 +411,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.26" +version = "1.0.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a152013215dca273577e18d2bf00fa862b89b24169fb78c4c95aeb07992c9cec" +checksum = "f0d8caf72986c1a598726adc988bb5984792ef84f5ee5aa50209145ee8077038" dependencies = [ "unicode-xid", ] @@ -470,9 +469,9 @@ dependencies = [ [[package]] name = "rayon" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b0d8e0819fadc20c74ea8373106ead0600e3a67ef1fe8da56e39b9ae7275674" +checksum = "c06aca804d41dbc8ba42dfd964f0d01334eceb64314b9ecf7c5fad5188a06d90" dependencies = [ "autocfg", "crossbeam-deque", @@ -482,9 +481,9 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.9.0" +version = "1.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ab346ac5921dc62ffa9f89b7a773907511cdfa5490c572ae9be1be33e8afa4a" +checksum = "d78120e2c850279833f1dd3582f730c4ab53ed95aeaaaa862a2a5c71b1656d8e" dependencies = [ "crossbeam-channel", "crossbeam-deque", @@ -544,18 +543,18 @@ checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" [[package]] name = "serde" -version = "1.0.125" +version = "1.0.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "558dc50e1a5a5fa7112ca2ce4effcb321b0300c0d4ccf0776a9f60cd89031171" +checksum = "ec7505abeacaec74ae4778d9d9328fe5a5d04253220a85c4ee022239fc996d03" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.125" +version = "1.0.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b093b7a2bb58203b5da3056c05b4ec1fed827dcfdb37347a8841695263b3d06d" +checksum = "963a7dbc9895aeac7ac90e74f34a5d5261828f79df35cbed41e10189d3804d43" dependencies = [ "proc-macro2", "quote", @@ -634,9 +633,9 @@ dependencies = [ [[package]] name = "terminal_size" -version = "0.1.16" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86ca8ced750734db02076f44132d802af0b33b09942331f4459dde8636fd2406" +checksum = "633c1a546cee861a1a6d0dc69ebeca693bf4296661ba7852b9d21d159e0506df" dependencies = [ "libc", "winapi", @@ -654,18 +653,18 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.24" +version = "1.0.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0f4a65597094d4483ddaed134f409b2cb7c1beccf25201a9f73c719254fa98e" +checksum = "fa6f76457f59514c7eeb4e59d891395fab0b2fd1d40723ae737d64153392e9c6" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.24" +version = "1.0.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7765189610d8241a44529806d6fd1f2e0a08734313a35d5b3a556f92b381f3c0" +checksum = "8a36768c0fbf1bb15eca10defa29526bda730a2376c2ab4393ccfa16fb1a318d" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index e628e35..26c151b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -39,11 +39,11 @@ serde_json = { version = "1.0", optional = true } [target.'cfg(not(unix))'.dependencies] xdg-mime = { version = "0.3.3", optional = true } -infer = "0.4.0" +infer = "0.5.0" [target.'cfg(unix)'.dependencies] xdg-mime = "0.3.3" -infer = { version = "0.4.0", optional = true} +infer = { version = "0.5.0", optional = true } [target.'cfg(not(all(target_endian = "big", target_pointer_width = "32")))'.dependencies] smartstring = "0.2.6" diff --git a/src/formats.rs b/src/formats.rs index a9438b6..b7d6bd5 100644 --- a/src/formats.rs +++ b/src/formats.rs @@ -282,6 +282,37 @@ impl Format for PowerShell { } } +pub struct Text; +impl Format for Text { + fn new() -> Self { Self {} } + fn rename(&self, f: &mut W, from: &Path, to: &Path) -> io::Result<()> { + smart_write(f, writablesln![from, " should be renamed to ", to]) + } + + fn no_known_extension(&self, f: &mut W, path: &Path) -> io::Result<()> { + smart_write(f, writablesln!["No known extension for ", path]) + } + + fn unreadable(&self, f: &mut W, path: &Path) -> io::Result<()> { + smart_write(f, writablesln!["Encountered IO error while accessing ", path]) + } + + fn unknown_type(&self, f: &mut W, path: &Path) -> io::Result<()> { + smart_write(f, writablesln!["Couldn't determine type for ", path]) + } + + fn header(&self, f: &mut W, _entries: &Entries) -> io::Result<()> { + smart_write(f, writablesln![(generated_by().as_str()), Newline]) + } + + fn footer(&self, f: &mut W, entries: &Entries) -> io::Result<()> { + smart_write( + f, + writablesln![Newline, "Processed ", (entries.len().to_string().as_str()), " files"], + ) + } +} + #[cfg(feature = "json")] pub struct Json; diff --git a/src/inspectors.rs b/src/inspectors.rs index e061d6d..d6c3632 100644 --- a/src/inspectors.rs +++ b/src/inspectors.rs @@ -108,7 +108,7 @@ cached! { // to have valid extensions. // TODO: if a file is detected as application/xml, but it has an extension like "xht" which corresponds to // "application/xhtml+xml", let it through - in other words, if it's identified as application/xml, but its - // extension is classes as application/*+xml, consider it OK + // extension is classed as application/*+xml, consider it OK [vec![String::from("xml"), String::from("svg")], possible_exts].concat() } else if essence == "application/msword" { diff --git a/src/main.rs b/src/main.rs index 4434d2d..2c055fc 100644 --- a/src/main.rs +++ b/src/main.rs @@ -144,7 +144,7 @@ fn main() { OutputFormat::PowerShell => PowerShell::new().write_all(&mut buffered_stdout, &results), #[cfg(feature = "json")] OutputFormat::Json => formats::Json::new().write_all(&mut buffered_stdout, &results), - OutputFormat::Text => todo!(), + OutputFormat::Text => formats::Text::new().write_all(&mut buffered_stdout, &results), }; if result.is_err() {