diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml index f491d62..b9779c9 100644 --- a/.github/workflows/coverage.yml +++ b/.github/workflows/coverage.yml @@ -21,7 +21,7 @@ jobs: uses: actions-rs/cargo@v1 with: command: test - args: --all-features --no-fail-fast + args: --no-default-features --features githubActions --features with-containers --no-fail-fast env: CARGO_INCREMENTAL: "0" RUSTFLAGS: "-Zprofile -Ccodegen-units=1 -Cinline-threshold=0 -Clink-dead-code -Coverflow-checks=off -Cpanic=abort -Zpanic_abort_tests" diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index 374007b..79a9775 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -19,7 +19,7 @@ jobs: - uses: actions-rs/cargo@v1 with: command: test - args: --all-features --no-fail-fast + args: --no-default-features --features githubActions --features with-containers --no-fail-fast - name: Format run: cargo fmt --all -- --check - name: Clippy diff --git a/Cargo.toml b/Cargo.toml index 83fba59..8f75ac1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -70,6 +70,7 @@ features = ["json"] version = "2.1.0" [features] +default = [ "with-keyring" ] githubActions = [] with-containers = [] with-keyring = [ "keyring" ] @@ -78,10 +79,6 @@ with-keyring = [ "keyring" ] [target."cfg(any(target_os = \"unix\", target_os = \"macos\", target_os = \"linux\"))".dependencies] users = "0.11.0" -[target."cfg(any(target_os = \"windows\", target_os = \"macos\", target_os = \"linux\"))"] -[target."cfg(any(target_os = \"windows\", target_os = \"macos\", target_os = \"linux\"))".features] -default = [ "keyring" ] - [target."cfg(target_os = \"windows\")"] [target."cfg(target_os = \"windows\")".dependencies] path-slash = "0.1.4" diff --git a/src/system/bookmarks_client.rs b/src/system/bookmarks_client.rs index fdff0c9..0d6fb93 100644 --- a/src/system/bookmarks_client.rs +++ b/src/system/bookmarks_client.rs @@ -28,7 +28,7 @@ // Deps extern crate whoami; // Crate -#[cfg(any(target_os = "windows", target_os = "macos"))] +#[cfg(feature = "with-keyring")] use super::keys::keyringstorage::KeyringStorage; use super::keys::{filestorage::FileStorage, KeyStorage, KeyStorageError}; // Local @@ -69,8 +69,8 @@ impl BookmarksClient { // Create default hosts let default_hosts: UserHosts = Default::default(); debug!("Setting up bookmarks client..."); - // Make a key storage (windows / macos) - #[cfg(any(target_os = "windows", target_os = "macos"))] + // Make a key storage (with-keyring) + #[cfg(feature = "with-keyring")] let (key_storage, service_id): (Box, &str) = { debug!("Setting up KeyStorage"); let username: String = whoami::username(); @@ -91,8 +91,8 @@ impl BookmarksClient { } } }; - // Make a key storage (linux / unix) - #[cfg(any(target_os = "linux", target_os = "unix"))] + // Make a key storage (wno-keyring) + #[cfg(not(feature = "with-keyring"))] let (key_storage, service_id): (Box, &str) = { #[cfg(not(test))] let app_name: &str = "bookmarks"; diff --git a/src/system/keys/keyringstorage.rs b/src/system/keys/keyringstorage.rs index 8cdc2fa..ca05945 100644 --- a/src/system/keys/keyringstorage.rs +++ b/src/system/keys/keyringstorage.rs @@ -67,7 +67,7 @@ impl KeyStorage for KeyringStorage { #[cfg(target_os = "macos")] KeyringError::MacOsKeychainError(_) => Err(KeyStorageError::NoSuchKey), #[cfg(target_os = "linux")] - KeyringError::SecretServiceError(SsError) => Err(KeyStorageError::ProviderError), + KeyringError::SecretServiceError(_) => Err(KeyStorageError::ProviderError), KeyringError::Parse(_) => Err(KeyStorageError::BadSytax), _ => Err(KeyStorageError::ProviderError), }, @@ -94,7 +94,13 @@ impl KeyStorage for KeyringStorage { // Check what kind of error is returned match storage.get_password() { Ok(_) => true, + #[cfg(not(target_os = "linux"))] Err(err) => !matches!(err, KeyringError::NoBackendFound), + #[cfg(target_os = "linux")] + Err(err) => !matches!( + err, + KeyringError::NoBackendFound | KeyringError::SecretServiceError(_) + ), } } } diff --git a/src/system/keys/mod.rs b/src/system/keys/mod.rs index f89418c..0ca1e92 100644 --- a/src/system/keys/mod.rs +++ b/src/system/keys/mod.rs @@ -27,7 +27,7 @@ */ // Storages pub mod filestorage; -#[cfg(any(target_os = "windows", target_os = "macos"))] +#[cfg(feature = "with-keyring")] pub mod keyringstorage; // ext use thiserror::Error;