renogen 1.1.1 → 1.2.0
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 +4 -4
- data/README.md +37 -0
- data/lib/renogen/change_log/model.rb +2 -8
- data/lib/renogen/change_log/writer.rb +1 -1
- data/lib/renogen/cli.rb +1 -0
- data/lib/renogen/cli/param_parser.rb +12 -0
- data/lib/renogen/formatters/base.rb +18 -3
- data/lib/renogen/generator.rb +1 -0
- data/lib/renogen/version.rb +1 -1
- data/spec/lib/renogen/change_log/model_spec.rb +21 -7
- data/spec/lib/renogen/formatters/base_spec.rb +10 -0
- metadata +2 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9c597a603a1ff6629766e2fca60f6970a75bb1e3
|
4
|
+
data.tar.gz: 70ff70d1bcd0fe5fba73dcb6a7a04b3a70652630
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 22e630d7505723cf02a2c6c66853c74ae1f98633e0d102cde31061b7dcc8ab1d6bdca9cb22c438f6cb746a8b1ecc5cf295b4fabfa9dff1c49b43e0b7421014ea
|
7
|
+
data.tar.gz: c94d1ae2b66072bbfcdf8d4960fa3f29caf58a0aaabb76a32d4f164e6eae73bff06a0f6040f64aaaab99b685cc82a92909d11f8a40841e1ec642768f60539c72
|
data/README.md
CHANGED
@@ -79,6 +79,43 @@ TODO
|
|
79
79
|
* How to set configuration with `.renogen` file
|
80
80
|
* How to change formatted single line
|
81
81
|
|
82
|
+
### Custom formatter
|
83
|
+
|
84
|
+
You can use your own formatter quite easily.
|
85
|
+
|
86
|
+
For example, put this in `lib/my_project/renogen_formatter.rb`:
|
87
|
+
```ruby
|
88
|
+
require 'renogen/formatters'
|
89
|
+
|
90
|
+
class MyProject::RenogenFormatter < Renogen::Formatters::Base
|
91
|
+
register :xml
|
92
|
+
|
93
|
+
def write_header(header)
|
94
|
+
"<release><header>#{header}</header>"
|
95
|
+
end
|
96
|
+
|
97
|
+
def write_group(group)
|
98
|
+
"<group><title>#{group}</title>"
|
99
|
+
end
|
100
|
+
|
101
|
+
def write_group_end
|
102
|
+
"</group>"
|
103
|
+
end
|
104
|
+
|
105
|
+
def write_change(change)
|
106
|
+
"<change>#{change}</change>"
|
107
|
+
end
|
108
|
+
|
109
|
+
def write_footer(*)
|
110
|
+
"</release>"
|
111
|
+
end
|
112
|
+
end
|
113
|
+
```
|
114
|
+
|
115
|
+
You have to include that file when running renogen:
|
116
|
+
|
117
|
+
`$ renogen -I. -Rlib/my_project/renogen_formatter 1.2.3`
|
118
|
+
|
82
119
|
### Why does renogen not use renogen?
|
83
120
|
The amount of activity and contributes for this project is small and so it is more practical to use a text file.
|
84
121
|
|
@@ -5,20 +5,14 @@ module Renogen
|
|
5
5
|
# Object to represent a Changelog/release notes
|
6
6
|
class Model
|
7
7
|
attr_reader :items
|
8
|
-
attr_accessor :version
|
8
|
+
attr_accessor :version, :date
|
9
9
|
|
10
10
|
def initialize(options={})
|
11
11
|
@version = options[:version]
|
12
|
+
@date = options[:date] || Date.today
|
12
13
|
@items = []
|
13
14
|
end
|
14
15
|
|
15
|
-
# The title for the change log output
|
16
|
-
#
|
17
|
-
# @return [String]
|
18
|
-
def header
|
19
|
-
"#{version} (#{Date.today})"
|
20
|
-
end
|
21
|
-
|
22
16
|
# @return [Hash<group_name: change>]
|
23
17
|
def groups
|
24
18
|
items.inject({}) do |hash, change|
|
@@ -10,7 +10,7 @@ module Renogen
|
|
10
10
|
#
|
11
11
|
# @param changelog [ChangeLog::Model]
|
12
12
|
def write!(changelog)
|
13
|
-
puts formatter.write_header(
|
13
|
+
puts formatter.write_header(formatter.header(changelog))
|
14
14
|
output_groups(changelog.groups)
|
15
15
|
puts formatter.write_footer(changelog)
|
16
16
|
end
|
data/lib/renogen/cli.rb
CHANGED
@@ -20,6 +20,7 @@ module Renogen
|
|
20
20
|
source = options['source'] || config_instance.input_source
|
21
21
|
options['changelog_path'] ||= config_instance.changelog_path
|
22
22
|
options['old_version'] ||= config_instance.changelog_path
|
23
|
+
options['release_date'] ||= Date.today
|
23
24
|
|
24
25
|
begin
|
25
26
|
generator = Renogen::Generator.new(version, source, format, options)
|
@@ -44,6 +44,18 @@ module Renogen
|
|
44
44
|
args['legacy_version'] = n
|
45
45
|
end
|
46
46
|
|
47
|
+
opts.on("-rDATE", "--release-date=DATE", "Release date") do |n|
|
48
|
+
args['release_date'] = n
|
49
|
+
end
|
50
|
+
|
51
|
+
opts.on("-IPATH", "--include=PATH", "Add a path to the load path") do |n|
|
52
|
+
$LOAD_PATH << n
|
53
|
+
end
|
54
|
+
|
55
|
+
opts.on("-RFILE", "--require=FILE", "Require a file from the load path") do |n|
|
56
|
+
require n
|
57
|
+
end
|
58
|
+
|
47
59
|
opts.on_tail("-h", "--help", "Show this message") do
|
48
60
|
puts opts
|
49
61
|
exit
|
@@ -13,18 +13,31 @@ module Renogen
|
|
13
13
|
Renogen::Formatters.add(identifier.to_sym, self)
|
14
14
|
end
|
15
15
|
|
16
|
+
# Generate a header for a given changelog
|
17
|
+
#
|
18
|
+
# @param changelog [Renogen::ChangeLog::Model]
|
19
|
+
#
|
20
|
+
# return [String]
|
21
|
+
def header(changelog)
|
22
|
+
"#{changelog.version} (#{changelog.date})"
|
23
|
+
end
|
24
|
+
|
16
25
|
# Outputs a line or block of text appearing at the top of the change log.
|
17
26
|
#
|
27
|
+
# @abstract
|
28
|
+
#
|
18
29
|
# @param header [String]
|
19
|
-
# @
|
30
|
+
# @raise NotImplementedError
|
20
31
|
def write_header(header)
|
21
32
|
raise NotImplementedError
|
22
33
|
end
|
23
34
|
|
24
35
|
# Outputs a line or block as a header for a group.
|
25
36
|
#
|
37
|
+
# @abstract
|
38
|
+
#
|
26
39
|
# @param group [String]
|
27
|
-
# @
|
40
|
+
# @raise NotImplementedError
|
28
41
|
def write_group(group)
|
29
42
|
raise NotImplementedError
|
30
43
|
end
|
@@ -37,8 +50,10 @@ module Renogen
|
|
37
50
|
|
38
51
|
# Outputs a line or block as the body for a change.
|
39
52
|
#
|
53
|
+
# @abstract
|
54
|
+
#
|
40
55
|
# @param change [String]
|
41
|
-
# @
|
56
|
+
# @raise NotImplementedError
|
42
57
|
def write_change(change)
|
43
58
|
raise NotImplementedError
|
44
59
|
end
|
data/lib/renogen/generator.rb
CHANGED
data/lib/renogen/version.rb
CHANGED
@@ -14,13 +14,6 @@ describe Renogen::ChangeLog::Model do
|
|
14
14
|
end
|
15
15
|
end
|
16
16
|
|
17
|
-
describe '#header' do
|
18
|
-
it 'returns version and date' do
|
19
|
-
subject.version = '123'
|
20
|
-
expect(subject.header).to eql "123 (#{Date.today})"
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
17
|
describe '#add_change' do
|
25
18
|
it 'adds change to changes store' do
|
26
19
|
subject.add_change(change_item)
|
@@ -33,4 +26,25 @@ describe Renogen::ChangeLog::Model do
|
|
33
26
|
end
|
34
27
|
end
|
35
28
|
|
29
|
+
describe '#date' do
|
30
|
+
it 'defaults to Date.today' do
|
31
|
+
expect(subject.date).to eql Date.today
|
32
|
+
end
|
33
|
+
|
34
|
+
it 'can be set using an option' do
|
35
|
+
date = Date.parse('2015-12-25')
|
36
|
+
model_instance = described_class.new(date: date)
|
37
|
+
|
38
|
+
expect(model_instance.date).to eql date
|
39
|
+
end
|
40
|
+
|
41
|
+
it 'has a setter' do
|
42
|
+
date = Date.parse('1981-03-20')
|
43
|
+
|
44
|
+
subject.date = date
|
45
|
+
|
46
|
+
expect(subject.date).to eql date
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
36
50
|
end
|
@@ -1,6 +1,16 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Renogen::Formatters::Base do
|
4
|
+
describe '#header' do
|
5
|
+
subject { described_class.new.header(changelog) }
|
6
|
+
|
7
|
+
let(:version) { '1.2.34' }
|
8
|
+
let(:date) { Date.today }
|
9
|
+
let(:changelog) { double(Renogen::ChangeLog::Model, version: version, date: date) }
|
10
|
+
|
11
|
+
it { is_expected.to eql "#{version} (#{date})" }
|
12
|
+
end
|
13
|
+
|
4
14
|
describe '#write_header' do
|
5
15
|
it 'raises an NotImplementedError' do
|
6
16
|
expect{subject.write_header('header')}.to raise_error NotImplementedError
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: renogen
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dave Elliott
|
@@ -98,9 +98,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
98
98
|
version: '0'
|
99
99
|
requirements: []
|
100
100
|
rubyforge_project:
|
101
|
-
rubygems_version: 2.6.
|
101
|
+
rubygems_version: 2.6.3
|
102
102
|
signing_key:
|
103
103
|
specification_version: 4
|
104
104
|
summary: Release Notes/changelog Generator
|
105
105
|
test_files: []
|
106
|
-
has_rdoc:
|