Skip to content

Commit 560e475

Browse files
Koenraad VerheydenJoshua Nelson
authored andcommitted
Add 'cratesfyi database blacklist list' command
1 parent 64a70ca commit 560e475

File tree

2 files changed

+16
-1
lines changed

2 files changed

+16
-1
lines changed

src/bin/cratesfyi.rs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,8 @@ pub fn main() {
120120
.subcommand(SubCommand::with_name("blacklist")
121121
.about("Blacklist operations")
122122
.setting(AppSettings::ArgRequiredElseHelp)
123+
.subcommand(SubCommand::with_name("list")
124+
.about("List all crates on the blacklist"))
123125
.subcommand(SubCommand::with_name("add")
124126
.about("Add a crate to the blacklist")
125127
.arg(Arg::with_name("CRATE_NAME")
@@ -251,7 +253,11 @@ pub fn main() {
251253
} else if let Some(matches) = matches.subcommand_matches("blacklist") {
252254
let conn = db::connect_db().expect("failed to connect to the database");
253255

254-
if let Some(matches) = matches.subcommand_matches("add") {
256+
if let Some(_) = matches.subcommand_matches("list") {
257+
let crates = db::blacklist::list_crates(&conn).expect("failed to list crates on blacklist");
258+
println!("{}", crates.join("\n"));
259+
260+
} else if let Some(matches) = matches.subcommand_matches("add") {
255261
let crate_name = matches.value_of("CRATE_NAME").expect("verified by clap");
256262
db::blacklist::add_crate(&conn, crate_name).expect("failed to add crate to blacklist");
257263

src/db/blacklist.rs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,15 @@ pub fn is_blacklisted(conn: &Connection, name: &str) -> Result<bool, Error> {
2020
Ok(count != 0)
2121
}
2222

23+
pub fn list_crates(conn: &Connection) -> Result<Vec<String>, Error> {
24+
let rows = conn.query(
25+
"SELECT crate_name FROM blacklisted_crates ORDER BY crate_name asc;",
26+
&[],
27+
)?;
28+
29+
Ok(rows.into_iter().map(|row| row.get(0)).collect())
30+
}
31+
2332
pub fn add_crate(conn: &Connection, name: &str) -> Result<(), Error> {
2433
if is_blacklisted(conn, name)? {
2534
return Err(BlacklistError::CrateAlreadyOnBlacklist(name.into()).into());

0 commit comments

Comments
 (0)