From 82c256200451e011a575943b2e2b5db555aada19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Guth?= Date: Fri, 31 Jan 2020 17:19:25 +0100 Subject: [PATCH] Add support for Github Workflow badges (#39) * Add support for Github Workflow badges * Replace deprecated `trim_right` with `trim_end` --- src/config/badges.rs | 17 +++++++++++++++++ src/config/manifest.rs | 9 +++++---- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/src/config/badges.rs b/src/config/badges.rs index d3347e8..b9dd2e7 100644 --- a/src/config/badges.rs +++ b/src/config/badges.rs @@ -4,6 +4,7 @@ use percent_encoding as pe; const BADGE_BRANCH_DEFAULT: &str = "master"; const BADGE_SERVICE_DEFAULT: &str = "github"; +const BADGE_WORKFLOW_DEFAULT: &str = "main"; type Attrs = BTreeMap; @@ -77,6 +78,22 @@ pub fn travis_ci(attrs: Attrs) -> String { ) } +pub fn github(attrs: Attrs) -> String { + let repo = &attrs["repository"]; + let workflow = attrs + .get("workflow") + .map(|i| i.as_ref()) + .unwrap_or(BADGE_WORKFLOW_DEFAULT); + + format!( + "[![Workflow Status](https://github.com/{repo}/workflows/{workflow}/badge.svg)]\ + (https://github.com/{repo}/actions?query=workflow%3A%22{workflow_plus}%22)", + repo = repo, + workflow = percent_encode(workflow), + workflow_plus = percent_encode(&str::replace(workflow, " ", "+")) + ) +} + pub fn codecov(attrs: Attrs) -> String { let repo = &attrs["repository"]; let branch = attrs diff --git a/src/config/manifest.rs b/src/config/manifest.rs index 6d856ac..58a4f12 100644 --- a/src/config/manifest.rs +++ b/src/config/manifest.rs @@ -86,13 +86,14 @@ fn process_badges(badges: BTreeMap>) -> Vec Some((1, badges::circle_ci(attrs))), "gitlab" => Some((2, badges::gitlab(attrs))), "travis-ci" => Some((3, badges::travis_ci(attrs))), - "codecov" => Some((4, badges::codecov(attrs))), - "coveralls" => Some((5, badges::coveralls(attrs))), + "github" => Some((4, badges::github(attrs))), + "codecov" => Some((5, badges::codecov(attrs))), + "coveralls" => Some((6, badges::coveralls(attrs))), "is-it-maintained-issue-resolution" => { - Some((6, badges::is_it_maintained_issue_resolution(attrs))) + Some((7, badges::is_it_maintained_issue_resolution(attrs))) } "is-it-maintained-open-issues" => { - Some((7, badges::is_it_maintained_open_issues(attrs))) + Some((8, badges::is_it_maintained_open_issues(attrs))) } _ => return None, })