mirror of
https://github.com/cargo-bins/cargo-binstall.git
synced 2025-04-24 14:28:42 +00:00
Feature: SupportdDisable of strategies for crate using Cargo.toml
(#1828)
* Refactor: Move `Strategy` to `binstalk-types` Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com> * Add serialisation test for `Strategy` Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com> * Add support to disable strategies via crate `Cargo.toml` Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com> * Add e2e-test Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com> * Fix `Cargo.toml` disabled strategy checking for compile strategy Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com> * Optimize `resolve_inner`: Cache meta override Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com> * Add compile-time length checking for `Strategy` Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com> * More optimization Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com> * Fix order of override: cli options alwayus takes precedence Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com> * Add missing manifest for e2e-test Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com> --------- Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com>
This commit is contained in:
parent
09d61d081d
commit
3f29fbe83a
11 changed files with 206 additions and 57 deletions
|
@ -1,6 +1,7 @@
|
|||
use std::{borrow::Cow, fmt, iter, path::Path, sync::Arc};
|
||||
|
||||
use binstalk_git_repo_api::gh_api_client::{GhApiError, GhReleaseArtifact, GhReleaseArtifactUrl};
|
||||
use binstalk_types::cargo_toml_binstall::Strategy;
|
||||
use compact_str::{CompactString, ToCompactString};
|
||||
use either::Either;
|
||||
use leon::Template;
|
||||
|
@ -396,6 +397,10 @@ impl super::Fetcher for GhCrateMeta {
|
|||
FETCHER_GH_CRATE_META
|
||||
}
|
||||
|
||||
fn strategy(&self) -> Strategy {
|
||||
Strategy::CrateMetaData
|
||||
}
|
||||
|
||||
fn is_third_party(&self) -> bool {
|
||||
false
|
||||
}
|
||||
|
|
|
@ -4,7 +4,7 @@ use std::{path::Path, sync::Arc, time::Duration};
|
|||
|
||||
use binstalk_downloader::{download::DownloadError, remote::Error as RemoteError};
|
||||
use binstalk_git_repo_api::gh_api_client::{GhApiError, GhRepo, RepoInfo as GhRepoInfo};
|
||||
use binstalk_types::cargo_toml_binstall::SigningAlgorithm;
|
||||
use binstalk_types::cargo_toml_binstall::{SigningAlgorithm, Strategy};
|
||||
use thiserror::Error as ThisError;
|
||||
use tokio::{sync::OnceCell, task::JoinError, time::sleep};
|
||||
pub use url::ParseError as UrlParseError;
|
||||
|
@ -134,6 +134,9 @@ pub trait Fetcher: Send + Sync {
|
|||
/// [`Fetcher::fetch_and_extract`].
|
||||
fn fetcher_name(&self) -> &'static str;
|
||||
|
||||
/// The strategy used by this fetcher
|
||||
fn strategy(&self) -> Strategy;
|
||||
|
||||
/// Should return true if the remote is from a third-party source
|
||||
fn is_third_party(&self) -> bool;
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@ use std::{
|
|||
};
|
||||
|
||||
use binstalk_downloader::remote::Method;
|
||||
use binstalk_types::cargo_toml_binstall::{PkgFmt, PkgMeta, PkgSigning};
|
||||
use binstalk_types::cargo_toml_binstall::{PkgFmt, PkgMeta, PkgSigning, Strategy};
|
||||
use tokio::sync::OnceCell;
|
||||
use tracing::{error, info, trace};
|
||||
use url::Url;
|
||||
|
@ -252,6 +252,10 @@ by rust officially."#,
|
|||
"QuickInstall"
|
||||
}
|
||||
|
||||
fn strategy(&self) -> Strategy {
|
||||
Strategy::QuickInstall
|
||||
}
|
||||
|
||||
fn is_third_party(&self) -> bool {
|
||||
true
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue