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
impl HelperCredentialProvider
Sourcepub fn new(config: ConfigSet) -> Self
pub fn new(config: ConfigSet) -> Self
Build a provider from a loaded ConfigSet, with no askpass program.
Sourcepub fn with_command_runner(self, runner: Arc<dyn CommandRunner>) -> Self
pub fn with_command_runner(self, runner: Arc<dyn CommandRunner>) -> Self
Override the subprocess runner (tests and embedders).
Sourcepub fn with_askpass(self, program: Option<PathBuf>) -> Self
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.
Sourcepub fn helpers_for(&self, cred: &Credential) -> Vec<String>
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.
Sourcepub fn helper_installed(&self, name: &str) -> bool
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.
Sourcepub fn suggested_helper(&self) -> Option<&'static str>
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
impl CredentialProvider for HelperCredentialProvider
Source§fn fill(&self, input: &Credential) -> Result<Credential>
fn fill(&self, input: &Credential) -> Result<Credential>
input,
returning a more-complete Credential. Implementations that cannot
supply a usable credential should return a typed Error rather than
block on interactive input.