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.



6
7
8
# File 'lib/cookbook-release/commit.rb', line 6

def initialize(hash)
  @hash = hash
end

Instance Method Details

#colorObject



37
38
39
40
41
42
43
44
45
46
# File 'lib/cookbook-release/commit.rb', line 37

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

#major?Boolean

Returns:

  • (Boolean)


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

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

#minor?Boolean

Returns:

  • (Boolean)


29
30
31
# File 'lib/cookbook-release/commit.rb', line 29

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

#patch?Boolean

Returns:

  • (Boolean)


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

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

#risky?Boolean

Returns:

  • (Boolean)


33
34
35
# File 'lib/cookbook-release/commit.rb', line 33

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

#to_s_html(full) ⇒ Object



52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'lib/cookbook-release/commit.rb', line 52

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



70
71
72
73
74
75
76
77
78
79
80
81
# File 'lib/cookbook-release/commit.rb', line 70

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 << " `#{self[:subject]}`"
  result << "\n```\n#{strip_change_id(self[:body])}```" if full && self[:body]
  result
end

#to_s_onelineObject



48
49
50
# File 'lib/cookbook-release/commit.rb', line 48

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