Sha256: f161df8f21fd3f894cc97f372cafa3aece729218387811a5e2c984c74e82b47e

Contents?: true

Size: 890 Bytes

Versions: 17

Compression:

Stored size: 890 Bytes

Contents

# frozen_string_literal: true

module CiToolkit
  # Utility class to parse a Jira ticket from a string
  class Jira
    attr_reader :ticket

    def initialize(
      github_pr = CiToolkit::DvcsPrFactory.create(CiToolkit::BitriseEnv.new),
      git = CiToolkit::Git.new,
      ticket_regex_keys = ENV["SUPPORTED_JIRA_PROJECT_KEYS_REGEX"]
    )
      @ticket_regex_keys = ticket_regex_keys
      @ticket = parse_ticket(github_pr.nil? ? "" : github_pr.title) || parse_ticket(git.nil? ? "" : git.branch)
    end

    private

    def parse_ticket(string)
      matches = string.match(ticket_regex)
      key = matches&.[](:project_key)
      number = matches&.[](:ticket_number)
      "#{key}-#{number}" unless key.nil? || key.empty? || number.nil? || number.empty?
    end

    def ticket_regex
      /.*?(?<project_key>#{@ticket_regex_keys})[- ]?(?<ticket_number>[0-9]+)/i
    end
  end
end

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
ci_toolkit-1.5.22 lib/ci_toolkit/jira.rb
ci_toolkit-1.5.21 lib/ci_toolkit/jira.rb
ci_toolkit-1.5.20 lib/ci_toolkit/jira.rb
ci_toolkit-1.5.19 lib/ci_toolkit/jira.rb
ci_toolkit-1.5.17 lib/ci_toolkit/jira.rb
ci_toolkit-1.5.16 lib/ci_toolkit/jira.rb
ci_toolkit-1.5.15 lib/ci_toolkit/jira.rb
ci_toolkit-1.5.14 lib/ci_toolkit/jira.rb
ci_toolkit-1.5.13 lib/ci_toolkit/jira.rb
ci_toolkit-1.5.12 lib/ci_toolkit/jira.rb
ci_toolkit-1.5.11 lib/ci_toolkit/jira.rb
ci_toolkit-1.5.10 lib/ci_toolkit/jira.rb
ci_toolkit-1.5.9 lib/ci_toolkit/jira.rb
ci_toolkit-1.5.8 lib/ci_toolkit/jira.rb
ci_toolkit-1.5.7 lib/ci_toolkit/jira.rb
ci_toolkit-1.5.6 lib/ci_toolkit/jira.rb
ci_toolkit-1.5.5 lib/ci_toolkit/jira.rb