sync_readme/content/
badge.rs1use crate::config::{Codecov, CustomBadge, Package};
2
3pub fn create(package: &Package) -> String {
4 let mut badges = Vec::new();
5
6 let Package {
7 name,
8 version,
9 license,
10 metadata,
11 ..
12 } = &package;
13
14 let badge_style = &metadata.badge_style;
15
16 if metadata.badges.docs_rs {
17 badges.push(format!("[](https://docs.rs/{name}/{version})"));
18 }
19
20 if metadata.badges.crates_io.release() {
21 badges.push(format!("[](https://crates.io/crates/{name}/{version})"));
22 }
23
24 if metadata.badges.license
25 && let Some(license) = license
26 {
27 badges.push(format!(
28 "",
29 escaped_license = license.replace(' ', "%20").replace('-', "--"),
30 ));
31 }
32
33 if metadata.badges.crates_io.size() {
34 badges.push(format!(
35 ""
36 ));
37 }
38
39 if metadata.badges.crates_io.downloads() {
40 badges.push(format!(""));
41 }
42
43 match &metadata.badges.codecov {
44 Codecov::Simple(false) => {},
45 Codecov::Simple(true) => {
46 badges.push(format!("[](https://app.codecov.io/gh/scufflecloud/scuffle)"))
47 },
48 Codecov::Complex { component } => {
49 badges.push(format!("[](https://app.codecov.io/gh/scufflecloud/scuffle)"))
50 },
51 }
52
53 for CustomBadge { link, name: text, url } in &metadata.custom_badges {
54 let badge = format!("");
55 if let Some(link) = link {
56 badges.push(format!("[{badge}]({link})"))
57 } else {
58 badges.push(badge);
59 }
60 }
61
62 badges.join("\n")
63}