mirror of
https://github.com/cargo-bins/cargo-binstall.git
synced 2025-05-12 15:00:04 +00:00
Add initial data structure for dist-manifest.json
Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com>
This commit is contained in:
parent
ce5b3dbb9a
commit
3b8b4b940f
4 changed files with 59 additions and 1 deletions
51
crates/binstalk-fetchers/src/dist_manifest_fetcher.rs
Normal file
51
crates/binstalk-fetchers/src/dist_manifest_fetcher.rs
Normal file
|
@ -0,0 +1,51 @@
|
|||
use std::collections::BTreeMap;
|
||||
|
||||
use binstalk_downloader::remote::{Client, Response};
|
||||
use cargo_dist_schema::Format;
|
||||
use compact_str::CompactString;
|
||||
|
||||
use crate::FetchError;
|
||||
|
||||
#[derive(Clone, Debug)]
|
||||
struct Binary {
|
||||
/// Key: target, value: artifact
|
||||
artifacts: BTreeMap<CompactString, Artifact>,
|
||||
}
|
||||
|
||||
/// An tarball/zip artifact.
|
||||
#[derive(Clone, Debug)]
|
||||
struct Artifact {
|
||||
/// Filename of artifact on release artifacts,
|
||||
/// need to infer the format.
|
||||
filename: CompactString,
|
||||
/// Path to the executable within the tarbal/zip.
|
||||
path_to_exe: CompactString,
|
||||
|
||||
/// Filename of the checksum file.
|
||||
checksum_filename: Option<CompactString>,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug)]
|
||||
pub(super) enum DistManifest {
|
||||
NotSupported(Format),
|
||||
/// Key: name of the binary
|
||||
Binaries(BTreeMap<CompactString, Binary>),
|
||||
}
|
||||
|
||||
impl DistManifest {
|
||||
async fn parse(response: Response) -> Result<Self, FetchError> {
|
||||
let manifest: cargo_dist_schema::DistManifest = response.json().await?;
|
||||
let format = manifest.format();
|
||||
|
||||
if format.unsupported() {
|
||||
return Ok(Self::NotSupported(format));
|
||||
}
|
||||
|
||||
todo!()
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: Cache `DistManifest` in a new global http cacher for the fetchers
|
||||
// Also cache the artifacts downloaded and extracted
|
||||
|
||||
pub struct GhDistManifest {}
|
Loading…
Add table
Add a link
Reference in a new issue