oxyde_cloud_cli/commands/
logout.rs

1use keyring::Entry;
2use thiserror::Error;
3
4#[derive(Debug, Error)]
5pub enum Error {
6    #[error("Keyring error: {0}")]
7    Keyring(#[from] keyring::Error),
8}
9
10pub fn logout() -> Result<(), Error> {
11    let keyring_entry = Entry::new("oxyde-cloud", "api-key")?;
12
13    if let Err(err) = keyring_entry.delete_credential() {
14        if let keyring::Error::NoEntry = err {
15            // already logged out
16            Ok(())
17        } else {
18            Err(err.into())
19        }
20    } else {
21        Ok(())
22    }
23}