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
- #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
#branch_badge(branch, repo: nil) ⇒ Object
17 18 19 20 21 22 23 24 25 26 |
# File 'lib/usps/support/helpers/badges_helper.rb', line 17 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
28 29 30 31 32 33 |
# File 'lib/usps/support/helpers/badges_helper.rb', line 28 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
35 36 37 38 39 40 41 |
# File 'lib/usps/support/helpers/badges_helper.rb', line 35 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
43 44 45 46 47 48 |
# File 'lib/usps/support/helpers/badges_helper.rb', line 43 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
50 51 52 53 54 |
# File 'lib/usps/support/helpers/badges_helper.rb', line 50 def php_library_badge(repo, version) link_to("#{GITHUB}/#{repo}", target: :blank) do image_tag("#{SHIELDS}/badge/library-#{version}-#{version_color(version)}?logo=php&logoColor=white") end end |
#reachable_badge(host, reachable) ⇒ Object
99 100 101 102 103 |
# File 'lib/usps/support/helpers/badges_helper.rb', line 99 def reachable_badge(host, reachable) link_to("https://#{host}.aws.usps.org", target: :blank) do image_tag("#{SHIELDS}/badge/#{host}-#{reachable ? :Reachable : :Error}-#{reachable ? :brightgreen : :red}") end end |
#relative_date_badge(datetime, **options) ⇒ Object
105 106 107 108 109 110 111 112 113 114 115 116 117 118 |
# File 'lib/usps/support/helpers/badges_helper.rb', line 105 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
56 57 58 |
# File 'lib/usps/support/helpers/badges_helper.rb', line 56 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
60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
# File 'lib/usps/support/helpers/badges_helper.rb', line 60 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
79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 |
# File 'lib/usps/support/helpers/badges_helper.rb', line 79 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 15 |
# File 'lib/usps/support/helpers/badges_helper.rb', line 10 def tag_badge(version, label: nil, logo: nil) label = "#{badgeify(label)}-" if label.present? logo = "?logo=#{logo}" unless logo.nil? image_tag("#{SHIELDS}/badge/#{label}#{version}-#{version_color(version)}#{logo}") end |