git_log_generator 0.0.1 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e1df9dd21fe75d644928ec4f4daad5b54150be76
4
- data.tar.gz: 7ab0b97148eba1ba0b2e009ea51f9455389ba73f
3
+ metadata.gz: 59e8615ad766ab5528b108556e15b0885bc62250
4
+ data.tar.gz: a44860f5dc6a18a4b02ab19f701296c24096b09e
5
5
  SHA512:
6
- metadata.gz: 24642c289df33f1d744947922ec6e1cdad698214f0db54fdb70ead307f25c30286756e8ca83cba66a7022b2be164eaca5c5ded6464633806ec1d0715c7d4bfeb
7
- data.tar.gz: f7bddce201f534930d4be0517617ddc14a4ca42a6249ff4378a72aba9a9dacf02bffe9a8a78acefa0884294ca73cefd2effe698c57ba2bf07e51797a4d33b351
6
+ metadata.gz: cac25cf240c691028df0b7beeb8620fae6a2cc96f8ad8c0214ab34b304244441b5fd88daf7fceb8977cf4a7df14c752aaeba24b3eac51332cfb855b94d9f0199
7
+ data.tar.gz: bfc775e2d00a779411ca8805f71bfb85bae1ae71ec4380cc7feee6a7987428321394ed50f8080be14ae6e15e45468a1349614ac288d3e0e6d8150dc308c6f4e6
data/.gitignore CHANGED
@@ -9,3 +9,9 @@
9
9
 
10
10
  # rspec failure tracking
11
11
  .rspec_status
12
+
13
+ # backups
14
+ *~
15
+
16
+ # built gems
17
+ *.gem
@@ -0,0 +1,113 @@
1
+ #!/usr/bin/env ruby
2
+ require 'fileutils'
3
+
4
+ class Changelog
5
+ NEWLINE = $-0
6
+ BACKUP = false
7
+
8
+ def perform
9
+ @changelog = generate_changelog
10
+ backup_old_changelog if backup? && old_changelog_exists?
11
+ write_changelog
12
+ end
13
+
14
+ private
15
+
16
+ def generate_changelog
17
+ previous_tag = nil
18
+ tag_count = tags.size
19
+
20
+ result = tags.collect do |tag|
21
+ output = ""
22
+
23
+ if previous_tag.nil?
24
+ tag_string = tag
25
+ else
26
+ tag_string = "#{previous_tag}..#{tag}"
27
+ end
28
+ puts "Processing #{tag_string}"
29
+
30
+ output << tag_changelog(tag, tag_string)
31
+
32
+ previous_tag = tag
33
+
34
+ output
35
+ end
36
+ result << unversioned_changelog
37
+ result << "# Changelog#{NEWLINE}"
38
+
39
+ result.reverse.join("\r\n")
40
+ end
41
+
42
+ def unversioned_changelog
43
+ tag = tags.last
44
+ tag_string = "#{tag}.."
45
+
46
+ tag_changelog(nil, tag_string)
47
+ end
48
+
49
+ def old_changelog_exists?
50
+ File.exist?(filename)
51
+ end
52
+
53
+ def backup_old_changelog
54
+ FileUtils.mv(filename, "#{filename}~")
55
+ end
56
+
57
+ def write_changelog
58
+ File.open(filename, 'w') { |f| f.write(@changelog) }
59
+ end
60
+
61
+ def tags
62
+ @tags ||= %x{git tag -l}.split(/\n/)
63
+ end
64
+
65
+ def tag_changelog(tag, tag_string)
66
+ if tag.nil?
67
+ output = "## Scheduled for next version#{NEWLINE}"
68
+ else
69
+ output = "## #{tag}#{NEWLINE}"
70
+ end
71
+ output << NEWLINE
72
+ ask_git_for_tag_changelog(tag_string).lines.each do |line|
73
+ line.chomp!
74
+ next if line.empty?
75
+ output << "* #{process_line(line)}"
76
+ output << NEWLINE
77
+ end
78
+ output
79
+ end
80
+
81
+ def filename
82
+ filename ||= 'CHANGELOG.md'
83
+ end
84
+
85
+ def backup?
86
+ BACKUP
87
+ end
88
+
89
+ def ask_git_for_tag_changelog(tag_string)
90
+ %x{git log #{tag_string} --pretty="%B" --no-merges}
91
+ end
92
+
93
+ def process_line(line)
94
+ line
95
+ end
96
+ end
97
+
98
+ class PublicChangelog < Changelog
99
+ def ask_git_for_tag_changelog(tag_string)
100
+ %x{git log #{tag_string} --pretty="%B" --no-merges | grep "#public"}
101
+ end
102
+
103
+ def filename
104
+ filename ||= 'CHANGELOG.public.md'
105
+ end
106
+
107
+ def process_line(line)
108
+ line.chomp('#public').chomp.strip
109
+ end
110
+ end
111
+
112
+ Changelog.new.perform
113
+ PublicChangelog.new.perform
@@ -1,3 +1,3 @@
1
1
  module GitLogGenerator
2
- VERSION = "0.0.1".freeze
2
+ VERSION = "0.0.3".freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: git_log_generator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Roberto Vasquez Angel
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-11-12 00:00:00.000000000 Z
11
+ date: 2018-11-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -55,7 +55,8 @@ dependencies:
55
55
  description:
56
56
  email:
57
57
  - roberto@vasquez-angel.de
58
- executables: []
58
+ executables:
59
+ - generate_changelog
59
60
  extensions: []
60
61
  extra_rdoc_files: []
61
62
  files:
@@ -69,6 +70,7 @@ files:
69
70
  - Rakefile
70
71
  - bin/console
71
72
  - bin/setup
73
+ - exe/generate_changelog
72
74
  - git_log_generator.gemspec
73
75
  - lib/git_log_generator.rb
74
76
  - lib/git_log_generator/version.rb