rubycut-vclog 1.9.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (76) hide show
  1. data/.yardopts +7 -0
  2. data/History.md +249 -0
  3. data/License.txt +23 -0
  4. data/README.md +133 -0
  5. data/bin/vclog +6 -0
  6. data/bin/vclog-autotag +6 -0
  7. data/bin/vclog-bump +6 -0
  8. data/bin/vclog-formats +6 -0
  9. data/bin/vclog-news +6 -0
  10. data/bin/vclog-version +6 -0
  11. data/lib/vclog.rb +6 -0
  12. data/lib/vclog.yml +68 -0
  13. data/lib/vclog/adapters.rb +12 -0
  14. data/lib/vclog/adapters/abstract.rb +131 -0
  15. data/lib/vclog/adapters/darcs.rb +93 -0
  16. data/lib/vclog/adapters/git.rb +190 -0
  17. data/lib/vclog/adapters/hg.rb +129 -0
  18. data/lib/vclog/adapters/svn.rb +155 -0
  19. data/lib/vclog/change.rb +207 -0
  20. data/lib/vclog/change_point.rb +77 -0
  21. data/lib/vclog/changelog.rb +233 -0
  22. data/lib/vclog/cli.rb +8 -0
  23. data/lib/vclog/cli/abstract.rb +92 -0
  24. data/lib/vclog/cli/autotag.rb +36 -0
  25. data/lib/vclog/cli/bump.rb +29 -0
  26. data/lib/vclog/cli/formats.rb +28 -0
  27. data/lib/vclog/cli/log.rb +86 -0
  28. data/lib/vclog/cli/news.rb +29 -0
  29. data/lib/vclog/cli/version.rb +30 -0
  30. data/lib/vclog/config.rb +143 -0
  31. data/lib/vclog/core_ext.rb +11 -0
  32. data/lib/vclog/heuristics.rb +192 -0
  33. data/lib/vclog/heuristics/rule.rb +73 -0
  34. data/lib/vclog/heuristics/type.rb +29 -0
  35. data/lib/vclog/history_file.rb +69 -0
  36. data/lib/vclog/metadata.rb +16 -0
  37. data/lib/vclog/rc.rb +9 -0
  38. data/lib/vclog/release.rb +67 -0
  39. data/lib/vclog/repo.rb +298 -0
  40. data/lib/vclog/report.rb +200 -0
  41. data/lib/vclog/tag.rb +151 -0
  42. data/lib/vclog/templates/changelog.ansi.rb +35 -0
  43. data/lib/vclog/templates/changelog.atom.erb +52 -0
  44. data/lib/vclog/templates/changelog.gnu.rb +24 -0
  45. data/lib/vclog/templates/changelog.html.erb +49 -0
  46. data/lib/vclog/templates/changelog.json.rb +1 -0
  47. data/lib/vclog/templates/changelog.markdown.rb +30 -0
  48. data/lib/vclog/templates/changelog.rdoc.rb +30 -0
  49. data/lib/vclog/templates/changelog.rss.erb +54 -0
  50. data/lib/vclog/templates/changelog.xml.erb +28 -0
  51. data/lib/vclog/templates/changelog.xsl +34 -0
  52. data/lib/vclog/templates/changelog.yaml.rb +1 -0
  53. data/lib/vclog/templates/history.ansi.rb +57 -0
  54. data/lib/vclog/templates/history.atom.erb +84 -0
  55. data/lib/vclog/templates/history.gnu.rb +39 -0
  56. data/lib/vclog/templates/history.html.erb +60 -0
  57. data/lib/vclog/templates/history.json.rb +1 -0
  58. data/lib/vclog/templates/history.markdown.rb +38 -0
  59. data/lib/vclog/templates/history.rdoc.rb +36 -0
  60. data/lib/vclog/templates/history.rss.erb +84 -0
  61. data/lib/vclog/templates/history.xml.erb +43 -0
  62. data/lib/vclog/templates/history.yaml.rb +1 -0
  63. data/man/man1/index.txt +9 -0
  64. data/man/man1/vclog-autotag.1.ronn +29 -0
  65. data/man/man1/vclog-bump.1.ronn +21 -0
  66. data/man/man1/vclog-news.1.ronn +25 -0
  67. data/man/man1/vclog-version.1.ronn +14 -0
  68. data/man/man1/vclog.1.ronn +49 -0
  69. data/spec/feature_git_changes.rb +58 -0
  70. data/spec/feature_git_history.rb +58 -0
  71. data/spec/feature_hg_changes.rb +58 -0
  72. data/spec/feature_hg_history.rb +58 -0
  73. data/spec/featurettes/repo_creation.rb +64 -0
  74. data/spec/featurettes/shellout.rb +16 -0
  75. data/test/case_metadata.rb +10 -0
  76. metadata +265 -0
@@ -0,0 +1,49 @@
1
+ <html>
2
+ <head>
3
+ <title><%= title %></title>
4
+ <style>
5
+ body{font-family: sans-serif;}
6
+ h1{ font-weight: normal; font-size: 4em; margin: 0 0; }
7
+ h2{ color: #555; }
8
+ li{padding: 10px;}
9
+ .main{width:800px; margin:0 auto;}
10
+ .commit{ padding: 10px 0px; }
11
+ .date{font-weight: normal; color: green; float: left; padding-right: 15px; font-size: 0.9em;}
12
+ .author{font-weight: normal; color: blue;}
13
+ .message{ padding: 5px 0; font-weight: normal; font-size: 1.1em; }
14
+ .revision{font-size: 0.7em; color: #aaa; }
15
+ </style>
16
+ <% if options.stylesheet %>
17
+ <link rel="stylesheet" href="#{options.stylesheet}" type="text/css">
18
+ <% end %>
19
+ </head>
20
+ <body>
21
+ <div class="main">
22
+ <h1><%= title %></h1>
23
+ <h2>&nbsp;Timeline</h2>
24
+ <div class="changelog">
25
+ <ul>
26
+ <% changelog.changes.sort{|a,b| b.date <=> a.date}.each do |entry| %>
27
+ <li class="commit">
28
+ <div class="id"><%= h entry.id %></div>
29
+ <div class="date"><%= entry.date %></div>
30
+ <div class="author"><%= h entry.author %></div>
31
+ <div class="type"><%= h entry.type %></div>
32
+ <div class="message">
33
+ <div class="summary"><%= h entry.summary %></div>
34
+ <% if entry.details.empty? %>
35
+ <div class="details"></div>
36
+ <% else %>
37
+ <div class="details">
38
+ <%= r entry.details %>
39
+ </div>
40
+ <% end %>
41
+ </div>
42
+ </li>
43
+ <% end %>
44
+ </ul>
45
+ </div>
46
+ </div>
47
+ </body>
48
+ </html>
49
+
@@ -0,0 +1 @@
1
+ changelog.to_h.to_json
@@ -0,0 +1,30 @@
1
+ out = []
2
+
3
+ out << "# #{title}"
4
+
5
+ changelog.by_date.each do |date, date_changes|
6
+
7
+ date_changes.by_author.each do |author, author_changes|
8
+
9
+ out << "\n## #{date} #{author}\n"
10
+
11
+ author_changes.each do |entry|
12
+ msg = entry.to_s(:summary=>!options.detail)
13
+
14
+ out << msg.tabto(2).sub(' ','* ')
15
+
16
+ if entry.type
17
+ out.last << " [#{entry.type}]"
18
+ end
19
+
20
+ if options.reference
21
+ out.last << " (##{entry.id})"
22
+ end
23
+ end
24
+
25
+ end
26
+
27
+ end
28
+
29
+ out.join("\n") + "\n\n"
30
+
@@ -0,0 +1,30 @@
1
+ out = []
2
+
3
+ out << "= #{title}"
4
+
5
+ changelog.by_date.each do |date, date_changes|
6
+
7
+ date_changes.by_author.each do |author, author_changes|
8
+
9
+ out << "\n== #{date} #{author}\n"
10
+
11
+ author_changes.each do |entry|
12
+ msg = entry.to_s(:summary=>!options.detail)
13
+
14
+ out << msg.tabto(2).sub(' ','* ')
15
+
16
+ if entry.type
17
+ out.last << " [#{entry.type}]"
18
+ end
19
+
20
+ if options.reference
21
+ out.last << " (##{entry.id})"
22
+ end
23
+ end
24
+
25
+ end
26
+
27
+ end
28
+
29
+ out.join("\n") + "\n\n"
30
+
@@ -0,0 +1,54 @@
1
+ <?xml version="1.0"?>
2
+
3
+ <rss version="2.0">
4
+
5
+ <channel>
6
+
7
+ <title><%= h title %></title>
8
+
9
+ <% if url %><link><%= url %></link><% end %>
10
+
11
+ <% if homepage %><link><%= homepage %></link><% end %>
12
+
13
+ <description>Release History</description>
14
+
15
+ <language>en-us</language>
16
+
17
+ <pubDate><%= Time.now.rfc822 %></pubDate>
18
+
19
+ <lastBuildDate><%= Time.now.rfc822 %></lastBuildDate>
20
+
21
+ <docs>http://blogs.law.harvard.edu/tech/rss</docs>
22
+
23
+ <generator>VCLog</generator>
24
+
25
+ <managingEditor><%= email %> (<%= user %>)</managingEditor>
26
+
27
+ <webMaster><%= email %> (<%= user %></webMaster>
28
+
29
+ <% changelog.changes.sort{|a,b| b.date <=> a.date}.each do |entry| %>
30
+
31
+ <item>
32
+ <title><%= h entry.summary %></title>
33
+
34
+ <author><%= entry.author %></author>
35
+
36
+ <link></link>
37
+
38
+ <pubDate><%= entry.date.rfc822 %></pubDate>
39
+
40
+ <guid><%= url %>#<%= entry.id %></guid>
41
+
42
+ <description><![CDATA[
43
+ <%= entry.message %><br/>
44
+ <%= entry.author %> <%= entry.date.strftime('%Y-%m-%d %H:%M:%S') %>
45
+ ]]></description>
46
+
47
+ </item>
48
+
49
+ <% end %>
50
+
51
+ </channel>
52
+
53
+ </rss>
54
+
@@ -0,0 +1,28 @@
1
+ <?xml version="1.0"?>
2
+ <% if options.stylesheet %>
3
+ <?xml-stylesheet href="#{options.stylesheet}" type="text/xsl" ?>
4
+ <% end %>
5
+ <changelog title="<%= title %>">
6
+ <% changelog.changes.sort{|a,b| b.date <=> a.date}.each do |entry| %>
7
+ <commit>
8
+ <id><%= h entry.id %></id>
9
+ <date><%= entry.date %></date>
10
+ <author><%= h entry.author %></author>
11
+ <type><%= h entry.type %></type>
12
+ <message>
13
+ <summary><%= h entry.summary %></summary>
14
+ <% if entry.details.empty? %>
15
+ <details></details>
16
+ <% else %>
17
+ <details>
18
+ <![CDATA[
19
+ <%= h entry.details %>
20
+
21
+ ]]>
22
+ </details>
23
+ <% end %>
24
+ </message>
25
+ </commit>
26
+ <% end %>
27
+ </changelog>
28
+
@@ -0,0 +1,34 @@
1
+ <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
2
+
3
+ <xsl:output cdata-section-elements="script"/>
4
+
5
+ <xsl:template match="/">
6
+ <html>
7
+ <head>
8
+ <title>Changelog</title>
9
+ <link REL='SHORTCUT ICON' HREF="../img/ruby-sm.png" />
10
+ <style>
11
+ td { font-family: sans-serif; padding: 0px 10px; }
12
+ </style>
13
+ </head>
14
+ <body>
15
+ <div class="container">
16
+ <h1>Changelog</h1>
17
+ <table style="width: 100%;">
18
+ <xsl:apply-templates />
19
+ </table>
20
+ </div>
21
+ </body>
22
+ </html>
23
+ </xsl:template>
24
+
25
+ <xsl:template match="entry">
26
+ <tr>
27
+ <td><b><pre><xsl:value-of select="message"/></pre></b></td>
28
+ <td><xsl:value-of select="author"/></td>
29
+ <td><xsl:value-of select="date"/></td>
30
+ </tr>
31
+ </xsl:template>
32
+
33
+ </xsl:stylesheet>
34
+
@@ -0,0 +1 @@
1
+ changelog.to_h.to_yaml
@@ -0,0 +1,57 @@
1
+ require 'ansi'
2
+
3
+ out = []
4
+
5
+ out << "#{title.ansi(:bold)}"
6
+
7
+ releases.sort.each do |release|
8
+ tag = release.tag
9
+
10
+ # TODO: support verbose option
11
+ #if verbose?
12
+ # out << "\n#{tag.name} / #{tag.date.strftime('%Y-%m-%d %H:%M')}".ansi(:bold)
13
+ #else
14
+ out << "\n#{tag.name} / #{tag.date.strftime('%Y-%m-%d')}".ansi(:bold)
15
+ #end
16
+
17
+ out << "\n#{tag.message.strip} (#{tag.author})"
18
+
19
+ if !(options.summary or release.changes.empty?)
20
+
21
+ #out << "\nChanges:".ansi(:green)
22
+
23
+ release.groups.each do |number, changes|
24
+
25
+ out << "\n* " + "#{changes.size} #{changes[0].label}\n"
26
+
27
+ changes.sort{|a,b| b.date <=> a.date}.each do |entry|
28
+ msg = entry.to_s(:summary=>!options.detail)
29
+
30
+ case entry.level
31
+ when 1
32
+ msg = msg.ansi(:yellow)
33
+ when 0
34
+ msg = msg.ansi(:green)
35
+ when -1
36
+ msg = msg.ansi(:cyan)
37
+ else
38
+ if entry.level > 1
39
+ msg = msg.ansi(:red)
40
+ else
41
+ msg = msg.ansi(:blue)
42
+ end
43
+ end
44
+
45
+ msg << "\n(##{entry.id})" if options.reference
46
+
47
+ out << msg.tabto(6).sub(' ',' * ')
48
+ end
49
+
50
+ end
51
+
52
+ end
53
+
54
+ out << ""
55
+ end
56
+
57
+ out.join("\n") + "\n"
@@ -0,0 +1,84 @@
1
+ <?xml version="1.0"?>
2
+
3
+ <feed xmlns="http://www.w3.org/2005/Atom">
4
+
5
+ <title><%= title %> Feed</title>
6
+
7
+ <subtitle>Release History</subtitle>
8
+
9
+ <% if url %><link href="<%= url %>" /><% end %>
10
+
11
+ <% if homepage %><link href="<%= homepage %>" /><% end %>
12
+
13
+ <id><% if repo.uuid %>urn:uuid:<%= repo.uuid %><% else %><%= repo.repository %><% end %></id>
14
+
15
+ <updated><%= Time.now.xmlschema %></updated>
16
+
17
+ <author>
18
+
19
+ <name><%= user %></name>
20
+
21
+ <email><%= email %></email>
22
+
23
+ </author>
24
+
25
+ <% releases.sort.each do |release| %>
26
+
27
+ <% tag = release.tag %>
28
+
29
+ <entry>
30
+
31
+ <title><%= h tag.name %></title>
32
+
33
+ <id><%= url %>#<%= tag.id %></id>
34
+
35
+ <author><name><%= h tag.author %><name></author>
36
+
37
+ <updated><%= tag.date.xmlschema %></updated>
38
+
39
+ <summary><%= h tag.message %></summary>
40
+
41
+ <content type="xhtml">
42
+
43
+ <div xmlns="http://www.w3.org/1999/xhtml">
44
+
45
+ <p><%= tag.message %></p>
46
+
47
+ <% if !options.summary %>
48
+
49
+ <% release.groups.each do |number, changes| %>
50
+
51
+ <h2><%= changes.size %> <%= changes[0].label %></h2>
52
+
53
+ <ul class="log">
54
+
55
+ <% changes.sort{|a,b| b.date <=> a.date}.each do |entry| %>
56
+
57
+ <li class="entry">
58
+
59
+ <%= entry.message.rstrip %><br/>
60
+
61
+ <%= entry.author %> <%= entry.date.strftime('%Y-%m-%d %H:%M:%S') %>
62
+
63
+ <% if options.reference %>(#<%= entry.id %>)<% end %>
64
+
65
+ </li>
66
+
67
+ <% end %>
68
+
69
+ </ul>
70
+
71
+ <% end %>
72
+
73
+ <% end %>
74
+
75
+ </div>
76
+
77
+ </content>
78
+
79
+ </entry>
80
+
81
+ <% end %>
82
+
83
+ </feed>
84
+
@@ -0,0 +1,39 @@
1
+
2
+ out = []
3
+
4
+ out << "#{title}"
5
+
6
+ releases.sort.each do |release|
7
+
8
+ tag = release.tag
9
+
10
+ out << "\n#{tag.name} / #{tag.date.strftime('%Y-%m-%d')}"
11
+
12
+ out << "\n#{tag.message.strip} (#{tag.author})"
13
+
14
+ if !(options.summary or release.changes.empty?)
15
+
16
+ out << "\nChanges:"
17
+
18
+ release.groups.each do |number, changes|
19
+
20
+ out << "\n* #{changes.size} #{changes[0].label }\n"
21
+
22
+ changes.sort{|a,b| b.date <=> a.date}.each do |entry|
23
+ msg = entry.to_s(:summary=>!options.detail)
24
+
25
+ msg << "\n(##{entry.id})" if options.reference
26
+
27
+ out << msg.tabto(6).sub(' ',' * ')
28
+ end
29
+
30
+ end
31
+
32
+ end
33
+
34
+ out << ""
35
+
36
+ end
37
+
38
+ out.join("\n") + "\n"
39
+
@@ -0,0 +1,60 @@
1
+ <html>
2
+ <head>
3
+ <title><%= title %> History</title>
4
+ <style>
5
+ body{font-family: sans-serif;}
6
+ h1{ }
7
+ h2{ color: #555; }
8
+ li{padding: 10px;}
9
+ .main{width:800px; margin:0 auto;}
10
+ .title{font-size: 64px;}
11
+ .date{font-weight: bold; color: green; float: left; padding-right: 15px;}
12
+ .author{font-weight: bold; color: blue;}
13
+ .message{padding: 5 0; font-weight: bold;}
14
+ .revision{font-size: 0.8em;}
15
+ </style>
16
+ <% if options.stylesheet %>
17
+ <link rel="stylesheet" href="#{options.stylesheet}" type="text/css">
18
+ <% end %>
19
+ </head>
20
+ <body>
21
+ <div class="main">
22
+ <div class="title"><%= title %></div>
23
+ <div class="history">
24
+ <% releases.sort.each do |release| %>
25
+ <% tag = release.tag %>
26
+
27
+ <h1><%= tag.name %> / <%= tag.date.strftime('%Y-%m-%d') %></h1>
28
+ <p><%= tag.message %></p>
29
+ <% if !options.summary %>
30
+ <% release.groups.each do |number, changes| %>
31
+
32
+ <h2><%= changes.size %> <%= changes[0].label %></h2>
33
+ <ul class="log">
34
+ <% changes.sort{|a,b| b.date <=> a.date}.each do |entry| %>
35
+ <li class="entry">
36
+ <div class="message">
37
+ <div class="summary"><%= h entry.summary %></summary>
38
+ <% if entry.details.empty? %>
39
+ <div class="details"></div>
40
+ <% else %>
41
+ <div class="details">
42
+ <%= r entry.details %>
43
+ </div>
44
+ <% end %>
45
+ </div>
46
+ <!-- <div class="type"><%= h entry.type %></div> -->
47
+ <div class="id">#<%= h entry.id %></div>
48
+ <div class="date"><%= entry.date %></div>
49
+ <div class="author"><%= h entry.author %></div>
50
+ </li>
51
+ <% end %>
52
+ </ul>
53
+ <% end %>
54
+ <% end %>
55
+ <% end %>
56
+ </div>
57
+ </div>
58
+ </body>
59
+ </html>
60
+