Sha256: 296934650330ce1691fcf9b4f0ec277e94d4be16952e00e76b88ebbd3c950c0b

Contents?: true

Size: 901 Bytes

Versions: 7

Compression:

Stored size: 901 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.fetch("SUPPORTED_JIRA_PROJECT_KEYS_REGEX", nil)
    )
      @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

7 entries across 7 versions & 1 rubygems

Version Path
ci_toolkit-1.6.4 lib/ci_toolkit/jira.rb
ci_toolkit-1.6.3 lib/ci_toolkit/jira.rb
ci_toolkit-1.6.2 lib/ci_toolkit/jira.rb
ci_toolkit-1.6.1 lib/ci_toolkit/jira.rb
ci_toolkit-1.6.0 lib/ci_toolkit/jira.rb
ci_toolkit-1.5.24 lib/ci_toolkit/jira.rb
ci_toolkit-1.5.23 lib/ci_toolkit/jira.rb