mirror of
https://github.com/cargo-bins/cargo-binstall.git
synced 2025-06-07 19:26:36 +00:00
Refactor: Extract new crate binstalk-types plus other misc refactor and optimization (#535)
* Refactor: Extract new crate binstalk-types * Optimize: Rm field `CrateInfo::other` which also removes dep serde-tuple-vec-map and serde-json from binstalk-types. This also makes `CrateInfo` easier to use, more generic and can be used over any `Serializer`, not just `serde_json::Value`. * Mark all errors in `binstalk-manifests` as non_exhaustive * Reduce size of `CvsParseError` by using `Box<str>` instead of `String` for variant `UnknownSourceType`. * Reduce size of `CratesTomlParseError` to 16 bytes on 64bit platform by boxing variants `TomlWrite` and `CvsParse` as these two fields are significantly larger than other variants. * Unify import style in mod `binstall_crates_v1` * Replace dep binstalk-manifests with binstalk-types in binstalk-downloader to reduce its transitive dependencies and enables binstalk-downloader to be built in parallel to binstak-manifests. * Replace dep binstalk-manifests with binstalk-types in binstalk to reduce transitive dependencies and enables binstalk to be built in parallel to binstalk-manifests. This is benefitial because binstalk-manifests pulls in toml_edit, which could takes up to 15s to be built on M1 (7-9s for codegen). * Add dep binstalk-manifests to crates/bin * Update dependabot and GHA release-pr Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com>
This commit is contained in:
parent
58326a6085
commit
d9cc3ce219
24 changed files with 372 additions and 76 deletions
|
@ -1,5 +1,6 @@
|
|||
use std::{borrow::Cow, fmt, str::FromStr};
|
||||
|
||||
use binstalk_types::crate_info::cratesio_url;
|
||||
use compact_str::CompactString;
|
||||
use miette::Diagnostic;
|
||||
use semver::Version;
|
||||
|
@ -7,10 +8,7 @@ use serde::{Deserialize, Deserializer, Serialize, Serializer};
|
|||
use thiserror::Error;
|
||||
use url::Url;
|
||||
|
||||
use crate::{
|
||||
crate_info::{CrateInfo, CrateSource, SourceType},
|
||||
helpers::cratesio_url,
|
||||
};
|
||||
use crate::crate_info::{CrateInfo, CrateSource, SourceType};
|
||||
|
||||
#[derive(Clone, Debug, Ord, PartialOrd, Eq, PartialEq)]
|
||||
pub struct CrateVersionSource {
|
||||
|
@ -72,8 +70,8 @@ impl FromStr for CrateVersionSource {
|
|||
["registry", url] => Source::Registry(Url::parse(url)?),
|
||||
[kind, arg] => {
|
||||
return Err(CvsParseError::UnknownSourceType {
|
||||
kind: kind.to_string(),
|
||||
arg: arg.to_string(),
|
||||
kind: kind.to_string().into_boxed_str(),
|
||||
arg: arg.to_string().into_boxed_str(),
|
||||
})
|
||||
}
|
||||
_ => return Err(CvsParseError::BadSource),
|
||||
|
@ -90,6 +88,7 @@ impl FromStr for CrateVersionSource {
|
|||
}
|
||||
|
||||
#[derive(Debug, Diagnostic, Error)]
|
||||
#[non_exhaustive]
|
||||
pub enum CvsParseError {
|
||||
#[error(transparent)]
|
||||
UrlParse(#[from] url::ParseError),
|
||||
|
@ -98,7 +97,7 @@ pub enum CvsParseError {
|
|||
VersionParse(#[from] semver::Error),
|
||||
|
||||
#[error("unknown source type {kind}+{arg}")]
|
||||
UnknownSourceType { kind: String, arg: String },
|
||||
UnknownSourceType { kind: Box<str>, arg: Box<str> },
|
||||
|
||||
#[error("bad source format")]
|
||||
BadSource,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue