pub struct GitContext<'a> { /* private fields */ }
Expand description
Holds the shared context needed for publishing Atoms.
Implementations§
Source§impl<'a> GitContext<'a>
impl<'a> GitContext<'a>
Source§impl<'a> GitContext<'a>
impl<'a> GitContext<'a>
Sourcepub async fn await_pushes(&self, errors: &mut Vec<Error>)
pub async fn await_pushes(&self, errors: &mut Vec<Error>)
A method used to await the results of the concurrently running Git pushes, which were offloaded to a seperate thread of execution of Tokio’s runtime.
An errors that occurred will be collected into a Vec
.
Trait Implementations§
Source§impl<'a> Publish<Root> for GitContext<'a>
impl<'a> Publish<Root> for GitContext<'a>
Source§fn publish<C>(
&self,
paths: C,
remotes: HashMap<AtomTag, (Version, ObjectId)>,
) -> Vec<GitResult<GitOutcome>> ⓘwhere
C: IntoIterator<Item = PathBuf>,
fn publish<C>(
&self,
paths: C,
remotes: HashMap<AtomTag, (Version, ObjectId)>,
) -> Vec<GitResult<GitOutcome>> ⓘwhere
C: IntoIterator<Item = PathBuf>,
Publishes atoms.
This function processes a collection of paths, each representing an atom to be published. The publishing process includes path normalization, existence checks, and actual publishing attempts.
§Path Normalization
- First attempts to interpret each path as relative to the caller’s current location inside the repository.
- If normalization fails (e.g., in a bare repository), falls back to treating the path as already relative to the repo root.
- The normalized path is used to search the Git history, not the file system.
§Publishing Process
For each path:
- Normalizes the path (as described above).
- Checks if the atom already exists in the repository.
- If it exists, the atom is skipped, and a log message is generated.
- Attempts to publish the atom.
- If successful, the atom is added to the repository.
- If any error occurs during publishing, the atom is skipped, and an error is logged.
§Error Handling
- The function aims to process all provided paths, even if some fail.
- Errors and skipped atoms are collected as results but do not halt the overall process.
- The function continues until all the atoms have been processed.
§Return Value
Returns a vector of results types (Vec<Result<PublishOutcome<T>, Self::Error>>
), where the
outter result represents whether an atom has failed, and the inner result determines whether
an atom was safely skipped, e.g. because it already exists..
Auto Trait Implementations§
impl<'a> !Freeze for GitContext<'a>
impl<'a> !RefUnwindSafe for GitContext<'a>
impl<'a> !Send for GitContext<'a>
impl<'a> !Sync for GitContext<'a>
impl<'a> Unpin for GitContext<'a>
impl<'a> !UnwindSafe for GitContext<'a>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
§impl<T> Paint for Twhere
T: ?Sized,
impl<T> Paint for Twhere
T: ?Sized,
§fn fg(&self, value: Color) -> Painted<&T>
fn fg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self
with the foreground set to
value
.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like red()
and
green()
, which have the same functionality but are
pithier.
§Example
Set foreground color to white using fg()
:
use yansi::{Paint, Color};
painted.fg(Color::White);
Set foreground color to white using white()
.
use yansi::Paint;
painted.white();
§fn bright_black(&self) -> Painted<&T>
fn bright_black(&self) -> Painted<&T>
§fn bright_red(&self) -> Painted<&T>
fn bright_red(&self) -> Painted<&T>
§fn bright_green(&self) -> Painted<&T>
fn bright_green(&self) -> Painted<&T>
§fn bright_yellow(&self) -> Painted<&T>
fn bright_yellow(&self) -> Painted<&T>
§fn bright_blue(&self) -> Painted<&T>
fn bright_blue(&self) -> Painted<&T>
§fn bright_magenta(&self) -> Painted<&T>
fn bright_magenta(&self) -> Painted<&T>
§fn bright_cyan(&self) -> Painted<&T>
fn bright_cyan(&self) -> Painted<&T>
§fn bright_white(&self) -> Painted<&T>
fn bright_white(&self) -> Painted<&T>
§fn bg(&self, value: Color) -> Painted<&T>
fn bg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self
with the background set to
value
.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like on_red()
and
on_green()
, which have the same functionality but
are pithier.
§Example
Set background color to red using fg()
:
use yansi::{Paint, Color};
painted.bg(Color::Red);
Set background color to red using on_red()
.
use yansi::Paint;
painted.on_red();
§fn on_primary(&self) -> Painted<&T>
fn on_primary(&self) -> Painted<&T>
§fn on_magenta(&self) -> Painted<&T>
fn on_magenta(&self) -> Painted<&T>
§fn on_bright_black(&self) -> Painted<&T>
fn on_bright_black(&self) -> Painted<&T>
§fn on_bright_red(&self) -> Painted<&T>
fn on_bright_red(&self) -> Painted<&T>
§fn on_bright_green(&self) -> Painted<&T>
fn on_bright_green(&self) -> Painted<&T>
§fn on_bright_yellow(&self) -> Painted<&T>
fn on_bright_yellow(&self) -> Painted<&T>
§fn on_bright_blue(&self) -> Painted<&T>
fn on_bright_blue(&self) -> Painted<&T>
§fn on_bright_magenta(&self) -> Painted<&T>
fn on_bright_magenta(&self) -> Painted<&T>
§fn on_bright_cyan(&self) -> Painted<&T>
fn on_bright_cyan(&self) -> Painted<&T>
§fn on_bright_white(&self) -> Painted<&T>
fn on_bright_white(&self) -> Painted<&T>
§fn attr(&self, value: Attribute) -> Painted<&T>
fn attr(&self, value: Attribute) -> Painted<&T>
Enables the styling [Attribute
] value
.
This method should be used rarely. Instead, prefer to use
attribute-specific builder methods like bold()
and
underline()
, which have the same functionality
but are pithier.
§Example
Make text bold using attr()
:
use yansi::{Paint, Attribute};
painted.attr(Attribute::Bold);
Make text bold using using bold()
.
use yansi::Paint;
painted.bold();
§fn rapid_blink(&self) -> Painted<&T>
fn rapid_blink(&self) -> Painted<&T>
§fn quirk(&self, value: Quirk) -> Painted<&T>
fn quirk(&self, value: Quirk) -> Painted<&T>
Enables the yansi
[Quirk
] value
.
This method should be used rarely. Instead, prefer to use quirk-specific
builder methods like mask()
and
wrap()
, which have the same functionality but are
pithier.
§Example
Enable wrapping using .quirk()
:
use yansi::{Paint, Quirk};
painted.quirk(Quirk::Wrap);
Enable wrapping using wrap()
.
use yansi::Paint;
painted.wrap();
§fn clear(&self) -> Painted<&T>
👎Deprecated since 1.0.1: renamed to resetting()
due to conflicts with Vec::clear()
.
The clear()
method will be removed in a future release.
fn clear(&self) -> Painted<&T>
resetting()
due to conflicts with Vec::clear()
.
The clear()
method will be removed in a future release.§fn whenever(&self, value: Condition) -> Painted<&T>
fn whenever(&self, value: Condition) -> Painted<&T>
Conditionally enable styling based on whether the [Condition
] value
applies. Replaces any previous condition.
See the crate level docs for more details.
§Example
Enable styling painted
only when both stdout
and stderr
are TTYs:
use yansi::{Paint, Condition};
painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);