class JIRADiff::Stories
Attributes
branches[RW]
dir[RW]
directory[RW]
includes[R]
stories[R]
Public Class Methods
new(opts = Options.defaults)
click to toggle source
# File lib/jira_diff/stories.rb, line 7 def initialize(opts = Options.defaults) @branches = _get_branches(opts[:master], opts[:source]) @directory = opts[:directory] || '.' @includes = _get_includes(opts.includes) @options = opts @stories = opts[:stories] || {} _get_stories if @stories == {} end
Public Instance Methods
add_include(story)
click to toggle source
# File lib/jira_diff/stories.rb, line 32 def add_include(story) @includes << story end
add_story(branch, story)
click to toggle source
# File lib/jira_diff/stories.rb, line 66 def add_story(branch, story) (@stories[branch] ||= []).push story end
diff()
click to toggle source
# File lib/jira_diff/stories.rb, line 78 def diff stories = [] opts = @options source_stories.each do |story| stories << story unless find(master, story.sha) end opts.source = ['diff'] opts.stories = {'diff' => stories.flatten} Stories.new opts end
each() { |story| ... }
click to toggle source
# File lib/jira_diff/stories.rb, line 22 def each @stories.values.each do |stories| stories.each { |story| yield story } end end
find(branch, sha)
click to toggle source
# File lib/jira_diff/stories.rb, line 70 def find(branch, sha) raise ArgumentError, "Invalid environment #{branch}" unless @branches.include?(branch) @stories[branch].each { |story| return true if story.sha == sha } false end
includes=(file)
click to toggle source
# File lib/jira_diff/stories.rb, line 36 def includes=(file) @includes = _get_includes(file) end
master()
click to toggle source
# File lib/jira_diff/stories.rb, line 40 def master @branches[0] end
master=(new_master)
click to toggle source
# File lib/jira_diff/stories.rb, line 44 def master=(new_master) @stories[master] = [] @branches[0] = new_master _get_stories(new_master) end
shas()
click to toggle source
# File lib/jira_diff/stories.rb, line 50 def shas source.map do |branch| stories[branch].map { |s| s.sha } end.flatten.reverse end
source()
click to toggle source
# File lib/jira_diff/stories.rb, line 28 def source @branches[1, @branches.size] end
source_stories()
click to toggle source
# File lib/jira_diff/stories.rb, line 56 def source_stories story_index = {} source.each do |branch| stories[branch].each { |s| story_index[s.sha] = s } end story_index.values end
Private Instance Methods
_get_branches(master, sources)
click to toggle source
# File lib/jira_diff/stories.rb, line 93 def _get_branches(master, sources) branches = [] << (master.nil? ? 'master' : master) branches << (sources.empty? ? ['develop'] : sources) branches.flatten end
_get_includes(includes_file)
click to toggle source
# File lib/jira_diff/stories.rb, line 99 def _get_includes(includes_file) lines = [] if includes_file && File.exist?(includes_file) File.open(includes_file, 'r') do |f| f.each_line { |line| lines << $1 if line =~ /(\w+\-\d+)/ } end end lines end
_get_stories(branches = @branches)
click to toggle source
# File lib/jira_diff/stories.rb, line 109 def _get_stories(branches = @branches) git = Git.new(@directory) branches.to_a.each do |branch| puts "checking #{branch}" if @options.debug git.log(branch).each do |line| add_story branch, Story.new(line) end end end