Class: MakeRelease::Stories
- Inherits:
-
Object
- Object
- MakeRelease::Stories
- Defined in:
- lib/make_release/stories.rb
Instance Attribute Summary collapse
-
#branches ⇒ Object
Returns the value of attribute branches.
-
#directory ⇒ Object
(also: #dir)
Returns the value of attribute directory.
-
#stories ⇒ Object
readonly
Returns the value of attribute stories.
Instance Method Summary collapse
- #add_story(branch, story) ⇒ Object
- #diff ⇒ Object
- #each ⇒ Object
- #find(branch, sha) ⇒ Object
-
#initialize(opts = Options.defaults) ⇒ Stories
constructor
A new instance of Stories.
- #master ⇒ Object
- #master=(new_master) ⇒ Object
- #shas ⇒ Object
- #source ⇒ Object
- #source_stories ⇒ Object
Constructor Details
#initialize(opts = Options.defaults) ⇒ Stories
Returns a new instance of Stories.
7 8 9 10 11 12 13 14 |
# File 'lib/make_release/stories.rb', line 7 def initialize(opts = Options.defaults) = opts @stories = opts[:stories] || {} @directory = opts[:directory] || '.' @branches = _get_branches(opts[:master], opts[:source]) _get_stories if @stories == {} end |
Instance Attribute Details
#branches ⇒ Object
Returns the value of attribute branches.
16 17 18 |
# File 'lib/make_release/stories.rb', line 16 def branches @branches end |
#directory ⇒ Object 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 |
#stories ⇒ Object (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
56 57 58 |
# File 'lib/make_release/stories.rb', line 56 def add_story(branch, story) (@stories[branch] ||= []).push story end |
#diff ⇒ Object
68 69 70 71 72 73 74 75 76 77 78 79 |
# File 'lib/make_release/stories.rb', line 68 def diff stories = [] opts = 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 ⇒ Object
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
60 61 62 63 64 65 66 |
# 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 ⇒ Object
30 31 32 |
# File 'lib/make_release/stories.rb', line 30 def master @branches[0] end |
#master=(new_master) ⇒ Object
34 35 36 37 38 |
# File 'lib/make_release/stories.rb', line 34 def master=(new_master) @stories[master] = [] @branches[0] = new_master _get_stories(new_master) end |
#shas ⇒ Object
40 41 42 43 44 |
# 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 ⇒ Object
26 27 28 |
# File 'lib/make_release/stories.rb', line 26 def source @branches[1, @branches.size] end |
#source_stories ⇒ Object
46 47 48 49 50 51 52 53 54 |
# 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 |