class MakeRelease::Stories

Attributes

branches[RW]
dir[RW]
directory[RW]
stories[R]

Public Class Methods

new(opts = Options.defaults) click to toggle source
# File lib/make_release/stories.rb, line 7
def initialize(opts = Options.defaults)
  @options = opts
  @stories = opts[:stories] || {}
  @directory = opts[:directory] || '.'
  @branches = _get_branches(opts[:master], opts[:source])

  _get_stories if @stories == {}
end

Public Instance Methods

add_story(branch, story) click to toggle source
# File lib/make_release/stories.rb, line 56
def add_story(branch, story)
  (@stories[branch] ||= []).push story
end
diff() click to toggle source
# File lib/make_release/stories.rb, line 68
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/make_release/stories.rb, line 20
def each
  @stories.values.each do |stories|
    stories.each { |story| yield story }
  end
end
find(branch, sha) click to toggle source
# File lib/make_release/stories.rb, line 60
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
master() click to toggle source
# File lib/make_release/stories.rb, line 30
def master
  @branches[0]
end
master=(new_master) click to toggle source
# File lib/make_release/stories.rb, line 34
def master=(new_master)
  @stories[master] = []
  @branches[0] = new_master
  _get_stories(new_master)
end
shas() click to toggle source
# File lib/make_release/stories.rb, line 40
def shas
  source.map do |branch|
    stories[branch].map { |s| s.sha }
  end.flatten.reverse
end
source() click to toggle source
# File lib/make_release/stories.rb, line 26
def source
  @branches[1, @branches.size]
end
source_stories() click to toggle source
# File lib/make_release/stories.rb, line 46
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/make_release/stories.rb, line 83
def _get_branches(master, sources)
  branches = [] << (master.nil? ? 'master' : master)
  branches << (sources.empty? ? ['develop'] : sources)
  branches.flatten
end
_get_stories(branches = @branches) click to toggle source
# File lib/make_release/stories.rb, line 89
def _get_stories(branches = @branches)
  git = Git.new(@directory)

  branches.to_a.each do |branch|
    git.log(branch).each do |line|
      add_story branch, Story.new(line)
    end
  end
end