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
- #to_s ⇒ Object
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 ) = 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
63 64 65 |
# File 'lib/make_release/stories.rb', line 63 def add_story( branch, story ) (@stories[branch] ||= []).push story end |
#diff ⇒ Object
73 74 75 76 77 78 79 80 81 82 83 84 |
# File 'lib/make_release/stories.rb', line 73 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
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 |
#master ⇒ Object
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 |
#shas ⇒ Object
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 |
#source ⇒ Object
33 34 35 |
# File 'lib/make_release/stories.rb', line 33 def source @branches[1, @branches.size] end |
#source_stories ⇒ Object
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_s ⇒ Object
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 |