/* * Copyright 2016-2018 Doug Goldstein * * Licensed under the Apache License, Version 2.0 or the MIT license * , at your * option. This file may not be copied, modified, or distributed * except according to those terms. */ use cargo_metadata::Package; use itertools::Itertools; use serde::Serialize; use std::collections::BTreeSet; #[derive(Serialize)] pub struct EbuildConfig { pub name: String, pub version: String, pub inherit: Option, pub homepage: String, pub description: String, pub license: String, pub restrict: Option, pub slot: Option, pub keywords: Option, pub iuse: Option, pub depend: Option, pub rdepend: Option, pub pdepend: Option, pub depend_is_rdepend: bool, pub crates: Vec, } impl EbuildConfig { pub fn from_package(package: Package, crates: Vec, licenses: BTreeSet) -> Self { // package description let desc = package .description .as_ref() .cloned() .unwrap_or_else(|| package.name.clone()); // package homepage let homepage = package.repository.unwrap_or_else(|| { String::from("homepage field in Cargo.toml inaccessible to cargo metadata") }); EbuildConfig { name: package.name, version: package.version.to_string(), inherit: None, homepage, description: desc, license: licenses.iter().format(" ").to_string(), restrict: None, slot: None, keywords: None, iuse: None, depend: None, rdepend: None, pdepend: None, depend_is_rdepend: true, crates, } } }