1use thiserror::Error;
2
3#[derive(Debug, Error)]
5pub enum BitwError {
6 #[error(
8 "Bitwarden CLI `bw` not found on PATH — install it from https://bitwarden.com/help/cli/"
9 )]
10 CliNotFound,
11
12 #[error("bw login failed (exit {status}): {stderr}")]
14 LoginFailed { status: i32, stderr: String },
15
16 #[error("bw unlock failed (exit {status}): {stderr}")]
18 UnlockFailed { status: i32, stderr: String },
19
20 #[error("bw lock failed (exit {status}): {stderr}")]
22 LockFailed { status: i32, stderr: String },
23
24 #[error("bw list items failed (exit {status}): {stderr}")]
26 ListFailed { status: i32, stderr: String },
27
28 #[error("could not extract BW_SESSION token from `bw unlock` output")]
30 SessionTokenMissing,
31
32 #[error("failed to parse `bw list items` JSON: {0}")]
34 ParseError(String),
35
36 #[error("Bitwarden configuration error: {0}")]
38 Config(String),
39}