pub struct ToolchainClient { /* private fields */ }Expand description
A client for downloading and installing the Arm Toolchain for Embedded (ATfE).
Implementations§
Source§impl ToolchainClient
impl ToolchainClient
pub const REPO_OWNER: &str = "arm"
pub const REPO_NAME: &str = "arm-toolchain"
pub const RELEASE_PREFIX: &str = "release-"
pub const RELEASE_SUFFIX: &str = "-ATfE"
pub const CURRENT_TOOLCHAIN_FILENAME: &str = "current.txt"
Sourcepub async fn using_data_dir() -> Result<Self, ToolchainError>
pub async fn using_data_dir() -> Result<Self, ToolchainError>
Creates a new toolchain client that installs to a platform-specific data directory.
For example, on macOS this is
~/Library/Application Support/dev.vexide.arm-toolchain/llvm-toolchains.
Sourcepub async fn new(
toolchains_path: impl Into<PathBuf>,
cache_path: impl Into<PathBuf>,
) -> Result<Self, ToolchainError>
pub async fn new( toolchains_path: impl Into<PathBuf>, cache_path: impl Into<PathBuf>, ) -> Result<Self, ToolchainError>
Creates a client that installs toolchains in the specified folder.
Sourcepub async fn latest_release(&self) -> Result<ToolchainRelease, ToolchainError>
pub async fn latest_release(&self) -> Result<ToolchainRelease, ToolchainError>
Fetches the latest release of the Arm Toolchain for Embedded (ATfE) from the ARM GitHub repository.
Sourcepub async fn get_release(
&self,
version: &ToolchainVersion,
) -> Result<ToolchainRelease, ToolchainError>
pub async fn get_release( &self, version: &ToolchainVersion, ) -> Result<ToolchainRelease, ToolchainError>
Fetches the given release of the Arm Toolchain for Embedded (ATfE) from the ARM GitHub repository.
Sourcepub fn install_path_for(&self, version: &ToolchainVersion) -> PathBuf
pub fn install_path_for(&self, version: &ToolchainVersion) -> PathBuf
Returns the path where the given toolchain version would be installed.
Sourcepub fn version_is_installed(&self, version: &ToolchainVersion) -> bool
pub fn version_is_installed(&self, version: &ToolchainVersion) -> bool
Checks if the specified toolchain version is already installed.
Sourcepub async fn download_and_install(
&self,
release: &ToolchainRelease,
asset: &Asset,
progress: Arc<dyn Fn(InstallState) + Send + Sync>,
cancel_token: CancellationToken,
) -> Result<PathBuf, ToolchainError>
pub async fn download_and_install( &self, release: &ToolchainRelease, asset: &Asset, progress: Arc<dyn Fn(InstallState) + Send + Sync>, cancel_token: CancellationToken, ) -> Result<PathBuf, ToolchainError>
Downloads the specified toolchain asset, verifies its checksum, extracts it, and installs it to the appropriate location.
The downloaded toolchain will be activated if there is no other active toolchain. Returns the path to the extracted toolchain directory.
§Resuming downloads
This method will also handle resuming downloads if the file already exists and is partially downloaded. If the partially-downloaded file contains invalid bytes, a checksum error will be returned and the file will be deleted.
pub async fn installed_versions( &self, ) -> Result<Vec<ToolchainVersion>, ToolchainError>
Sourcepub async fn remove(
&self,
version: &ToolchainVersion,
progress: impl FnMut(RemoveProgress),
cancel_token: &CancellationToken,
) -> Result<(), ToolchainError>
pub async fn remove( &self, version: &ToolchainVersion, progress: impl FnMut(RemoveProgress), cancel_token: &CancellationToken, ) -> Result<(), ToolchainError>
Delete all files related to the given toolchain version.
Sourcepub async fn purge_cache(&self) -> Result<u64, ToolchainError>
pub async fn purge_cache(&self) -> Result<u64, ToolchainError>
Delete the cache directory, returning the number of bytes deleted.
Sourcepub fn active_toolchain(&self) -> Option<ToolchainVersion>
pub fn active_toolchain(&self) -> Option<ToolchainVersion>
Get the version of the active (default) toolchain.
Sourcepub async fn set_active_toolchain(
&self,
version: Option<ToolchainVersion>,
) -> Result<(), ToolchainError>
pub async fn set_active_toolchain( &self, version: Option<ToolchainVersion>, ) -> Result<(), ToolchainError>
Set the version of the active (default) toolchain.
This will write the given value to disk.
Sourcepub async fn toolchain(
&self,
version: &ToolchainVersion,
) -> Result<InstalledToolchain, ToolchainError>
pub async fn toolchain( &self, version: &ToolchainVersion, ) -> Result<InstalledToolchain, ToolchainError>
Returns a struct used to access paths of an installed toolchain.
This doesn’t check whether the specified version is actually installed, so make sure the paths exist before using them.
Trait Implementations§
Source§impl Clone for ToolchainClient
impl Clone for ToolchainClient
Source§fn clone(&self) -> ToolchainClient
fn clone(&self) -> ToolchainClient
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl Freeze for ToolchainClient
impl !RefUnwindSafe for ToolchainClient
impl Send for ToolchainClient
impl Sync for ToolchainClient
impl Unpin for ToolchainClient
impl !UnwindSafe for ToolchainClient
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<D> OwoColorize for D
impl<D> OwoColorize for D
Source§fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
Source§fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
Source§fn black(&self) -> FgColorDisplay<'_, Black, Self>
fn black(&self) -> FgColorDisplay<'_, Black, Self>
Source§fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
Source§fn red(&self) -> FgColorDisplay<'_, Red, Self>
fn red(&self) -> FgColorDisplay<'_, Red, Self>
Source§fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
Source§fn green(&self) -> FgColorDisplay<'_, Green, Self>
fn green(&self) -> FgColorDisplay<'_, Green, Self>
Source§fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
Source§fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
Source§fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
Source§fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
Source§fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
Source§fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
Source§fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
Source§fn white(&self) -> FgColorDisplay<'_, White, Self>
fn white(&self) -> FgColorDisplay<'_, White, Self>
Source§fn on_white(&self) -> BgColorDisplay<'_, White, Self>
fn on_white(&self) -> BgColorDisplay<'_, White, Self>
Source§fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
Source§fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
Source§fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
Source§fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
Source§fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
Source§fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
Source§fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
Source§fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
Source§fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
Source§fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
Source§fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
Source§fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
Source§fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
Source§fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
Source§fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
Source§fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
Source§fn bold(&self) -> BoldDisplay<'_, Self>
fn bold(&self) -> BoldDisplay<'_, Self>
Source§fn dimmed(&self) -> DimDisplay<'_, Self>
fn dimmed(&self) -> DimDisplay<'_, Self>
Source§fn italic(&self) -> ItalicDisplay<'_, Self>
fn italic(&self) -> ItalicDisplay<'_, Self>
Source§fn underline(&self) -> UnderlineDisplay<'_, Self>
fn underline(&self) -> UnderlineDisplay<'_, Self>
Source§fn blink(&self) -> BlinkDisplay<'_, Self>
fn blink(&self) -> BlinkDisplay<'_, Self>
Source§fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
Source§fn reversed(&self) -> ReversedDisplay<'_, Self>
fn reversed(&self) -> ReversedDisplay<'_, Self>
Source§fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
Source§fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::fg or
a color-specific method, such as OwoColorize::green, Read moreSource§fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::bg or
a color-specific method, such as OwoColorize::on_yellow, Read more