Struct git_credentials::helper::Outcome
source · pub struct Outcome {
pub username: Option<String>,
pub password: Option<String>,
pub quit: bool,
pub next: NextAction,
}
Expand description
The outcome of the credentials helper invocation.
Fields§
§username: Option<String>
The username to use in the identity, if set.
password: Option<String>
The username to use in the identity, if set.
quit: bool
If set, the helper asked to stop the entire process, whether the identity is complete or not.
next: NextAction
A handle to the action to perform next in another call to helper::invoke()
.
Implementations§
source§impl Outcome
impl Outcome
sourcepub fn consume_identity(&mut self) -> Option<Account>
pub fn consume_identity(&mut self) -> Option<Account>
Try to fetch username and password to form an identity. This will fail if one of them is not set.
This does nothing if only one of the fields is set, or consume both.
Examples found in repository?
src/protocol/mod.rs (line 70)
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
pub fn helper_outcome_to_result(outcome: Option<helper::Outcome>, action: helper::Action) -> Result {
fn redact(mut ctx: Context) -> Context {
if let Some(pw) = ctx.password.as_mut() {
*pw = "<redacted>".into()
}
ctx
}
match (action, outcome) {
(helper::Action::Get(ctx), None) => Err(Error::IdentityMissing { context: redact(ctx) }),
(helper::Action::Get(ctx), Some(mut outcome)) => match outcome.consume_identity() {
Some(identity) => Ok(Some(Outcome {
identity,
next: outcome.next,
})),
None => Err(if outcome.quit {
Error::Quit
} else {
Error::IdentityMissing { context: redact(ctx) }
}),
},
(helper::Action::Store(_) | helper::Action::Erase(_), _ignore) => Ok(None),
}
}