git_log_generator 0.0.1 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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