soar-dl 0.12.1

Downloader for soar package manager
Documentation
use crate::error::DownloadError;

pub trait Asset: Clone {
    fn name(&self) -> &str;
    fn size(&self) -> Option<u64>;
    fn url(&self) -> &str;
}

pub trait Release {
    type Asset: Asset;

    fn name(&self) -> &str;
    fn tag(&self) -> &str;
    fn is_prerelease(&self) -> bool;
    fn published_at(&self) -> &str;
    fn body(&self) -> Option<&str>;
    fn assets(&self) -> &[Self::Asset];
}

pub trait Platform {
    type Release: Release;

    const API_BASE: &'static str;
    const TOKEN_ENV: [&str; 2];

    fn fetch_releases(
        project: &str,
        tag: Option<&str>,
    ) -> Result<Vec<Self::Release>, DownloadError>;
}