Module: Legion::Extensions::Github::Absorbers::Helpers
- Defined in:
- lib/legion/extensions/github/absorbers/helpers.rb
Constant Summary collapse
- FLEET_LABELS =
%w[ fleet:received fleet:implementing fleet:pr-open fleet:escalated ].freeze
- IGNORED_ACTIONS =
%w[ closed transferred deleted pinned unpinned milestoned demilestoned ].freeze
- BOT_PATTERNS =
/\[bot\]\z/i
Instance Method Summary collapse
- #bot_generated?(payload) ⇒ Boolean
- #generate_work_item_id ⇒ Object
-
#has_fleet_label?(payload) ⇒ Boolean
rubocop:disable Naming/PredicatePrefix.
- #ignored?(payload) ⇒ Boolean
- #transport_connected? ⇒ Boolean
- #work_item_fingerprint(source:, ref:, title:) ⇒ Object
Instance Method Details
#bot_generated?(payload) ⇒ Boolean
22 23 24 25 26 27 28 29 30 |
# File 'lib/legion/extensions/github/absorbers/helpers.rb', line 22 def bot_generated?(payload) sender = payload['sender'] || payload[:sender] return false unless sender login = sender['login'] || sender[:login] || '' type = sender['type'] || sender[:type] || '' type.downcase == 'bot' || login.match?(BOT_PATTERNS) end |
#generate_work_item_id ⇒ Object
53 54 55 |
# File 'lib/legion/extensions/github/absorbers/helpers.rb', line 53 def generate_work_item_id SecureRandom.uuid end |
#has_fleet_label?(payload) ⇒ Boolean
rubocop:disable Naming/PredicatePrefix
32 33 34 35 36 37 38 39 40 41 |
# File 'lib/legion/extensions/github/absorbers/helpers.rb', line 32 def has_fleet_label?(payload) # rubocop:disable Naming/PredicatePrefix issue = payload['issue'] || payload[:issue] return false unless issue labels = issue['labels'] || issue[:labels] || [] labels.any? do |label| name = label['name'] || label[:name] FLEET_LABELS.include?(name) end end |
#ignored?(payload) ⇒ Boolean
43 44 45 46 |
# File 'lib/legion/extensions/github/absorbers/helpers.rb', line 43 def ignored?(payload) action = payload['action'] || payload[:action] IGNORED_ACTIONS.include?(action.to_s) end |
#transport_connected? ⇒ Boolean
57 58 59 60 61 62 63 |
# File 'lib/legion/extensions/github/absorbers/helpers.rb', line 57 def transport_connected? return false unless defined?(Legion::Settings) !!Legion::Settings.dig(:transport, :connected) rescue StandardError => _e false end |
#work_item_fingerprint(source:, ref:, title:) ⇒ Object
48 49 50 51 |
# File 'lib/legion/extensions/github/absorbers/helpers.rb', line 48 def work_item_fingerprint(source:, ref:, title:) input = "#{source}:#{ref}:#{title}" Digest::SHA256.hexdigest(input) end |