Skip to main content

HelperCredentialProvider

Struct HelperCredentialProvider 

Source
pub struct HelperCredentialProvider { /* private fields */ }
Expand description

Git-compatible CredentialProvider that runs the configured credential.helper programs.

Built from a ConfigSet; it resolves the helper list per the target URL (so credential.<url>.helper entries are honored) and invokes each helper with get (for fill), store (for approve), or erase (for reject) exactly as Git does.

If no helper yields a complete credential, fill asks the askpass program for the missing username and password. It never prompts on a terminal: without an askpass program it returns Error::CredentialsUnavailable with the helpers it asked.

Implementations§

Source§

impl HelperCredentialProvider

Source

pub fn new(config: ConfigSet) -> Self

Build a provider from a loaded ConfigSet, with no askpass program.

Source

pub fn with_command_runner(self, runner: Arc<dyn CommandRunner>) -> Self

Override the subprocess runner (tests and embedders).

Source

pub fn with_askpass(self, program: Option<PathBuf>) -> Self

Ask program for a username and password the helpers could not supply, usually the result of askpass_program.

program runs once per missing field with the prompt (for example Username for 'https://example.com': ) as its only argument, and its stdout up to the first line break is the answer. Credentials obtained this way are stored with the helpers when the transport approves them. None disables the fallback. credential.interactive=false or never also disables it.

Source

pub fn helpers_for(&self, cred: &Credential) -> Vec<String>

The credential.helper programs this provider runs for cred, in the order fill, approve and reject invoke them.

Includes credential.<url>.helper entries whose URL pattern matches Credential::target_url; an empty value resets the list, as in Git. An empty result means storing cred would be a no-op.

Source

pub fn helper_installed(&self, name: &str) -> bool

Whether the helper program for the bare helper name name (so git-credential-<name>) is installed in Git’s exec-path or on PATH.

Source

pub fn suggested_helper(&self) -> Option<&'static str>

The helper to configure when credential.helper is unset: the first of SUGGESTED_HELPERS that is installed.

That is the platform’s secure store when it is available (the macOS keychain, libsecret on Linux), otherwise store, which keeps credentials in a plaintext file. None when none is installed.

Trait Implementations§

Source§

impl CredentialProvider for HelperCredentialProvider

Source§

fn fill(&self, input: &Credential) -> Result<Credential>

Fill in missing fields (typically username/password) for input, returning a more-complete Credential. Implementations that cannot supply a usable credential should return a typed Error rather than block on interactive input.
Source§

fn approve(&self, cred: &Credential) -> Result<()>

Mark cred as known-good (helpers store it).
Source§

fn reject(&self, cred: &Credential) -> Result<()>

Mark cred as known-bad (helpers erase it).

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.