Class: CookbookRelease::Commit

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Defined in:
lib/cookbook-release/commit.rb

Instance Method Summary collapse

Constructor Details

#initialize(hash) ⇒ Commit

Returns a new instance of Commit.



8
9
10
# File 'lib/cookbook-release/commit.rb', line 8

def initialize(hash)
  @hash = hash
end

Instance Method Details

#colorObject



43
44
45
46
47
48
49
50
51
52
# File 'lib/cookbook-release/commit.rb', line 43

def color
  case true
  when major?
    :red
  when risky?
    :red
  else
    :grey
  end
end

#major?Boolean

Returns:

  • (Boolean)


12
13
14
15
16
17
18
19
# File 'lib/cookbook-release/commit.rb', line 12

def major?
  [
    /breaking/i,
    /\[major\]/i
  ].any? do |r|
    self[:subject] =~ r
  end
end

#minor?Boolean

Returns:

  • (Boolean)


31
32
33
# File 'lib/cookbook-release/commit.rb', line 31

def minor?
  !(major? || patch?)
end

#nodes_only?Boolean

Returns:

  • (Boolean)


39
40
41
# File 'lib/cookbook-release/commit.rb', line 39

def nodes_only?
  self[:nodes_only]
end

#patch?Boolean

Returns:

  • (Boolean)


21
22
23
24
25
26
27
28
29
# File 'lib/cookbook-release/commit.rb', line 21

def patch?
  [
    /\bfix\b/i,
    /\bbugfix\b/i,
    /\[patch\]/i
  ].any? do |r|
    self[:subject] =~ r
  end
end

#risky?Boolean

Returns:

  • (Boolean)


35
36
37
# File 'lib/cookbook-release/commit.rb', line 35

def risky?
  !!(self[:subject] =~ /\[risky\]/i)
end

#to_s_html(full) ⇒ Object



58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/cookbook-release/commit.rb', line 58

def to_s_html(full)
  result = []
  result << <<-EOH
<font color=#{color.to_s}>
  #{self[:hash]} #{self[:author]} <#{self[:email]}> #{self[:subject]}
</font>
  EOH
  if full && self[:body]
    result << <<-EOH
<pre>
#{strip_change_id(self[:body])}
</pre>
    EOH
  end

  result.join("\n")
end

#to_s_markdown(full) ⇒ Object



76
77
78
79
80
81
82
83
84
85
86
87
88
# File 'lib/cookbook-release/commit.rb', line 76

def to_s_markdown(full)
  result = "*#{self[:hash]}* "
  if self[:subject] =~ /risky|breaking/i
    slack_user = self[:email].split('@')[0]
    result << "@#{slack_user}"
  else
    result << "_#{self[:author]} <#{self[:email]}>_"
  end
  result << ' '
  result << "`#{self[:subject]}`"
  result << "\n```\n#{strip_change_id(self[:body])}```" if full && self[:body]
  result
end

#to_s_onelineObject



54
55
56
# File 'lib/cookbook-release/commit.rb', line 54

def to_s_oneline
  "#{self[:hash]} #{self[:author]} <#{self[:email]}> #{self[:subject]}"
end