Module: Usps::Support::Helpers::BadgesHelper
- Defined in:
- lib/usps/support/helpers/badges_helper.rb
Overview
Generate badge images
Constant Summary collapse
- GITHUB =
'https://github.com/unitedstatespowersquadrons'- SHIELDS =
'https://img.shields.io'
Instance Method Summary collapse
- #badge(content, label: nil, color: :gray, **options) ⇒ Object
- #branch_badge(branch, repo: nil) ⇒ Object
- #commit_badge(commit, sha: true, repo: nil) ⇒ Object
- #gem_badge(gem, include_prereleases: false) ⇒ Object
- #npm_badge(package, include_prereleases: false) ⇒ Object
- #php_library_badge(repo, version) ⇒ Object
- #reachable_badge(host, reachable) ⇒ Object
- #relative_date_badge(datetime, **options) ⇒ Object
- #repo_badge(repo) ⇒ Object
- #suite_badge(suite = {}, repo = nil) ⇒ Object
- #suite_badge_color(suite = {}) ⇒ Object
- #tag_badge(version, label: nil, logo: nil) ⇒ Object
Instance Method Details
#badge(content, label: nil, color: :gray, **options) ⇒ Object
119 120 121 122 123 |
# File 'lib/usps/support/helpers/badges_helper.rb', line 119 def badge(content, label: nil, color: :gray, **) main = [label, content, color].compact.join('-') src = ["#{SHIELDS}/badge/#{main}", .compact_blank.to_query].compact_blank.join('?') image_tag(src) end |
#branch_badge(branch, repo: nil) ⇒ Object
16 17 18 19 20 21 22 23 24 25 |
# File 'lib/usps/support/helpers/badges_helper.rb', line 16 def branch_badge(branch, repo: nil) repo = nil if branch == 'main' color = branch == 'main' ? :blue : :orange name = badgeify(branch) image = image_tag("#{SHIELDS}/badge/#{name}-#{color}?logo=git&logoColor=white") return image unless repo link_to("#{GITHUB}/#{repo}/compare/#{branch}?expand=1", target: :blank) { image } end |
#commit_badge(commit, sha: true, repo: nil) ⇒ Object
27 28 29 30 31 32 |
# File 'lib/usps/support/helpers/badges_helper.rb', line 27 def commit_badge(commit, sha: true, repo: nil) image = image_tag("#{SHIELDS}/badge/#{'sha-' if sha}#{commit[...12]}-purple") return image unless repo link_to("#{GITHUB}/#{repo}/commit/#{commit}", target: :blank) { image } end |
#gem_badge(gem, include_prereleases: false) ⇒ Object
34 35 36 37 38 39 40 |
# File 'lib/usps/support/helpers/badges_helper.rb', line 34 def gem_badge(gem, include_prereleases: false) link_to("https://rubygems.org/gems/#{gem}", target: :blank) do image_tag( "#{SHIELDS}/gem/v/#{gem}?logo=rubygems&logoColor=white#{'&include_prereleases' if include_prereleases}" ) end end |
#npm_badge(package, include_prereleases: false) ⇒ Object
42 43 44 45 46 47 |
# File 'lib/usps/support/helpers/badges_helper.rb', line 42 def npm_badge(package, include_prereleases: false) link_to("https://www.npmjs.com/package/@unitedstatespowersquadrons/#{package}", target: :blank) do image_base = "#{SHIELDS}/npm/v/@unitedstatespowersquadrons/#{package}?logo=typescript&logoColor=white" image_tag("#{image_base}#{'&include_prereleases' if include_prereleases}") end end |
#php_library_badge(repo, version) ⇒ Object
49 50 51 52 53 |
# File 'lib/usps/support/helpers/badges_helper.rb', line 49 def php_library_badge(repo, version) link_to("#{GITHUB}/#{repo}", target: :blank) do badge(version, label: :library, color: version_color(version), logo: :php, logoColor: :white) end end |
#reachable_badge(host, reachable) ⇒ Object
98 99 100 101 102 |
# File 'lib/usps/support/helpers/badges_helper.rb', line 98 def reachable_badge(host, reachable) link_to("https://#{host}.aws.usps.org", target: :blank) do reachable ? badge(:Reachable, label: host, color: :brightgreen) : badge(:Error, label: host, color: :red) end end |
#relative_date_badge(datetime, **options) ⇒ Object
104 105 106 107 108 109 110 111 112 113 114 115 116 117 |
# File 'lib/usps/support/helpers/badges_helper.rb', line 104 def relative_date_badge(datetime, **) = case datetime when Integer then datetime when String then DateTime.strptime(datetime, [:format]).in_time_zone('Eastern Time (US & Canada)').to_i when DateTime, Time then datetime.to_i else raise "Unrecognized datetime format: #{datetime.inspect}" end query = .slice(:label, :logo) query[:color] = () image_tag("#{SHIELDS}/date/#{}?#{query.to_query}") end |
#repo_badge(repo) ⇒ Object
55 56 57 |
# File 'lib/usps/support/helpers/badges_helper.rb', line 55 def repo_badge(repo) link_to("#{GITHUB}/#{repo}", target: :blank) { image_tag("#{SHIELDS}/badge/repo-gray?logo=github") } end |
#suite_badge(suite = {}, repo = nil) ⇒ Object
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
# File 'lib/usps/support/helpers/badges_helper.rb', line 59 def suite_badge(suite = {}, repo = nil) return if suite.nil? branch = badgeify(suite[:head_branch]) description = if suite[:skip_ci] then 'Skipped' elsif suite[:status] == 'completed' then badgeify(suite[:conclusion]&.titleize) else badgeify(suite[:status]&.titleize) end image = image_tag( "#{SHIELDS}/badge/#{branch}-#{description || 'Unknown'}-#{suite_badge_color(suite)}?logo=github" ) return image if repo.nil? || suite[:conclusion] == 'success' link_to("#{GITHUB}/#{repo}/actions/workflows/main.yml", target: :blank) { image } end |
#suite_badge_color(suite = {}) ⇒ Object
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 |
# File 'lib/usps/support/helpers/badges_helper.rb', line 78 def suite_badge_color(suite = {}) return :lightgray if suite[:skip_ci] case suite[:status] when 'queued', 'in_progress', 'requested', 'waiting', 'pending' :yellow when 'completed' case suite[:conclusion] when 'success' then :brightgreen when 'failure', 'timed_out', 'action_required' then :red when 'cancelled' then :orange else # includes 'neutral', 'skipped' :lightgray end else :lightgray end end |
#tag_badge(version, label: nil, logo: nil) ⇒ Object
10 11 12 13 14 |
# File 'lib/usps/support/helpers/badges_helper.rb', line 10 def tag_badge(version, label: nil, logo: nil) label = badgeify(label) if label.present? badge(version, label:, color: version_color(version), logo:) end |