Skip to content

Commit 2e3dde1

Browse files
committed
refactor(cred): Move macos impl to inline mod
1 parent feb6d88 commit 2e3dde1

File tree

1 file changed

+37
-35
lines changed
  • crates/credential/cargo-credential-macos-keychain/src

1 file changed

+37
-35
lines changed
Lines changed: 37 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,50 +1,52 @@
11
//! Cargo registry macos keychain credential process.
22
3-
use cargo_credential::{Credential, Error};
4-
use security_framework::os::macos::keychain::SecKeychain;
3+
mod macos {
4+
use cargo_credential::{Credential, Error};
5+
use security_framework::os::macos::keychain::SecKeychain;
56

6-
struct MacKeychain;
7+
pub(crate) struct MacKeychain;
78

8-
/// The account name is not used.
9-
const ACCOUNT: &'static str = "";
9+
/// The account name is not used.
10+
const ACCOUNT: &'static str = "";
1011

11-
fn registry(registry_name: &str) -> String {
12-
format!("cargo-registry:{}", registry_name)
13-
}
14-
15-
impl Credential for MacKeychain {
16-
fn name(&self) -> &'static str {
17-
env!("CARGO_PKG_NAME")
12+
fn registry(registry_name: &str) -> String {
13+
format!("cargo-registry:{}", registry_name)
1814
}
1915

20-
fn get(&self, index_url: &str) -> Result<String, Error> {
21-
let keychain = SecKeychain::default().unwrap();
22-
let service_name = registry(index_url);
23-
let (pass, _item) = keychain.find_generic_password(&service_name, ACCOUNT)?;
24-
String::from_utf8(pass.as_ref().to_vec())
25-
.map_err(|_| "failed to convert token to UTF8".into())
26-
}
16+
impl Credential for MacKeychain {
17+
fn name(&self) -> &'static str {
18+
env!("CARGO_PKG_NAME")
19+
}
2720

28-
fn store(&self, index_url: &str, token: &str, name: Option<&str>) -> Result<(), Error> {
29-
let keychain = SecKeychain::default().unwrap();
30-
let service_name = registry(name.unwrap_or(index_url));
31-
if let Ok((_pass, mut item)) = keychain.find_generic_password(&service_name, ACCOUNT) {
32-
item.set_password(token.as_bytes())?;
33-
} else {
34-
keychain.add_generic_password(&service_name, ACCOUNT, token.as_bytes())?;
21+
fn get(&self, index_url: &str) -> Result<String, Error> {
22+
let keychain = SecKeychain::default().unwrap();
23+
let service_name = registry(index_url);
24+
let (pass, _item) = keychain.find_generic_password(&service_name, ACCOUNT)?;
25+
String::from_utf8(pass.as_ref().to_vec())
26+
.map_err(|_| "failed to convert token to UTF8".into())
27+
}
28+
29+
fn store(&self, index_url: &str, token: &str, name: Option<&str>) -> Result<(), Error> {
30+
let keychain = SecKeychain::default().unwrap();
31+
let service_name = registry(name.unwrap_or(index_url));
32+
if let Ok((_pass, mut item)) = keychain.find_generic_password(&service_name, ACCOUNT) {
33+
item.set_password(token.as_bytes())?;
34+
} else {
35+
keychain.add_generic_password(&service_name, ACCOUNT, token.as_bytes())?;
36+
}
37+
Ok(())
3538
}
36-
Ok(())
37-
}
3839

39-
fn erase(&self, index_url: &str) -> Result<(), Error> {
40-
let keychain = SecKeychain::default().unwrap();
41-
let service_name = registry(index_url);
42-
let (_pass, item) = keychain.find_generic_password(&service_name, ACCOUNT)?;
43-
item.delete();
44-
Ok(())
40+
fn erase(&self, index_url: &str) -> Result<(), Error> {
41+
let keychain = SecKeychain::default().unwrap();
42+
let service_name = registry(index_url);
43+
let (_pass, item) = keychain.find_generic_password(&service_name, ACCOUNT)?;
44+
item.delete();
45+
Ok(())
46+
}
4547
}
4648
}
4749

4850
fn main() {
49-
cargo_credential::main(MacKeychain);
51+
cargo_credential::main(macos::MacKeychain);
5052
}

0 commit comments

Comments
 (0)