mirror of
https://github.com/cargo-bins/cargo-binstall.git
synced 2025-06-08 03:36:37 +00:00
fix updating of installed crates manifest on custom sparse registry (#2178)
* Add either v1.15.0 to binstalk-registry Signed-off-by: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> * Add `SourceType::Sparse` Signed-off-by: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> * Add `Registry::crate_source` Signed-off-by: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> * Use `Registry::crate_siouy Signed-off-by: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> * Add support for `Source::Sparse` Signed-off-by: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> * Optimize `CratesToml::append_to_file` Bulkify remove Signed-off-by: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> * Fix typing in cargo_crates_v1.rs and optimize append_to_file Use `Vec::reserve_exact ` in `append_to_file` to avoid unnecessary allocation Signed-off-by: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> * Fix Registry::url Signed-off-by: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> * Fix unused variable in `Registry::crate_source` Signed-off-by: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> * Fix fmt in cargo_crates_v1.rs Signed-off-by: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> * Fix fmt in binstalk-registry/src/lib.rs Signed-off-by: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> * Fix fmt in cargo_crates_v1.rs Signed-off-by: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> * Refactor: Extract new fn CratesToml::add_crate Signed-off-by: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> * Fix `<Source as Display>::fmt` impl for `Source::Sprase` Add `/` to the end of the url if it doesn't have one Signed-off-by: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> * Fix crate_version_source.rs Signed-off-by: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> * Fix lifetime of `CrateToml::add_crate` API Signed-off-by: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> * Fix lifetime of `CratesToml<'::add_crate` API Signed-off-by: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> * cargo fmt crate_version_source.rs Signed-off-by: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> * Fix `Registery::crate_source` Match sparse/git crates.io registry to standardrised `CrateSource::cratesio_registry()`. Also optimize it to avoid unnecessary `.to_string()` and `Url::parse` for sparse registry. Signed-off-by: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> * Fix `GitRegistry::url` ret type Signed-off-by: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> * Fix `SparseRegistery::url` return type Signed-off-by: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> * Fix typing in `Registry::crate_source` Signed-off-by: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> * Rm unused import in sparse_registry.rs Signed-off-by: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> * Rm unused import in git_registry.rs Signed-off-by: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> * cargo fmt binstalk-registry/src/lib.rs Signed-off-by: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> * Rm unused dep either from binstalk-registry Signed-off-by: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> --------- Signed-off-by: Jiahao XU <30436523+NobodyXu@users.noreply.github.com>
This commit is contained in:
parent
e8c9cc3599
commit
25a52038ef
7 changed files with 101 additions and 56 deletions
|
@ -1,4 +1,4 @@
|
|||
use std::{fmt::Display, io, path::PathBuf, sync::Arc};
|
||||
use std::{io, path::PathBuf, sync::Arc};
|
||||
|
||||
use binstalk_downloader::remote::Client;
|
||||
use binstalk_types::cargo_toml_binstall::Meta;
|
||||
|
@ -73,7 +73,7 @@ impl GitRegistry {
|
|||
}))
|
||||
}
|
||||
|
||||
pub fn url(&self) -> impl Display + '_ {
|
||||
pub fn url(&self) -> &GitUrl {
|
||||
&self.0.url
|
||||
}
|
||||
|
||||
|
|
|
@ -7,7 +7,11 @@ use binstalk_downloader::{
|
|||
download::DownloadError,
|
||||
remote::{Client, Error as RemoteError},
|
||||
};
|
||||
use binstalk_types::cargo_toml_binstall::Meta;
|
||||
use binstalk_types::{
|
||||
cargo_toml_binstall::Meta,
|
||||
crate_info::{CrateSource, SourceType},
|
||||
maybe_owned::MaybeOwned,
|
||||
};
|
||||
use cargo_toml_workspace::cargo_toml::{Error as CargoTomlError, Manifest};
|
||||
use compact_str::CompactString;
|
||||
use leon::{ParseError, RenderError};
|
||||
|
@ -80,7 +84,7 @@ pub enum RegistryError {
|
|||
CargoManifest(#[from] Box<CargoTomlError>),
|
||||
|
||||
#[error("Failed to parse url: {0}")]
|
||||
UrlParse(#[from] url::ParseError),
|
||||
UrlParse(#[from] UrlParseError),
|
||||
|
||||
#[error(transparent)]
|
||||
Download(#[from] DownloadError),
|
||||
|
@ -195,6 +199,38 @@ impl Registry {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// Get url of the regsitry
|
||||
pub fn url(&self) -> Result<MaybeOwned<'_, Url>, UrlParseError> {
|
||||
match self {
|
||||
#[cfg(feature = "git")]
|
||||
Registry::Git(registry) => {
|
||||
Url::parse(®istry.url().to_string()).map(MaybeOwned::Owned)
|
||||
}
|
||||
Registry::Sparse(registry) => Ok(MaybeOwned::Borrowed(registry.url())),
|
||||
}
|
||||
}
|
||||
|
||||
/// Get crate source of this registry
|
||||
pub fn crate_source(&self) -> Result<CrateSource, UrlParseError> {
|
||||
let registry = self.url()?;
|
||||
let source_type = match self {
|
||||
#[cfg(feature = "git")]
|
||||
Registry::Git(_) => SourceType::Git,
|
||||
Registry::Sparse(_) => SourceType::Sparse,
|
||||
};
|
||||
|
||||
Ok(match (registry.as_str(), source_type) {
|
||||
("https://index.crates.io/", SourceType::Sparse)
|
||||
| ("https://github.com/rust-lang/crates.io-index", SourceType::Git) => {
|
||||
CrateSource::cratesio_registry()
|
||||
}
|
||||
_ => CrateSource {
|
||||
source_type,
|
||||
url: MaybeOwned::Owned(registry.into_owned()),
|
||||
},
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
impl fmt::Display for Registry {
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
use std::fmt::Display;
|
||||
|
||||
use binstalk_downloader::remote::{Client, Error as RemoteError};
|
||||
use binstalk_types::cargo_toml_binstall::Meta;
|
||||
use cargo_toml_workspace::cargo_toml::Manifest;
|
||||
|
@ -30,7 +28,7 @@ impl SparseRegistry {
|
|||
}
|
||||
}
|
||||
|
||||
pub fn url(&self) -> impl Display + '_ {
|
||||
pub fn url(&self) -> &Url {
|
||||
&self.url
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue