lib/jenkins_tracker/base.rb in jenkins_tracker-0.3.0 vs lib/jenkins_tracker/base.rb in jenkins_tracker-0.3.1

- old
+ new

@@ -1,8 +1,8 @@ module JenkinsTracker class Base - include Util + #include Util attr_reader :changelog, :tracker_client, :job_name, :build_url def initialize(options = {}) raise FileNotFoundError, "Changelog file not found at: #{options[:changelog_file]}" unless File.file?(options[:changelog_file]) @@ -15,13 +15,32 @@ @job_name = options[:job_name] @build_url = options[:build_url] end def integrate_job_with_tracker(project_id) - parse_changelog(changelog).each do |change| + parse_changelog.each do |change| note = "*#{change.commit_message}* integrated in *#{job_name}* (#{build_url})" tracker_client.add_note_to_story(project_id, change.story_id, note) end + end + + def parse_changelog + results = [] + + changelog.scan(/(\[[#a-zA-Z0-9\s]+\])(.*)/) do |ids, msg| + parse_tracker_story_ids(ids).each do |id| + results << ChangelogItem.new(:story_id => id, :commit_message => "#{ids}#{msg}".strip) + end + end + + results.uniq + end + + + private + + def parse_tracker_story_ids(str) + str.strip.gsub(/[\[#\]]/, '').split(' ').map(&:to_i).reject { |i| i == 0 } end end end