Add clap, relocate test blocklists
This commit is contained in:
parent
acda290c4b
commit
1091399fec
88
Cargo.lock
generated
88
Cargo.lock
generated
|
@ -60,6 +60,46 @@ dependencies = [
|
||||||
"windows-sys",
|
"windows-sys",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "clap"
|
||||||
|
version = "4.5.4"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "90bc066a67923782aa8515dbaea16946c5bcc5addbd668bb80af688e53e548a0"
|
||||||
|
dependencies = [
|
||||||
|
"clap_builder",
|
||||||
|
"clap_derive",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "clap_builder"
|
||||||
|
version = "4.5.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "ae129e2e766ae0ec03484e609954119f123cc1fe650337e155d03b022f24f7b4"
|
||||||
|
dependencies = [
|
||||||
|
"anstream",
|
||||||
|
"anstyle",
|
||||||
|
"clap_lex",
|
||||||
|
"strsim",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "clap_derive"
|
||||||
|
version = "4.5.4"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "528131438037fd55894f62d6e9f068b8f45ac57ffa77517819645d10aed04f64"
|
||||||
|
dependencies = [
|
||||||
|
"heck",
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"syn",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "clap_lex"
|
||||||
|
version = "0.7.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "colorchoice"
|
name = "colorchoice"
|
||||||
version = "1.0.1"
|
version = "1.0.1"
|
||||||
|
@ -93,10 +133,17 @@ dependencies = [
|
||||||
name = "fediloom"
|
name = "fediloom"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
"clap",
|
||||||
"env_logger",
|
"env_logger",
|
||||||
"log",
|
"log",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "heck"
|
||||||
|
version = "0.5.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "humantime"
|
name = "humantime"
|
||||||
version = "2.1.0"
|
version = "2.1.0"
|
||||||
|
@ -121,6 +168,24 @@ version = "2.7.2"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d"
|
checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "proc-macro2"
|
||||||
|
version = "1.0.84"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "ec96c6a92621310b51366f1e28d05ef11489516e93be030060e5fc12024a49d6"
|
||||||
|
dependencies = [
|
||||||
|
"unicode-ident",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "quote"
|
||||||
|
version = "1.0.36"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "regex"
|
name = "regex"
|
||||||
version = "1.10.4"
|
version = "1.10.4"
|
||||||
|
@ -150,6 +215,29 @@ version = "0.8.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56"
|
checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "strsim"
|
||||||
|
version = "0.11.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "syn"
|
||||||
|
version = "2.0.66"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "c42f3f41a2de00b01c0aaad383c5a45241efc8b2d1eda5661812fda5f3cdcff5"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"unicode-ident",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "unicode-ident"
|
||||||
|
version = "1.0.12"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "utf8parse"
|
name = "utf8parse"
|
||||||
version = "0.2.1"
|
version = "0.2.1"
|
||||||
|
|
|
@ -4,5 +4,6 @@ version = "0.1.0"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
|
clap = { version = "4.5.4", features = ["derive"] }
|
||||||
env_logger = "0.11.3"
|
env_logger = "0.11.3"
|
||||||
log = "0.4.21"
|
log = "0.4.21"
|
||||||
|
|
|
@ -9,4 +9,4 @@ Goal - a commandline-based tool for creating blocklists for ActivityPub software
|
||||||
- [ ] Use URLs as sources
|
- [ ] Use URLs as sources
|
||||||
- [ ] Directly request lists from API endpoints
|
- [ ] Directly request lists from API endpoints
|
||||||
- [ ] Create tiered or thresholded lists
|
- [ ] Create tiered or thresholded lists
|
||||||
- [ ] Support CSV and JSON1
|
- [ ] Support CSV and JSON
|
15
src/main.rs
15
src/main.rs
|
@ -3,9 +3,20 @@
|
||||||
mod manip;
|
mod manip;
|
||||||
mod tests;
|
mod tests;
|
||||||
|
|
||||||
|
use clap::Parser;
|
||||||
|
|
||||||
|
#[derive(Parser)]
|
||||||
|
struct Cli {
|
||||||
|
// TODO inputs
|
||||||
|
// TODO outputs
|
||||||
|
// TODO cfg file (TOML)
|
||||||
|
// TODO options
|
||||||
|
// TODO verbose mode
|
||||||
|
//
|
||||||
|
}
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
println!("Hello, world!");
|
println!("Hello, world!");
|
||||||
// TODO argument parsing
|
// TODO argument parsing - IN PROGRESS
|
||||||
// TODO logging
|
// TODO logging
|
||||||
// TODO config file
|
|
||||||
}
|
}
|
|
@ -138,10 +138,7 @@ impl ModMap {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn alphabetize_lines(string: String) -> String {
|
pub fn alphabetize_lines(string: String) -> String {
|
||||||
let mut v = string
|
let mut v = string.lines().collect::<Vec<&str>>();
|
||||||
.lines()
|
|
||||||
.map(|literal| literal.to_string())
|
|
||||||
.collect::<Vec<String>>();
|
|
||||||
v.sort_by_key(|a| a.to_lowercase());
|
v.sort_by_key(|a| a.to_lowercase());
|
||||||
|
|
||||||
v.join("\n") + "\n"
|
v.join("\n") + "\n"
|
||||||
|
|
|
@ -80,8 +80,8 @@ fn modsource_from_map_and_trust() {
|
||||||
#[test]
|
#[test]
|
||||||
fn modsource_from_file() {
|
fn modsource_from_file() {
|
||||||
let mut src = ModSource::default();
|
let mut src = ModSource::default();
|
||||||
src.import_file("example_blocklist1.txt", ModAction::Block)
|
src.import_file("test/example_blocklist.txt", ModAction::Block)
|
||||||
.import_file("example_mutelist1.txt", ModAction::Silence);
|
.import_file("test/example_mutelist.txt", ModAction::Silence);
|
||||||
|
|
||||||
let test_src = ModSource::from(HashMap::from([
|
let test_src = ModSource::from(HashMap::from([
|
||||||
(String::from("example.com"), ModAction::Block),
|
(String::from("example.com"), ModAction::Block),
|
||||||
|
@ -103,8 +103,8 @@ fn modmap_from_modsource() {
|
||||||
]));
|
]));
|
||||||
|
|
||||||
let mut src2 = ModSource::default();
|
let mut src2 = ModSource::default();
|
||||||
src2.import_file("example_blocklist1.txt", ModAction::Block)
|
src2.import_file("test/example_blocklist.txt", ModAction::Block)
|
||||||
.import_file("example_mutelist1.txt", ModAction::Silence);
|
.import_file("test/example_mutelist.txt", ModAction::Silence);
|
||||||
|
|
||||||
ml.add_source(src1).add_source(src2);
|
ml.add_source(src1).add_source(src2);
|
||||||
|
|
||||||
|
@ -166,8 +166,8 @@ fn modmap_export_txt() {
|
||||||
]));
|
]));
|
||||||
|
|
||||||
let mut src2 = ModSource::default();
|
let mut src2 = ModSource::default();
|
||||||
src2.import_file("example_blocklist1.txt", ModAction::Block)
|
src2.import_file("test/example_blocklist.txt", ModAction::Block)
|
||||||
.import_file("example_mutelist1.txt", ModAction::Silence);
|
.import_file("test/example_mutelist.txt", ModAction::Silence);
|
||||||
|
|
||||||
let src3 = ModSource::build(
|
let src3 = ModSource::build(
|
||||||
HashMap::from([
|
HashMap::from([
|
||||||
|
@ -190,11 +190,11 @@ fn modmap_export_txt() {
|
||||||
.add_source(src3)
|
.add_source(src3)
|
||||||
.add_source(src4);
|
.add_source(src4);
|
||||||
|
|
||||||
let _ = ml.export_file("test_blocks.txt", "test_mutes.txt", (200, 150));
|
let _ = ml.export_file("test/test_blocks.txt", "test/test_mutes.txt", (200, 150));
|
||||||
|
|
||||||
let blocks: String = fs::read_to_string("test_blocks.txt").unwrap();
|
let file_blocks: String = fs::read_to_string("test/test_blocks.txt").unwrap();
|
||||||
let mutes: String = fs::read_to_string("test_mutes.txt").unwrap();
|
let file_mutes: String = fs::read_to_string("test/test_mutes.txt").unwrap();
|
||||||
|
|
||||||
assert_eq!(blocks, "example.com\n");
|
assert_eq!(file_blocks, "example.com\n");
|
||||||
assert_eq!(mutes, "example.net\nexample.org\n");
|
assert_eq!(file_mutes, "example.net\nexample.org\n");
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue