use crate::component::Component;
use serde::{Deserialize, Serialize};
use std::path::PathBuf;
use url::Url;
mod env;
mod hashes;
mod requirement;
pub use env::Env;
pub use hashes::Hashes;
pub use requirement::Requirement;
#[derive(Serialize, Deserialize, Clone, Debug)]
#[serde(rename_all = "camelCase")]
pub struct File {
pub(crate) path: PathBuf,
pub(crate) hashes: Hashes,
pub(crate) env: Env,
pub(crate) downloads: Vec<Url>,
pub file_size: usize,
}
impl From<Component> for File {
fn from(component: Component) -> Self {
Self {
path: component.runtime_path(),
hashes: component.hashes,
env: component.environment,
downloads: vec![component.download_url],
file_size: component.file_size,
}
}
}