ietf

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

commit 42b3263a1cd66804dd6a54f5dcffbe3ce917ab61
parent adf027ea362b90e05c5340f8f0fe30f241deb2f7
Author: cy6erlion <dev@merely.tech>
Date:   Tue, 12 Jan 2021 12:27:12 +0200

remove unecisarry code

Diffstat:
MCargo.lock | 288++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
MCargo.toml | 8++++++--
Asrc/#search.rs# | 66++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asrc/search.rs | 65+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Msrc/storage.rs | 18------------------
5 files changed, 424 insertions(+), 21 deletions(-)

diff --git a/Cargo.lock b/Cargo.lock @@ -1,6 +1,15 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. [[package]] +name = "aho-corasick" +version = "0.7.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7404febffaa47dac81aa44dba71523c9d069b1bdc50a77db41195149e17f68e5" +dependencies = [ + "memchr", +] + +[[package]] name = "ansi_term" version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -30,18 +39,41 @@ dependencies = [ ] [[package]] +name = "base64" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" + +[[package]] name = "bitflags" version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" [[package]] +name = "bstr" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "473fc6b38233f9af7baa94fb5852dca389e3d95b8e21c8e3719301462c5d9faf" +dependencies = [ + "lazy_static", + "memchr", + "regex-automata", +] + +[[package]] name = "bumpalo" version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2e8c087f005730276d1096a652e92a8bacee2e2472bcc9715a74d2bec38b5820" [[package]] +name = "bytecount" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72feb31ffc86498dacdbd0fcebb56138e7177a8cc5cea4516031d15ae85a742e" + +[[package]] name = "byteorder" version = "1.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -102,6 +134,24 @@ dependencies = [ ] [[package]] +name = "encoding_rs" +version = "0.8.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "801bbab217d7f79c0062f4f7205b5d4427c6d1a7bd7aafdd1475f7c59d62b283" +dependencies = [ + "cfg-if 1.0.0", +] + +[[package]] +name = "encoding_rs_io" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cc3c5651fb62ab8aa3103998dade57efdd028544bd300516baa31840c252a83" +dependencies = [ + "encoding_rs", +] + +[[package]] name = "errno" version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -123,6 +173,12 @@ dependencies = [ ] [[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] name = "gcc" version = "0.3.55" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -140,6 +196,104 @@ dependencies = [ ] [[package]] +name = "globset" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c152169ef1e421390738366d2f796655fec62621dabbd0fd476f905934061e4a" +dependencies = [ + "aho-corasick", + "bstr", + "fnv", + "log", + "regex", +] + +[[package]] +name = "grep" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "582e93ba59eae0f9607f53832326f351f87a5175f17ff123b3986b927a0e7e68" +dependencies = [ + "grep-cli", + "grep-matcher", + "grep-printer", + "grep-regex", + "grep-searcher", +] + +[[package]] +name = "grep-cli" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3592784f7791f5f0bfc2e4b5595dc2d4e34a79099d7228d121b954bae73db182" +dependencies = [ + "atty", + "bstr", + "globset", + "lazy_static", + "log", + "regex", + "same-file", + "termcolor", + "winapi-util", +] + +[[package]] +name = "grep-matcher" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdf0e1fd5af17008a918fd868e63ec0226e96ce88b832f00c7fb041e014b9350" +dependencies = [ + "memchr", +] + +[[package]] +name = "grep-printer" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f34d40c840fe8e413a94598345d8a4bb25fdbb4f3860a6c00a88bb296d89d00" +dependencies = [ + "base64 0.12.3", + "bstr", + "grep-matcher", + "grep-searcher", + "serde", + "serde_derive", + "serde_json", + "termcolor", +] + +[[package]] +name = "grep-regex" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7ba5e492a049950acbd60f5d183011fdca66c248663f6b4e118d591eeada3d2" +dependencies = [ + "aho-corasick", + "bstr", + "grep-matcher", + "log", + "regex", + "regex-syntax", + "thread_local", +] + +[[package]] +name = "grep-searcher" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19897320890970db77fb9e8110aeafdf5a74f4ee32756db16d44a96d8f454b1b" +dependencies = [ + "bstr", + "bytecount", + "encoding_rs", + "encoding_rs_io", + "grep-matcher", + "log", + "memmap", +] + +[[package]] name = "hermit-abi" version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -154,11 +308,19 @@ version = "0.1.0" dependencies = [ "clap", "dirs-next", + "grep", "minreq", "pager", + "walkdir", ] [[package]] +name = "itoa" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd25036021b0de88a0aff6b850051563c6516d0bf53f8638938edbb9de732736" + +[[package]] name = "js-sys" version = "0.3.46" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -189,6 +351,22 @@ dependencies = [ ] [[package]] +name = "memchr" +version = "2.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ee1c47aaa256ecabcaea351eae4a9b01ef39ed810004e298d2511ed284b1525" + +[[package]] +name = "memmap" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6585fd95e7bb50d6cc31e20d4cf9afb4e2ba16c5846fc76793f11218da9c475b" +dependencies = [ + "libc", + "winapi", +] + +[[package]] name = "minreq" version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -251,6 +429,33 @@ dependencies = [ ] [[package]] +name = "regex" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38cf2c13ed4745de91a5eb834e11c00bcc3709e773173b2ce4c56c9fbde04b9c" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", + "thread_local", +] + +[[package]] +name = "regex-automata" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae1ded71d66a4a97f5e961fd0cb25a5f366a42a41570d16a763a69c092c26ae4" +dependencies = [ + "byteorder", +] + +[[package]] +name = "regex-syntax" +version = "0.6.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b181ba2dcf07aaccad5448e8ead58db5b742cf85dfe035e2227f137a539a189" + +[[package]] name = "ring" version = "0.16.19" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -271,7 +476,7 @@ version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b25a18b1bf7387f0145e7f8324e700805aade3842dd3db2e74e4cdeb4677c09e" dependencies = [ - "base64", + "base64 0.10.1", "log", "ring", "sct", @@ -279,6 +484,21 @@ dependencies = [ ] [[package]] +name = "ryu" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e" + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] name = "sct" version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -289,6 +509,34 @@ dependencies = [ ] [[package]] +name = "serde" +version = "1.0.118" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06c64263859d87aa2eb554587e2d23183398d617427327cf2b3d0ed8c69e4800" + +[[package]] +name = "serde_derive" +version = "1.0.118" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c84d3526699cd55261af4b941e4e725444df67aa4f9e6a3564f18030d12672df" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.61" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fceb2595057b6891a4ee808f70054bd2d12f0e97f1cbb78689b59f676df325a" +dependencies = [ + "itoa", + "ryu", + "serde", +] + +[[package]] name = "spin" version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -312,6 +560,15 @@ dependencies = [ ] [[package]] +name = "termcolor" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dfed899f0eb03f32ee8c6a0aabdb8a7949659e3466561fc0adf54e26d88c5f4" +dependencies = [ + "winapi-util", +] + +[[package]] name = "textwrap" version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -321,6 +578,15 @@ dependencies = [ ] [[package]] +name = "thread_local" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d40c6d1b69745a6ec6fb1ca717914848da4b44ae29d9b3080cbee91d72a69b14" +dependencies = [ + "lazy_static", +] + +[[package]] name = "unicode-width" version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -345,6 +611,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" [[package]] +name = "walkdir" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "777182bc735b6424e1a57516d35ed72cb8019d85c8c9bf536dccb3445c1a2f7d" +dependencies = [ + "same-file", + "winapi", + "winapi-util", +] + +[[package]] name = "wasi" version = "0.9.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -450,6 +727,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] +name = "winapi-util" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +dependencies = [ + "winapi", +] + +[[package]] name = "winapi-x86_64-pc-windows-gnu" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" diff --git a/Cargo.toml b/Cargo.toml @@ -23,4 +23,8 @@ minreq = {version = "2.2.1", features = ["https"]} # Pager pager = "0.16.0" # Directories -dirs-next = "2.0.0" -\ No newline at end of file +dirs-next = "2.0.0" +# ripgrep, as a library. +grep = "0.2" +# +walkdir = "2.3.1" +\ No newline at end of file diff --git a/src/#search.rs# b/src/#search.rs# @@ -0,0 +1,66 @@ +extern crate grep; +extern crate walkdir; + +use std::env; +use std::error::Error; +use std::ffi::OsString; +use std::process; +use std::io::prelude::*; + +use grep::cli; +use grep::printer::{ColorSpecs, StandardBuilder}; +use grep::regex::RegexMatcher; +use grep::searcher::{BinaryDetection, SearcherBuilder}; +use walkdir::WalkDir; + +fn main() { + if let Err(err) = try_main() { + eprintln!("{}", err); + process::exit(1); + } +} + +fn try_main() -> Result<(), Box<dyn Error>> { + let mut args: Vec<OsString> = env::args_os().collect(); + if args.len() < 2 { + return Err("Usage: simplegrep <pattern> [<path> ...]".into()); + } + if args.len() == 2 { + args.push(OsString::from("./")); + } + search(cli::pattern_from_os(&args[1])?, &args[2..]) +} + +fn search(pattern: &str, spath: OsString) -> Result<(), Box<dyn Error>> { + let matcher = RegexMatcher::new_line_matcher(&pattern)?; + let mut searcher = SearcherBuilder::new() + .binary_detection(BinaryDetection::quit(b'\x00')) + .line_number(false) + .build(); + let mut printer = StandardBuilder::new() + .color_specs(ColorSpecs::default_with_color()) + .build(cli::stdout(if cli::is_tty_stdout() { + ColorChoice::Auto + } else { + ColorChoice::Never + })); + + for result in WalkDir::new(spath) { + let dent = match result { + Ok(dent) => dent, + Err(err) => { + eprintln!("{}", err); + continue; + } + }; + if !dent.file_type().is_file() { + continue; + } + let result = searcher.search_path(&matcher, dent.path(), std::io::stdout); + if let Err(err) = result { + eprintln!("{}: {}", dent.path().display(), err); + } + } + + Ok(()) +} diff --git a/src/search.rs b/src/search.rs @@ -0,0 +1,65 @@ +extern crate grep; +extern crate walkdir; + +use std::env; +use std::error::Error; +use std::ffi::OsString; +use std::process; + +use grep::cli; +use grep::printer::{ColorSpecs, StandardBuilder}; +use grep::regex::RegexMatcher; +use grep::searcher::{BinaryDetection, SearcherBuilder}; +use walkdir::WalkDir; + +fn main() { + if let Err(err) = try_main() { + eprintln!("{}", err); + process::exit(1); + } +} + +fn try_main() -> Result<(), Box<dyn Error>> { + let mut args: Vec<OsString> = env::args_os().collect(); + if args.len() < 2 { + return Err("Usage: simplegrep <pattern> [<path> ...]".into()); + } + if args.len() == 2 { + args.push(OsString::from("./")); + } + search(cli::pattern_from_os(&args[1])?, &args[2..]) +} + +fn search(pattern: &str, spath: OsString) -> Result<(), Box<dyn Error>> { + let matcher = RegexMatcher::new_line_matcher(&pattern)?; + let mut searcher = SearcherBuilder::new() + .binary_detection(BinaryDetection::quit(b'\x00')) + .line_number(false) + .build(); + let mut printer = StandardBuilder::new() + .color_specs(ColorSpecs::default_with_color()) + .build(cli::stdout(if cli::is_tty_stdout() { + ColorChoice::Auto + } else { + ColorChoice::Never + })); + + for result in WalkDir::new(spath) { + let dent = match result { + Ok(dent) => dent, + Err(err) => { + eprintln!("{}", err); + continue; + } + }; + if !dent.file_type().is_file() { + continue; + } + let result = searcher.search_path(&matcher, dent.path(), std::io::stdout); + if let Err(err) = result { + eprintln!("{}: {}", dent.path().display(), err); + } + } + + Ok(()) +} diff --git a/src/storage.rs b/src/storage.rs @@ -123,22 +123,4 @@ impl Storage { std::fs::remove_dir_all(&self.rfc_dir_path).unwrap(); } } - - // Get path of home directory - // (`~/rfc/` on unix systems and `C:\Users\{NAME}` on windows) - pub fn get_home_path() -> Option<String> { - if let Some(home_path) = dirs_next::home_dir() { - let path = if cfg!(unix) || cfg!(macos) { - format!("{}/rfc/", home_path.to_str().unwrap()) - } else if cfg!(windows) { - format!("{}\\rfc\\", home_path.to_str().unwrap()) - } else { - panic!("Unsupported OS"); - }; - - Some(path) - } else { - None - } - } }