Sha256: d8312f3cd41fa323447f28b71ed5be63285f8b2aa19c0eda8d34c11c6a6f9986

Contents?: true

Size: 855 Bytes

Versions: 40

Compression:

Stored size: 855 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::GithubPr.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

40 entries across 40 versions & 1 rubygems

Version Path
ci_toolkit-1.5.4 lib/ci_toolkit/jira.rb
ci_toolkit-1.5.3 lib/ci_toolkit/jira.rb
ci_toolkit-1.5.2 lib/ci_toolkit/jira.rb
ci_toolkit-1.5.1 lib/ci_toolkit/jira.rb
ci_toolkit-1.5.0 lib/ci_toolkit/jira.rb
ci_toolkit-1.4.13 lib/ci_toolkit/jira.rb
ci_toolkit-1.4.12 lib/ci_toolkit/jira.rb
ci_toolkit-1.4.11 lib/ci_toolkit/jira.rb
ci_toolkit-1.4.10 lib/ci_toolkit/jira.rb
ci_toolkit-1.4.9 lib/ci_toolkit/jira.rb
ci_toolkit-1.4.8 lib/ci_toolkit/jira.rb
ci_toolkit-1.4.7 lib/ci_toolkit/jira.rb
ci_toolkit-1.4.6 lib/ci_toolkit/jira.rb
ci_toolkit-1.4.4 lib/ci_toolkit/jira.rb
ci_toolkit-1.4.3 lib/ci_toolkit/jira.rb
ci_toolkit-1.4.2 lib/ci_toolkit/jira.rb
ci_toolkit-1.4.1 lib/ci_toolkit/jira.rb
ci_toolkit-1.4.0 lib/ci_toolkit/jira.rb
ci_toolkit-1.3.21 lib/ci_toolkit/jira.rb
ci_toolkit-1.3.20 lib/ci_toolkit/jira.rb