mirror of
https://github.com/Llewellynvdm/zoxide.git
synced 2024-11-25 22:17:33 +00:00
Improve interactive mode in zoxide remove
This commit is contained in:
parent
f94d1375a8
commit
e4dae1dd54
18
Cargo.lock
generated
18
Cargo.lock
generated
@ -193,7 +193,7 @@ version = "1.0.2"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro-error-attr 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
"proc-macro-error-attr 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"proc-macro2 1.0.10 (registry+https://github.com/rust-lang/crates.io-index)",
|
"proc-macro2 1.0.12 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"quote 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"quote 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"syn 1.0.18 (registry+https://github.com/rust-lang/crates.io-index)",
|
"syn 1.0.18 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"version_check 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"version_check 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
@ -204,7 +204,7 @@ name = "proc-macro-error-attr"
|
|||||||
version = "1.0.2"
|
version = "1.0.2"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2 1.0.10 (registry+https://github.com/rust-lang/crates.io-index)",
|
"proc-macro2 1.0.12 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"quote 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"quote 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"syn 1.0.18 (registry+https://github.com/rust-lang/crates.io-index)",
|
"syn 1.0.18 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"syn-mid 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"syn-mid 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
@ -213,7 +213,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "proc-macro2"
|
name = "proc-macro2"
|
||||||
version = "1.0.10"
|
version = "1.0.12"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
@ -224,7 +224,7 @@ name = "quote"
|
|||||||
version = "1.0.4"
|
version = "1.0.4"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2 1.0.10 (registry+https://github.com/rust-lang/crates.io-index)",
|
"proc-macro2 1.0.12 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -311,7 +311,7 @@ name = "serde_derive"
|
|||||||
version = "1.0.106"
|
version = "1.0.106"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2 1.0.10 (registry+https://github.com/rust-lang/crates.io-index)",
|
"proc-macro2 1.0.12 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"quote 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"quote 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"syn 1.0.18 (registry+https://github.com/rust-lang/crates.io-index)",
|
"syn 1.0.18 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
@ -338,7 +338,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
dependencies = [
|
dependencies = [
|
||||||
"heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"proc-macro-error 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
"proc-macro-error 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"proc-macro2 1.0.10 (registry+https://github.com/rust-lang/crates.io-index)",
|
"proc-macro2 1.0.12 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"quote 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"quote 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"syn 1.0.18 (registry+https://github.com/rust-lang/crates.io-index)",
|
"syn 1.0.18 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
@ -348,7 +348,7 @@ name = "syn"
|
|||||||
version = "1.0.18"
|
version = "1.0.18"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2 1.0.10 (registry+https://github.com/rust-lang/crates.io-index)",
|
"proc-macro2 1.0.12 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"quote 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"quote 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
@ -358,7 +358,7 @@ name = "syn-mid"
|
|||||||
version = "0.5.0"
|
version = "0.5.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2 1.0.10 (registry+https://github.com/rust-lang/crates.io-index)",
|
"proc-macro2 1.0.12 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"quote 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"quote 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"syn 1.0.18 (registry+https://github.com/rust-lang/crates.io-index)",
|
"syn 1.0.18 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
@ -472,7 +472,7 @@ dependencies = [
|
|||||||
"checksum ppv-lite86 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "74490b50b9fbe561ac330df47c08f3f33073d2d00c150f719147d7c54522fa1b"
|
"checksum ppv-lite86 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "74490b50b9fbe561ac330df47c08f3f33073d2d00c150f719147d7c54522fa1b"
|
||||||
"checksum proc-macro-error 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "98e9e4b82e0ef281812565ea4751049f1bdcdfccda7d3f459f2e138a40c08678"
|
"checksum proc-macro-error 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "98e9e4b82e0ef281812565ea4751049f1bdcdfccda7d3f459f2e138a40c08678"
|
||||||
"checksum proc-macro-error-attr 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4f5444ead4e9935abd7f27dc51f7e852a0569ac888096d5ec2499470794e2e53"
|
"checksum proc-macro-error-attr 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4f5444ead4e9935abd7f27dc51f7e852a0569ac888096d5ec2499470794e2e53"
|
||||||
"checksum proc-macro2 1.0.10 (registry+https://github.com/rust-lang/crates.io-index)" = "df246d292ff63439fea9bc8c0a270bed0e390d5ebd4db4ba15aba81111b5abe3"
|
"checksum proc-macro2 1.0.12 (registry+https://github.com/rust-lang/crates.io-index)" = "8872cf6f48eee44265156c111456a700ab3483686b3f96df4cf5481c89157319"
|
||||||
"checksum quote 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "4c1f4b0efa5fc5e8ceb705136bfee52cfdb6a4e3509f770b478cd6ed434232a7"
|
"checksum quote 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "4c1f4b0efa5fc5e8ceb705136bfee52cfdb6a4e3509f770b478cd6ed434232a7"
|
||||||
"checksum rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03"
|
"checksum rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03"
|
||||||
"checksum rand_chacha 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402"
|
"checksum rand_chacha 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402"
|
||||||
|
@ -3,13 +3,10 @@ use crate::util;
|
|||||||
use anyhow::Result;
|
use anyhow::Result;
|
||||||
use structopt::StructOpt;
|
use structopt::StructOpt;
|
||||||
|
|
||||||
use std::path::PathBuf;
|
|
||||||
|
|
||||||
#[derive(Debug, StructOpt)]
|
#[derive(Debug, StructOpt)]
|
||||||
#[structopt(about = "Remove a directory")]
|
#[structopt(about = "Remove a directory")]
|
||||||
pub struct Remove {
|
pub struct Remove {
|
||||||
#[structopt(required_unless("interactive"))]
|
query: Vec<String>,
|
||||||
path: Option<PathBuf>,
|
|
||||||
#[structopt(short, long, help = "Opens an interactive selection menu using fzf")]
|
#[structopt(short, long, help = "Opens an interactive selection menu using fzf")]
|
||||||
interactive: bool,
|
interactive: bool,
|
||||||
}
|
}
|
||||||
@ -18,7 +15,7 @@ impl Remove {
|
|||||||
pub fn run(&self) -> Result<()> {
|
pub fn run(&self) -> Result<()> {
|
||||||
if self.interactive {
|
if self.interactive {
|
||||||
let mut db = util::get_db()?;
|
let mut db = util::get_db()?;
|
||||||
let dirs = db.query_all();
|
let dirs = db.query_many(&self.query);
|
||||||
let now = util::get_current_time()?;
|
let now = util::get_current_time()?;
|
||||||
|
|
||||||
if let Some(path_bytes) = util::fzf_helper(now, dirs)? {
|
if let Some(path_bytes) = util::fzf_helper(now, dirs)? {
|
||||||
@ -28,9 +25,17 @@ impl Remove {
|
|||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
} else {
|
} else {
|
||||||
// structopt guarantees that unwrap is safe here
|
match self.query.as_slice() {
|
||||||
let path = self.path.as_ref().unwrap();
|
[path] => util::get_db()?.remove(path),
|
||||||
util::get_db()?.remove(path)
|
_ => clap::Error::with_description(
|
||||||
|
&format!(
|
||||||
|
"remove requires 1 value in non-interactive mode, but {} were provided",
|
||||||
|
self.query.len()
|
||||||
|
),
|
||||||
|
clap::ErrorKind::WrongNumberOfValues,
|
||||||
|
)
|
||||||
|
.exit(),
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user