Skip to main content

InstallationDiscovery

Enum InstallationDiscovery 

Source
pub enum InstallationDiscovery {
    NotInstalled {
        install_url: Url,
    },
    Indeterminate {
        skipped: usize,
    },
    Installed(ReachableTargets),
}
Expand description

What auth status and auth login show after a successful sign-in.

Variants§

§

NotInstalled

The credential is valid, GitHub reported nothing this client could not describe, and still nothing is reachable: the App is installed nowhere, or on nothing. 03-control-flows.md flow 1.1 requires the installation URL here, and the URL is the remediation.

Fields

§install_url: Url
§

Indeterminate

Nothing is reachable, but at least one installation was skipped, so this client cannot tell “not installed” from “installed on something it could not describe”.

§Why this variant exists at all

Skipping an unnameable installation is the right trade — one odd installation must not take down auth status for every other one — but it was made silently, and the silence flipped a verdict. An account this client cannot name, on the only installation the credential has, used to collapse to InstallationDiscovery::NotInstalled, and auth status then handed an already-installed operator the “install the App” URL. That is a wrong remediation on the only authentication path there is, contradicted by nothing louder than a warn! in a log the operator is not reading.

So the skip stays and the verdict does not flip. There is deliberately no install_url here: the whole point is that this client does not know whether installing is the remedy, and offering the URL anyway would put the wrong answer back one field over. f1 says “1 installation could not be described” and stops there, which is true.

Fields

§skipped: usize
§

Installed(ReachableTargets)

The credential reaches at least one repository or organization. It may still be an incomplete picture — see ReachableTargets::skipped.

Implementations§

Source§

impl InstallationDiscovery

Source

pub fn targets(&self) -> Option<&ReachableTargets>

Source

pub fn install_url(&self) -> Option<&Url>

The installation URL, and only when installing is actually the remediation. See InstallationDiscovery::Indeterminate.

Source

pub fn skipped(&self) -> usize

How many installations GitHub reported that this client could not describe, whichever verdict was reached. One call for f1, so that “this report is incomplete” does not depend on which variant it landed in.

Trait Implementations§

Source§

impl Clone for InstallationDiscovery

Source§

fn clone(&self) -> InstallationDiscovery

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for InstallationDiscovery

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Eq for InstallationDiscovery

Source§

impl PartialEq for InstallationDiscovery

Source§

fn eq(&self, other: &InstallationDiscovery) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for InstallationDiscovery

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more