Class: MakeRelease::Stories

Inherits:
Object
  • Object
show all
Defined in:
lib/make_release/stories.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(opts = Options.defaults) ⇒ Stories



7
8
9
10
11
12
13
14
# 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

Instance Attribute Details

#branchesObject

Returns the value of attribute branches.



16
17
18
# File 'lib/make_release/stories.rb', line 16

def branches
  @branches
end

#directoryObject Also known as: dir

Returns the value of attribute directory.



16
17
18
# File 'lib/make_release/stories.rb', line 16

def directory
  @directory
end

#storiesObject (readonly)

Returns the value of attribute stories.



17
18
19
# File 'lib/make_release/stories.rb', line 17

def stories
  @stories
end

Instance Method Details

#add_story(branch, story) ⇒ Object



63
64
65
# File 'lib/make_release/stories.rb', line 63

def add_story( branch, story )
  (@stories[branch] ||= []).push story
end

#diffObject



73
74
75
76
77
78
79
80
81
82
83
84
# File 'lib/make_release/stories.rb', line 73

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

#eachObject



20
21
22
23
24
# 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) ⇒ Object

Raises:

  • (ArgumentError)


67
68
69
70
71
# File 'lib/make_release/stories.rb', line 67

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

#masterObject



37
38
39
# File 'lib/make_release/stories.rb', line 37

def master
  @branches[0]
end

#master=(new_master) ⇒ Object



41
42
43
44
45
# File 'lib/make_release/stories.rb', line 41

def master=(new_master)
  @stories[master] = []
  @branches[0] = new_master
  get_stories(new_master)
end

#shasObject



47
48
49
50
51
# File 'lib/make_release/stories.rb', line 47

def shas
  source.map do |branch|
    stories[branch].map { |s| s.sha }
  end.flatten
end

#sourceObject



33
34
35
# File 'lib/make_release/stories.rb', line 33

def source
  @branches[1, @branches.size]
end

#source_storiesObject



53
54
55
56
57
58
59
60
61
# File 'lib/make_release/stories.rb', line 53

def source_stories
  story_index = {}

  source.each do |branch|
    stories[branch].each { |s| story_index[s.sha] = s }
  end

  story_index.values
end

#to_sObject



26
27
28
29
30
31
# File 'lib/make_release/stories.rb', line 26

def to_s
  @stories.each do |branch, stories|
    puts "#{branch.capitalize} -->"
    stories.each { |s| puts s.to_s }
  end
end