Renogen or Re(lease) No(tes) Gen(erator) is a development tool to separate feature notes from product versions.
This renogen can not do and will have to be reviewed manually
- Order the notes in the orrect order (e.g. if a task has to be run before/after something else)
- Remove Duplicate notes that might be added (e.g. 2 tickets might want to run the same task)
To install Renogen, use the following command:
$ gem install renogen
or add the following to your Gemfile when using Bundler
gem 'renogen', require: false, group: :development
and run
bundle install
If you would prefer you can use a prebuild docker image.
Example:
$ docker run --rm -v `pwd`/.renogen:/.renogen:ro -v `pwd`/change_log:/change_log/ ddazza/renogen <CMD>
Now, you may initialize your repository with a change_log
directory and a basic .renogen
config file:
$ renogen init` # optional Creates directory for notes
To generate your notes run the following command
$ renogen <VERSION> # e.g v1.2.1
Unfortunatly renogen cant write documentation for your change. By default renogen uses the yaml file stratagy to extract your notes
$ renogen --help # list available command options
You can create a new file within the 'next' version folder (default: change_log/next/
) manually:
Example feature note:
# change_log/next/example.yml
my_formatted_single_line:
identifier: bug_1
link: example.com/bug_1
summary: fixes all issues
unformatted_single_line: "This is an unformatted single line"
my_multiline_note: |
Title
description
Example of usage
$ foo bar baz
my_list:
- e.g. run this command
- e.g. run this as well
You can also use the new
command to create a feature note YAML file in the 'next' version folder:
$ renogen new TICKET_NAME # creates ./change_log/next/TICKET_NAME.yml`
Prepend your notes to a changelog file (TODO make command simple)
$ renogen --format markdown v1.2.1 > CHANGELOG.md | cat - CHANGELOG > CHANGELOG.tmp && mv CHANGELOG.tmp CHANGELOG
Writes notes to html file
$ renogen --format html v1.2.1 > v1_2_1.html
Writes note to csv file
$ renogen --format csv v1.2.1 > v1_2_1.csv
Print all notes since v1.0.0 as text
$ renogen --format text -l v1.0.0 v1.2.1
Renogen tries to read the file .renogen
in the working directory to load its configuration. The file is in YAML format
with the following keys:
key | meaning | default value | configuration example |
---|---|---|---|
single_line_format |
A template for generating a single line of text from a YAML dictionary in a feature note file. Each dictionary key in the template gets replaced by the value for that key. | summary (see link) |
[#ticket](https://github.com/renogen/issue/ticket): summary |
supported_keys |
YAML dictionary keys allowed in dictionary feature notes. Ignored for dictionaries where rules apply. | %w[identifier summary link] |
|
input_source |
The format of the feature note files. Currently, only yaml is supported. |
yaml |
|
output_format |
The default output format when generating release notes. | markdown |
html |
changelog_path |
The directory where the feature note files are stored. | ./change_log |
./doc/src/changes |
default_headings |
The headings/group names that will be printed into a feature note file created by the new command. Ignored when there is a rule defined for the given file name. |
%w[Summary Detailed Tasks] |
%w[Title Description Deployment] |
allowed_values |
Allowed values for default headings. See Allowed Values. | {} (none) |
|
remove_duplicates |
Remove duplicate items from output release notes. Not applicable when using table formats (e.gcsv or markdown_table ). |
false |
Allowed values enables you to specify a range of allowed values for any default heading. This can be an array, string or regular expression:
default_headings:
- Products
- Countries
- User Facing
Products: !ruby/regexp '/\b(Foo|Bar)\b/'
Countries: [UK, AUS, FR]
User Facing: Yes
You can use your own formatter quite easily.
For example, put this in lib/my_project/renogen_formatter.rb
:
require 'renogen/formatters'
class MyProject::RenogenFormatter < Renogen::Formatters::Base
register :xml
def write_header(header)
"<release><header>#{header}</header>"
end
def write_group(group)
"<group><title>#{group}</title>"
end
def write_group_end
"</group>"
end
def write_change(change)
"<change>#{change}</change>"
end
def write_footer(*)
"</release>"
end
end
You have to include that file when running renogen:
$ renogen -I. -Rlib/my_project/renogen_formatter 1.2.3
The amount of activity and contributes for this project is small and so it is more practical to use a text file.
$ git clone [email protected]:DDAZZA/renogen.git
$ cd ./renogen/
$ bundle install
$ bundle exec ./bin/renogen test
Renogen is a programming tool to generate a log of source code changes
Copyright (C) 2015-2020 David Elliott
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.