From 6f17e7c23633bebb56d4aab4976e34d4ade32d3c Mon Sep 17 00:00:00 2001 From: retorquere Date: Wed, 3 Feb 2016 13:56:44 +0100 Subject: [PATCH 01/10] YAML front matter --- .../generator/generator_generation.rb | 4 +++- lib/github_changelog_generator/parser.rb | 3 +++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/github_changelog_generator/generator/generator_generation.rb b/lib/github_changelog_generator/generator/generator_generation.rb index d642d57..337d377 100644 --- a/lib/github_changelog_generator/generator/generator_generation.rb +++ b/lib/github_changelog_generator/generator/generator_generation.rb @@ -8,7 +8,9 @@ module GitHubChangelogGenerator sort_tags_by_date(@filtered_tags) fetch_issues_and_pr - log = "#{@options[:header]}\n\n" + log = '' + log += @options[:frontmatter] if @options[:frontmatter] + log += "#{@options[:header]}\n\n" if @options[:unreleased_only] log += generate_log_between_tags(filtered_tags[0], nil) diff --git a/lib/github_changelog_generator/parser.rb b/lib/github_changelog_generator/parser.rb index 2f16d9b..f1440f0 100644 --- a/lib/github_changelog_generator/parser.rb +++ b/lib/github_changelog_generator/parser.rb @@ -68,6 +68,9 @@ module GitHubChangelogGenerator opts.on("--header-label [LABEL]", "Setup custom header label. Default is \"# Change Log\"") do |v| options[:header] = v end + opts.on("--front-matter [JSON]", "Add YAML front matter. Formatted as JSON because it's easier to add on the command line") do |v| + options[:frontmatter] = JSON.parse(v).to_yaml + "---\n" + end opts.on("--pr-label [LABEL]", "Setup custom label for pull requests section. Default is \"**Merged pull requests:**\"") do |v| options[:merge_prefix] = v end From c2032e12358aa50d5c1c85c8cf5abcab15f20ed0 Mon Sep 17 00:00:00 2001 From: retorquere Date: Wed, 3 Feb 2016 14:15:08 +0100 Subject: [PATCH 02/10] placate rubocop --- .../generator/generator_generation.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/github_changelog_generator/generator/generator_generation.rb b/lib/github_changelog_generator/generator/generator_generation.rb index 337d377..cfaafe1 100644 --- a/lib/github_changelog_generator/generator/generator_generation.rb +++ b/lib/github_changelog_generator/generator/generator_generation.rb @@ -8,7 +8,7 @@ module GitHubChangelogGenerator sort_tags_by_date(@filtered_tags) fetch_issues_and_pr - log = '' + log = "" log += @options[:frontmatter] if @options[:frontmatter] log += "#{@options[:header]}\n\n" From 78e5f06cc6f11f40d5b81223dc7e1850daac5409 Mon Sep 17 00:00:00 2001 From: Zearin Date: Thu, 11 Feb 2016 10:54:49 -0500 Subject: [PATCH 03/10] Update README.md Lots of small edits to fix English grammar, phrasing, and formatting. --- README.md | 137 ++++++++++++++++++++++++++++-------------------------- 1 file changed, 71 insertions(+), 66 deletions(-) diff --git a/README.md b/README.md index 399da6b..27e9188 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ GitHub Changelog Generator ![GitHub Logo](../master/images/logo.jpg) - [License](#license) -### Changelog generation has never been so easy: +### Changelog generation has never been so easy **Fully automate changelog generation** - This gem generates change log file based on **tags**, **issues** and merged **pull requests** (and splits them into separate lists according labels) from :octocat: GitHub Issue Tracker. @@ -32,7 +32,7 @@ To make it easier for users and contributors to see precisely what notable chang ### *Why should I care?* Because software tools are for people. If you don’t care, why are you contributing to open source? Surely, there must be a kernel (ha!) of care somewhere in that lovely little brain of yours. -> :arrow_right: *[http://keepachangelog.com](http://keepachangelog.com/)* +> :arrow_right: *[http://keepachangelog.com](http://keepachangelog.com)* ## Installation @@ -45,7 +45,7 @@ Because software tools are for people. If you don’t care, why are you contribu github_changelog_generator -u skywinder -p ActionSheetPicker-3.0 -- In general it looks like this: +- In general, it looks like this: > ## [1.2.5](https://github.com/skywinder/Github-Changelog-Generator/tree/1.2.5) (2015-01-15) > @@ -67,25 +67,25 @@ Because software tools are for people. If you don’t care, why are you contribu ## Usage -**It's really simple**: +**It's really simple!** -- If your **git remote** `origin` refers to your GitHub repo, then just go to your project folder and run: +- If your **`git remote`** `origin` refers to your GitHub repo, just go to your project folder and run: github_changelog_generator -- or from anywhere: +- Or, run this from anywhere: - `github_changelog_generator -u github_username -p github_project` - `github_changelog_generator github_username/github_project` -As output you will get `CHANGELOG.md` file with pretty *Markdown-formatted* changelog. +This generates a changelog to the `CHANGELOG.md` file, with pretty markdown formatting. ### Params Type `github_changelog_generator --help` for details. -More detailed info about params you can find in Wiki page: [**Advanced change log generation examples**](https://github.com/skywinder/github-changelog-generator/wiki/Advanced-change-log-generation-examples) +For more details about params, read the Wiki page: [**Advanced change log generation examples**](https://github.com/skywinder/github-changelog-generator/wiki/Advanced-change-log-generation-examples) ### Params File -You can put Params in a .github_changelog_generator file in Project Root to override default params: +In your project root, you can put a params file named `.github_changelog_generator` to override default params: Example: ``` @@ -96,36 +96,41 @@ since-tag=1.0.0 ### GitHub token -Since GitHub allows you to make only 50 requests without authentication it's recommended to run this script with a token (`-t, --token` option) +GitHub only allows only 50 unauthenticated requests per hour. +Therefore, it's recommended to run this script with authentication by using a **token**. -**You can easily [generate it here](https://github.com/settings/tokens/new?description=GitHub%20Changelog%20Generator%20token)**. +Here's how: -And: +- [Generate a token here](https://github.com/settings/tokens/new?description=GitHub%20Changelog%20Generator%20token) +- Either: + - Run the script with `--token `; **OR** + - Set the `CHANGELOG_GITHUB_TOKEN` environment variable to your 40 digit token -- Run with key `-t [your-40-digit-token]` -- Or set environment variable `CHANGELOG_GITHUB_TOKEN` and specify there your token. +You can set an environment variable by running the following command at the prompt, or by adding it to your shell profile (e.g., `~/.bash_profile` or `~/.zshrc`): - i.e. add to your `~/.bash_profile` or `~/.zshrc` or any other place to load ENV variables string : + export CHANGELOG_GITHUB_TOKEN="«your-40-digit-github-token»" - export CHANGELOG_GITHUB_TOKEN="your-40-digit-github-token" - -So, if you got error like this: +So, if you got an error like this: >! /Library/Ruby/Gems/2.0.0/gems/github_api-0.12.2/lib/github_api/response/raise_error.rb:14:in `on_complete' -It's time to create this token or wait for 1 hour before GitHub reset the counter for your IP. +It's time to create this token! (Or, wait an hour for GitHub to reset your unauthenticated request limit.) ## Migrating from a manual changelog -Knowing how dedicated you are to your project, you probably haven't been waiting for github-changelog-generator to keep a changelog, -but you most likely wouldn't like to have to open issues and PRs for all past features listed in your historic changelog. +Knowing how dedicated you are to your project, you probably haven't been waiting for `github-changelog-generator` to keep a changelog. +But you probably don't want your project's open issues and PRs for all past features listed in your historic changelog, either. -That's where `--base` comes handy. This option lets you pass a static changelog to be appended at the end of the generated entries. +That's where `--base ` comes in handy! +This option lets append your old manual changelog to the end of the generated entries. If you have a `HISTORY.md` file in your project, it will automatically be picked as the static historical changelog and appended. ### Rake task -You love Rake? So do we! And so we've made it easier for you by providing a Rake task library for your Change log generation. In your Rakefile, use: +You love `rake`? We do, too! So, we've made it even easier for you: +we've provided a `rake` task library for your changelog generation. + +Just put something like this in your `Rakefile`: ```ruby GitHubChangelogGenerator::RakeTask.new :changelog do |config| @@ -134,94 +139,94 @@ GitHubChangelogGenerator::RakeTask.new :changelog do |config| end ``` -All command line options can be passed to the Rake task as `config` parameters. Since you're naming the Rake task yourself, you can create as many as you want, too. +All command line options can be passed to the `rake` task as `config` parameters. And since you're naming the `rake` task yourself, you can create as many as you want. -##Features and advantages of this project -- Generate canonical, neat change log file, followed by [basic change log guidelines](http://keepachangelog.com/) :gem: -- Possible to generate **Unreleased** changes (closed issues that have not released yet) :dizzy: +## Features and advantages of this project +- Generate canonical, neat change log file, followed by [basic change log guidelines](http://keepachangelog.com) :gem: +- Optionally generate **Unreleased** changes (closed issues that have not released yet) :dizzy: - **GitHub Enterprise support** via command line options! :factory: -- Flexible format **customisation**: - - **Customize** issues, that **should be added** to changelog :eight_spoked_asterisk: - - **Custom date format** supported (but get in mind [ISO 8601](http://xkcd.com/1179/) ) :date: - - Ability to manually specify in which version issue was fixed (in case, when closed date is not match) by setting `milestone` of issue the same name as tag of required version :pushpin: - - Automatically **exclude specific issues**, not-related to change log (any issue, that has label `question` `duplicate` `invalid` `wontfix`by default) :scissors: -- **Distinguish** issues **according labels**. :mag_right: - - Merged pull requests (all `merged` pull-requests) :twisted_rightwards_arrows: - - Bug fixes (by label `bug` in issue) :beetle: - - Enhancements (by label `enhancement` in issue) :star2: - - Issues (closed issues `w/o any labels`) :non-potable_water: +- Flexible format **customization**: + - **Customize** issues that **should be added** to changelog :eight_spoked_asterisk: + - **Custom date formats** supported (but keep [ISO 8601](http://xkcd.com/1179/) in mind!) :date: + - Manually specify the version that fixed an issue (for cases when the issue's Closed date doesn't match) by giving the issue's `milestone` the same name as the tag of version :pushpin: + - Automatically **exclude specific issues** that are irrelevant to your changelog (by default, any issue labeled `question`, `duplicate`, `invalid`, or `wontfix`) :scissors: +- **Distinguish** issues **by labels**. :mag_right: + - Merged pull requests (all merged pull-requests) :twisted_rightwards_arrows: + - Bug fixes (issues labeled `bug`) :beetle: + - Enhancements (issues labeled `enhancement`) :star2: + - Issues (closed issues with no labels) :non-potable_water: -- You can manually set which labels should be included/excluded. :wrench: -- Apply a lot of other customisations, to fit changelog for your personal style :tophat: -(*look `github_changelog_generator --help` for details)* +- Manually include or exclude issues by labels :wrench: +- Customize lots more! Tweak the changelog to fit your preferences :tophat: +(*See `github_changelog_generator --help` for details)* ###Alternatives -Here is a [wikipage list of alternatives](https://github.com/skywinder/Github-Changelog-Generator/wiki/Alternatives), that I found. But none satisfied my requirements. +Here is a [wikipage list of alternatives](https://github.com/skywinder/Github-Changelog-Generator/wiki/Alternatives) that I found. But none satisfied my requirements. -*If you know other projects - feel free to edit this Wiki page!* +*If you know other projects, feel free to edit this Wiki page!* ### Projects using this library -[Wikipage with list of projects](https://github.com/skywinder/Github-Changelog-Generator/wiki/Projects-using-Github-Changelog-Generator) +Here's a [wikipage list of projects](https://github.com/skywinder/Github-Changelog-Generator/wiki/Projects-using-Github-Changelog-Generator). If you've used this project in a live app, please let me know! Nothing makes me happier than seeing someone else take my work and go wild with it. -*If you are using `github_changelog_generator` for generation change log in your project or know another project that uses it, please add it to [this] (https://github.com/skywinder/Github-Changelog-Generator/wiki/Projects-using-Github-Changelog-Generator) list.* +*If you are using `github_changelog_generator` to generate your project's changelog, or know of other projects using it, please [add it to this list] (https://github.com/skywinder/Github-Changelog-Generator/wiki/Projects-using-Github-Changelog-Generator).* ## Am I missing some essential feature? - **Nothing is impossible!** -- Open an [issue](https://github.com/skywinder/Github-Changelog-Generator/issues/new) and let's make generator better together! +- Open an [issue](https://github.com/skywinder/Github-Changelog-Generator/issues/new) and let's make the generator better together! -- *Bug reports, feature requests, patches, well-wishes are always welcome* :heavy_exclamation_mark: +- *Bug reports, feature requests, patches, and well-wishes are always welcome.* :heavy_exclamation_mark: ## FAQ - ***I already use GitHub Releases. Why do I need this?*** -GitHub Releases is a very good thing. And it's very good practice to maintain it (not so much people using it yet)! :congratulations: +GitHub Releases is a very good thing. And it's very good practice to maintain it. (Not a lot of people are using it yet!) :congratulations: -*BDW: I would like to support GitHub Releases in [next releases](https://github.com/skywinder/github-changelog-generator/issues/56) ;)* +*BTW: I would like to support GitHub Releases in [next releases](https://github.com/skywinder/github-changelog-generator/issues/56) ;)* -I'm not try to compare quality of auto-generated and manually generated logs.. but: +I'm not trying to compare the quality of handwritten and auto-generated logs. That said.... -The auto generated Changelog really helps even if you manually fill Releases notes! +An auto-generated changelog really helps, even if you manually fill in the release notes! For example: -When I found a closed bug - it's very useful to understand, in which release it was fixed. In that case you can easily find this issue by \# in `CHANGELOG.md`. +When I found a closed bug, it's very useful know which release fixed it. +In this case, you can easily find the issue by \# in `CHANGELOG.md`. -- it's not so quite easy to find it in manually filled Releases notes. -- this file can also help you to build your Release note and not miss features in manually-filled list. +- it's not quite as easy to find this in handwritten releases notes +- a generated file saves you the trouble of remembering everything; + sometimes people forget to add things to a handwritten file -In the end: +Ultimately, I think GitHub Releases is ideal for end-users. +Meanwhile, `CHANGELOG.md` lives right in the repository, with its detailed list of changes, which is handy for developers. +Finally, there's nothing wrong with using GitHub Releases alongside `CHANGELOG.md` in this combination. -I think, that GitHub Releases is more for end-users. -But `CHANGELOG.md` could stay in the repo for developers with detailed list of changes. -And it's nothing bad to combine GitHub Releases and `CHANGELOG.md` file together in that manner. +- ***I received a warning: "GitHub API rate limit exceed" What does this mean?*** -- ***I received a warning: GitHub API rate limit exceed, what does this mean?*** +GitHub [limits the number of API requests](https://developer.github.com/v3/#rate-limiting) you can make in an hour. You can make up to 5,000 requests per hour. For unauthenticated requests, the rate limit is only up to 60 requests per hour. Unauthenticated requests are associated with your IP address (not the user making requests). -GitHub [limits the number of API requests](https://developer.github.com/v3/#rate-limiting) you can make in an hour. You can make up to 5,000 requests per hour. For unauthenticated requests, the rate limit allows you to make up to 60 requests per hour. Unauthenticated requests are associated with your IP address, and not the user making requests. +If you're seeing this warning, please do the following: -If you're seeing this warning: - -1. Make sure you're providing an OAuth token so you're not anonymously making requests. This will increase the number of requests from 60 to 5000 per hour. -2. You probably have a large repo with lots of issues/PRs. You can use the `--max-issues NUM` argument to limit the number of issues that are pulled back. For example: `--max-issues 1000` +1. Make sure you're providing an OAuth token, so you're not making requests anonymously. Using an OAuth token increases your hourly request maximum from 60 to 5000. +2. If you have a large repo with lots of issues/PRs, you can use `--max-issues NUM` to limit the number of issues that are pulled back. For example: `--max-issues 1000` ## Contributing -1. Create an issue to discuss about your idea +1. Create an issue and describe your idea 2. [Fork it] (https://github.com/skywinder/Github-Changelog-Generator/fork) 3. Create your feature branch (`git checkout -b my-new-feature`) 4. Commit your changes (`git commit -am 'Add some feature'`) -5. Push to the branch (`git push origin my-new-feature`) +5. Publish the branch (`git push origin my-new-feature`) 6. Create a new Pull Request 7. Profit! :white_check_mark: -*To test change log workflow you can use [test repo](https://github.com/skywinder/changelog_test/)* +*To test your workflow with changelog generator, you can use [test repo](https://github.com/skywinder/changelog_test/)* ## License From 2ce8fd07ce2c5f63f7f7a70e462bff160affe189 Mon Sep 17 00:00:00 2001 From: Dlani Mendes Date: Wed, 30 Sep 2015 16:52:13 -0300 Subject: [PATCH 04/10] Git Subcommand --- .rubocop.yml | 4 ++++ bin/git-generate-changelog | 4 ++++ ext/mkrf_conf.rb | 10 ++++++++++ github_changelog_generator.gemspec | 3 ++- man/git-generate-changelog.1 | 27 +++++++++++++++++++++++++++ 5 files changed, 47 insertions(+), 1 deletion(-) create mode 100755 bin/git-generate-changelog create mode 100644 ext/mkrf_conf.rb create mode 100644 man/git-generate-changelog.1 diff --git a/.rubocop.yml b/.rubocop.yml index d9eac99..87f73fc 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -14,3 +14,7 @@ Metrics/ClassLength: # Configuration parameters: CountComments. Metrics/MethodLength: Enabled: false + +Style/FileName: + Exclude: + - 'bin/git-generate-changelog' diff --git a/bin/git-generate-changelog b/bin/git-generate-changelog new file mode 100755 index 0000000..5d0d48a --- /dev/null +++ b/bin/git-generate-changelog @@ -0,0 +1,4 @@ +#! /usr/bin/env ruby + +require_relative "../lib/github_changelog_generator" +GitHubChangelogGenerator::ChangelogGenerator.new.run diff --git a/ext/mkrf_conf.rb b/ext/mkrf_conf.rb new file mode 100644 index 0000000..60e36a3 --- /dev/null +++ b/ext/mkrf_conf.rb @@ -0,0 +1,10 @@ +PREFIX = "/usr/local" +MANPREFIX = "#{PREFIX}/share/man/man1" +MAN_PAGES = "man/git-*" + +require "fileutils" + +Dir.glob(MAN_PAGES).each do |f| + filename = File.basename(f) + FileUtils.cp(f, "#{MANPREFIX}/#{filename}") +end diff --git a/github_changelog_generator.gemspec b/github_changelog_generator.gemspec index fd6249d..f4b44cf 100644 --- a/github_changelog_generator.gemspec +++ b/github_changelog_generator.gemspec @@ -16,7 +16,8 @@ Gem::Specification.new do |spec| spec.summary = "Script, that automatically generate changelog from your tags, issues, labels and pull requests." spec.description = "Changelog generation has never been so easy. Fully automate changelog generation - this gem generate change log file based on tags, issues and merged pull requests from Github issue tracker." spec.homepage = "https://github.com/skywinder/Github-Changelog-Generator" - spec.license = "MIT" + spec.license = "MIT" + spec.extensions = "ext/mkrf_conf.rb" spec.files = `git ls-files -z`.split("\x0") spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) } diff --git a/man/git-generate-changelog.1 b/man/git-generate-changelog.1 new file mode 100644 index 0000000..bdf7897 --- /dev/null +++ b/man/git-generate-changelog.1 @@ -0,0 +1,27 @@ +.\" Manpage for git-activity +.TH man 1 "Sep 2015" "1.0" "git genrate-changelog man page" +.SH NAME +git activity \- Generate changelog from github +.SH SYNOPSIS +git generate-changelog [-h|--help] [-u|--user] [-p|--project] +.SH DESCRIPTION +Automatically generate change log from your tags, issues, labels and pull requests on GitHub. +.SH OPTIONS +.TP +.I --h +Show helper provide from gem. +.TP +.I --help +Thos this man page. +.TP +.I -u | --user github_username +Username of the owner of target GitHub repo +.TP +.I -p | --project github_project +Name of project on GitHub Just convenience options to specify user/project: +.SH SEE ALSO +git-for-each-ref(1) +.SH BUGS +No known bugs. +.SH AUTHOR +Petr Korolev From a15e45da943e0e00c2ad168cfeb847140d6dd8da Mon Sep 17 00:00:00 2001 From: Petr Korolev Date: Thu, 1 Oct 2015 23:50:48 +0300 Subject: [PATCH 05/10] add md man file --- man/git-generate-changelog.md | 179 ++++++++++++++++++++++++++++++++++ 1 file changed, 179 insertions(+) create mode 100644 man/git-generate-changelog.md diff --git a/man/git-generate-changelog.md b/man/git-generate-changelog.md new file mode 100644 index 0000000..a12c4e0 --- /dev/null +++ b/man/git-generate-changelog.md @@ -0,0 +1,179 @@ +git-generate-changelog(1) - Generate changelog from github +================================ + +## SYNOPSIS + +`git generate-changelog` [-h|--help] [-u|--user] [-p|--project] + +## DESCRIPTION + +Automatically generate change log from your tags, issues, labels and pull requests on GitHub. + +## OPTIONS + + -u, --user [USER] + + Username of the owner of target GitHub repo + + -p, --project [PROJECT] + + Name of project on GitHub + + -t, --token [TOKEN] + + To make more than 50 requests per hour your GitHub token is required. You can generate it at: https://github.com/settings/tokens/new + + -f, --date-format [FORMAT] + + Date format. Default is %Y-%m-%d + + -o, --output [NAME] + + Output file. Default is CHANGELOG.md + + -b, --base [NAME] + + Optional base file to append generated changes to. + + --bugs-label [LABEL] + + Setup custom label for bug-fixes section. Default is "**Fixed bugs:** + + --enhancement-label [LABEL] + + Setup custom label for enhancements section. Default is "**Implemented enhancements:**" + + --issues-label [LABEL] + + Setup custom label for closed-issues section. Default is "**Closed issues:**" + + --header-label [LABEL] + + Setup custom header label. Default is "# Change Log" + + --pr-label [LABEL] + + Setup custom label for pull requests section. Default is "**Merged pull requests:**" + + --[no-]issues + + Include closed issues in changelog. Default is true + + --[no-]issues-wo-labels + + Include closed issues without labels in changelog. Default is true + + --[no-]pr-wo-labels + + Include pull requests without labels in changelog. Default is true + + --[no-]pull-requests + + Include pull-requests in changelog. Default is true + + --[no-]filter-by-milestone + + Use milestone to detect when issue was resolved. Default is true + + --[no-]author + + Add author of pull-request in the end. Default is true + + --unreleased-only + + Generate log from unreleased closed issues only. + + --[no-]unreleased + + Add to log unreleased closed issues. Default is true + + --unreleased-label [label] + + Add to log unreleased closed issues. Default is true + + --[no-]compare-link + + Include compare link (Full Changelog) between older version and newer version. Default is true + + --include-labels x,y,z + + Only issues with the specified labels will be included in the changelog. + + --exclude-labels x,y,z + + Issues with the specified labels will be always excluded from changelog. Default is 'duplicate,question,invalid,wontfix' + + --bug-labels x,y,z + + Issues with the specified labels will be always added to "Fixed bugs" section. Default is 'bug,Bug' + + --enhancement-labels x,y,z + + Issues with the specified labels will be always added to "Implemented enhancements" section. Default is 'enhancement,Enhancement' + + --between-tags x,y,z + + Change log will be filled only between specified tags + + --exclude-tags x,y,z + + Change log will exclude specified tags + + --since-tag x + + Change log will start after specified tag + + --due-tag x + + Change log will end before specified tag + + --max-issues [NUMBER] + + Max number of issues to fetch from GitHub. Default is unlimited + + --release-url [URL] + + The URL to point to for release links, in printf format (with the tag as variable). + + --github-site [URL] + + The Enterprise Github site on which your project is hosted. + + --github-api [URL] + + The enterprise endpoint to use for your Github API. + + --simple-list + + Create simple list from issues and pull requests. Default is false. + + --future-release [RELEASE-VERSION] + + Put the unreleased changes in the specified release number. + + --[no-]verbose + + Run verbosely. Default is true + + -v, --version + + Print version number + + -h, --help + + Displays Help + + +## EXAMPLES + +## AUTHOR + +Written by Petr Korolev sky4winder@gmail.com + +## REPORTING BUGS + +<> + +## SEE ALSO + +<> From 341fb109ab30d7a0a2cb5447655ab5eefdf917a0 Mon Sep 17 00:00:00 2001 From: Petr Korolev Date: Fri, 2 Oct 2015 00:00:23 +0300 Subject: [PATCH 06/10] Genrated files by command ronn ./man/git-generate-changelog.md --- man/git-generate-changelog.1 | 277 +++++++++++++++++++++++++++++--- man/git-generate-changelog.html | 262 ++++++++++++++++++++++++++++++ 2 files changed, 513 insertions(+), 26 deletions(-) create mode 100644 man/git-generate-changelog.html diff --git a/man/git-generate-changelog.1 b/man/git-generate-changelog.1 index bdf7897..a5d4737 100644 --- a/man/git-generate-changelog.1 +++ b/man/git-generate-changelog.1 @@ -1,27 +1,252 @@ -.\" Manpage for git-activity -.TH man 1 "Sep 2015" "1.0" "git genrate-changelog man page" -.SH NAME -git activity \- Generate changelog from github -.SH SYNOPSIS -git generate-changelog [-h|--help] [-u|--user] [-p|--project] -.SH DESCRIPTION -Automatically generate change log from your tags, issues, labels and pull requests on GitHub. -.SH OPTIONS -.TP -.I --h -Show helper provide from gem. -.TP -.I --help -Thos this man page. -.TP -.I -u | --user github_username +.\" generated with Ronn/v0.7.3 +.\" http://github.com/rtomayko/ronn/tree/0.7.3 +. +.TH "GIT\-GENERATE\-CHANGELOG" "1" "October 2015" "" "" +. +.SH "NAME" +\fBgit\-generate\-changelog\fR \- Generate changelog from github +. +.SH "SYNOPSIS" +\fBgit generate\-changelog\fR [\-h|\-\-help] [\-u|\-\-user] [\-p|\-\-project] +. +.SH "DESCRIPTION" +Automatically generate change log from your tags, issues, labels and pull requests on GitHub\. +. +.SH "OPTIONS" +\-u, \-\-user [USER] +. +.P Username of the owner of target GitHub repo -.TP -.I -p | --project github_project -Name of project on GitHub Just convenience options to specify user/project: -.SH SEE ALSO -git-for-each-ref(1) -.SH BUGS -No known bugs. -.SH AUTHOR -Petr Korolev +. +.P +\-p, \-\-project [PROJECT] +. +.P +Name of project on GitHub +. +.P +\-t, \-\-token [TOKEN] +. +.P +To make more than 50 requests per hour your GitHub token is required\. You can generate it at: https://github\.com/settings/tokens/new +. +.P +\-f, \-\-date\-format [FORMAT] +. +.P +Date format\. Default is %Y\-%m\-%d +. +.P +\-o, \-\-output [NAME] +. +.P +Output file\. Default is CHANGELOG\.md +. +.P +\-b, \-\-base [NAME] +. +.P +Optional base file to append generated changes to\. +. +.P +\-\-bugs\-label [LABEL] +. +.P +Setup custom label for bug\-fixes section\. Default is "\fBFixed bugs:\fR +. +.P +\-\-enhancement\-label [LABEL] +. +.P +Setup custom label for enhancements section\. Default is "\fBImplemented enhancements:\fR" +. +.P +\-\-issues\-label [LABEL] +. +.P +Setup custom label for closed\-issues section\. Default is "\fBClosed issues:\fR" +. +.P +\-\-header\-label [LABEL] +. +.P +Setup custom header label\. Default is "# Change Log" +. +.P +\-\-pr\-label [LABEL] +. +.P +Setup custom label for pull requests section\. Default is "\fBMerged pull requests:\fR" +. +.P +\-\-[no\-]issues +. +.P +Include closed issues in changelog\. Default is true +. +.P +\-\-[no\-]issues\-wo\-labels +. +.P +Include closed issues without labels in changelog\. Default is true +. +.P +\-\-[no\-]pr\-wo\-labels +. +.P +Include pull requests without labels in changelog\. Default is true +. +.P +\-\-[no\-]pull\-requests +. +.P +Include pull\-requests in changelog\. Default is true +. +.P +\-\-[no\-]filter\-by\-milestone +. +.P +Use milestone to detect when issue was resolved\. Default is true +. +.P +\-\-[no\-]author +. +.P +Add author of pull\-request in the end\. Default is true +. +.P +\-\-unreleased\-only +. +.P +Generate log from unreleased closed issues only\. +. +.P +\-\-[no\-]unreleased +. +.P +Add to log unreleased closed issues\. Default is true +. +.P +\-\-unreleased\-label [label] +. +.P +Add to log unreleased closed issues\. Default is true +. +.P +\-\-[no\-]compare\-link +. +.P +Include compare link (Full Changelog) between older version and newer version\. Default is true +. +.P +\-\-include\-labels x,y,z +. +.P +Only issues with the specified labels will be included in the changelog\. +. +.P +\-\-exclude\-labels x,y,z +. +.P +Issues with the specified labels will be always excluded from changelog\. Default is \'duplicate,question,invalid,wontfix\' +. +.P +\-\-bug\-labels x,y,z +. +.P +Issues with the specified labels will be always added to "Fixed bugs" section\. Default is \'bug,Bug\' +. +.P +\-\-enhancement\-labels x,y,z +. +.P +Issues with the specified labels will be always added to "Implemented enhancements" section\. Default is \'enhancement,Enhancement\' +. +.P +\-\-between\-tags x,y,z +. +.P +Change log will be filled only between specified tags +. +.P +\-\-exclude\-tags x,y,z +. +.P +Change log will exclude specified tags +. +.P +\-\-since\-tag x +. +.P +Change log will start after specified tag +. +.P +\-\-due\-tag x +. +.P +Change log will end before specified tag +. +.P +\-\-max\-issues [NUMBER] +. +.P +Max number of issues to fetch from GitHub\. Default is unlimited +. +.P +\-\-release\-url [URL] +. +.P +The URL to point to for release links, in printf format (with the tag as variable)\. +. +.P +\-\-github\-site [URL] +. +.P +The Enterprise Github site on which your project is hosted\. +. +.P +\-\-github\-api [URL] +. +.P +The enterprise endpoint to use for your Github API\. +. +.P +\-\-simple\-list +. +.P +Create simple list from issues and pull requests\. Default is false\. +. +.P +\-\-future\-release [RELEASE\-VERSION] +. +.P +Put the unreleased changes in the specified release number\. +. +.P +\-\-[no\-]verbose +. +.P +Run verbosely\. Default is true +. +.P +\-v, \-\-version +. +.P +Print version number +. +.P +\-h, \-\-help +. +.P +Displays Help +. +.SH "EXAMPLES" +. +.SH "AUTHOR" +Written by Petr Korolev sky4winder@gmail\.com +. +.SH "REPORTING BUGS" +<\fIhttps://github\.com/skywinder/github\-changelog\-generator/issues\fR> +. +.SH "SEE ALSO" +<\fIhttps://github\.com/skywinder/github\-changelog\-generator/\fR> diff --git a/man/git-generate-changelog.html b/man/git-generate-changelog.html new file mode 100644 index 0000000..be231c4 --- /dev/null +++ b/man/git-generate-changelog.html @@ -0,0 +1,262 @@ + + + + + + git-generate-changelog(1) - Generate changelog from github + + + + +
+ + + +
    +
  1. git-generate-changelog(1)
  2. +
  3. +
  4. git-generate-changelog(1)
  5. +
+ +

NAME

+

+ git-generate-changelog - Generate changelog from github +

+ +

SYNOPSIS

+ +

git generate-changelog [-h|--help] [-u|--user] [-p|--project]

+ +

DESCRIPTION

+ +

Automatically generate change log from your tags, issues, labels and pull requests on GitHub.

+ +

OPTIONS

+ +

-u, --user [USER]

+ +

Username of the owner of target GitHub repo

+ +

-p, --project [PROJECT]

+ +

Name of project on GitHub

+ +

-t, --token [TOKEN]

+ +

To make more than 50 requests per hour your GitHub token is required. You can generate it at: https://github.com/settings/tokens/new

+ +

-f, --date-format [FORMAT]

+ +

Date format. Default is %Y-%m-%d

+ +

-o, --output [NAME]

+ +

Output file. Default is CHANGELOG.md

+ +

-b, --base [NAME]

+ +

Optional base file to append generated changes to.

+ +

--bugs-label [LABEL]

+ +

Setup custom label for bug-fixes section. Default is "Fixed bugs:

+ +

--enhancement-label [LABEL]

+ +

Setup custom label for enhancements section. Default is "Implemented enhancements:"

+ +

--issues-label [LABEL]

+ +

Setup custom label for closed-issues section. Default is "Closed issues:"

+ +

--header-label [LABEL]

+ +

Setup custom header label. Default is "# Change Log"

+ +

--pr-label [LABEL]

+ +

Setup custom label for pull requests section. Default is "Merged pull requests:"

+ +

--[no-]issues

+ +

Include closed issues in changelog. Default is true

+ +

--[no-]issues-wo-labels

+ +

Include closed issues without labels in changelog. Default is true

+ +

--[no-]pr-wo-labels

+ +

Include pull requests without labels in changelog. Default is true

+ +

--[no-]pull-requests

+ +

Include pull-requests in changelog. Default is true

+ +

--[no-]filter-by-milestone

+ +

Use milestone to detect when issue was resolved. Default is true

+ +

--[no-]author

+ +

Add author of pull-request in the end. Default is true

+ +

--unreleased-only

+ +

Generate log from unreleased closed issues only.

+ +

--[no-]unreleased

+ +

Add to log unreleased closed issues. Default is true

+ +

--unreleased-label [label]

+ +

Add to log unreleased closed issues. Default is true

+ +

--[no-]compare-link

+ +

Include compare link (Full Changelog) between older version and newer version. Default is true

+ +

--include-labels x,y,z

+ +

Only issues with the specified labels will be included in the changelog.

+ +

--exclude-labels x,y,z

+ +

Issues with the specified labels will be always excluded from changelog. Default is 'duplicate,question,invalid,wontfix'

+ +

--bug-labels x,y,z

+ +

Issues with the specified labels will be always added to "Fixed bugs" section. Default is 'bug,Bug'

+ +

--enhancement-labels x,y,z

+ +

Issues with the specified labels will be always added to "Implemented enhancements" section. Default is 'enhancement,Enhancement'

+ +

--between-tags x,y,z

+ +

Change log will be filled only between specified tags

+ +

--exclude-tags x,y,z

+ +

Change log will exclude specified tags

+ +

--since-tag x

+ +

Change log will start after specified tag

+ +

--due-tag x

+ +

Change log will end before specified tag

+ +

--max-issues [NUMBER]

+ +

Max number of issues to fetch from GitHub. Default is unlimited

+ +

--release-url [URL]

+ +

The URL to point to for release links, in printf format (with the tag as variable).

+ +

--github-site [URL]

+ +

The Enterprise Github site on which your project is hosted.

+ +

--github-api [URL]

+ +

The enterprise endpoint to use for your Github API.

+ +

--simple-list

+ +

Create simple list from issues and pull requests. Default is false.

+ +

--future-release [RELEASE-VERSION]

+ +

Put the unreleased changes in the specified release number.

+ +

--[no-]verbose

+ +

Run verbosely. Default is true

+ +

-v, --version

+ +

Print version number

+ +

-h, --help

+ +

Displays Help

+ +

EXAMPLES

+ +

AUTHOR

+ +

Written by Petr Korolev sky4winder@gmail.com

+ +

REPORTING BUGS

+ +

<https://github.com/skywinder/github-changelog-generator/issues>

+ +

SEE ALSO

+ +

<https://github.com/skywinder/github-changelog-generator/>

+ + +
    +
  1. +
  2. October 2015
  3. +
  4. git-generate-changelog(1)
  5. +
+ +
+ + From 405836971078f8b52e9bef95d126c459e9231ce3 Mon Sep 17 00:00:00 2001 From: Dlani Mendes Date: Fri, 2 Oct 2015 18:14:19 -0300 Subject: [PATCH 07/10] Adjusts Run Post Install --- .travis.yml | 2 +- Rakefile | 16 +++++++++++++++- ext/mkrf_conf.rb | 10 ---------- github_changelog_generator.gemspec | 4 ++-- 4 files changed, 18 insertions(+), 14 deletions(-) delete mode 100644 ext/mkrf_conf.rb diff --git a/.travis.yml b/.travis.yml index 86f87b0..cf085fc 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,7 +6,7 @@ before_install: rvm: - 2.1.0 script: -- bundle exec rake +- bundle exec rake checks notifications: email: recipients: diff --git a/Rakefile b/Rakefile index 4254421..3c6c2ea 100644 --- a/Rakefile +++ b/Rakefile @@ -1,7 +1,21 @@ +require "bundler/gem_tasks" require "rubocop/rake_task" require "rspec/core/rake_task" +require "pathname" +require "fileutils" RuboCop::RakeTask.new RSpec::Core::RakeTask.new(:rspec) -task default: [:rubocop, :rspec] +task :create_man do |_t| + os_prefix = "/usr/local" + man_prefix = Pathname("#{os_prefix}/share/man/man1") + man_pages = "man/git-*" + + Pathname.glob(man_pages) do |path| + FileUtils.cp(path, man_prefix + path.basename) + end +end + +task checks: [:rubocop, :rspec] +task default: [:checks, :create_man] diff --git a/ext/mkrf_conf.rb b/ext/mkrf_conf.rb deleted file mode 100644 index 60e36a3..0000000 --- a/ext/mkrf_conf.rb +++ /dev/null @@ -1,10 +0,0 @@ -PREFIX = "/usr/local" -MANPREFIX = "#{PREFIX}/share/man/man1" -MAN_PAGES = "man/git-*" - -require "fileutils" - -Dir.glob(MAN_PAGES).each do |f| - filename = File.basename(f) - FileUtils.cp(f, "#{MANPREFIX}/#{filename}") -end diff --git a/github_changelog_generator.gemspec b/github_changelog_generator.gemspec index f4b44cf..b110954 100644 --- a/github_changelog_generator.gemspec +++ b/github_changelog_generator.gemspec @@ -16,8 +16,8 @@ Gem::Specification.new do |spec| spec.summary = "Script, that automatically generate changelog from your tags, issues, labels and pull requests." spec.description = "Changelog generation has never been so easy. Fully automate changelog generation - this gem generate change log file based on tags, issues and merged pull requests from Github issue tracker." spec.homepage = "https://github.com/skywinder/Github-Changelog-Generator" - spec.license = "MIT" - spec.extensions = "ext/mkrf_conf.rb" + spec.license = "MIT" + spec.extensions = ["Rakefile"] spec.files = `git ls-files -z`.split("\x0") spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) } From 73cba095b257e45427a5340c6efedd2ac31c07a5 Mon Sep 17 00:00:00 2001 From: Petr Korolev Date: Tue, 23 Feb 2016 11:41:43 +0200 Subject: [PATCH 08/10] Fix #328 --- lib/github_changelog_generator/generator/generator_tags.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/github_changelog_generator/generator/generator_tags.rb b/lib/github_changelog_generator/generator/generator_tags.rb index 0966df1..006a345 100644 --- a/lib/github_changelog_generator/generator/generator_tags.rb +++ b/lib/github_changelog_generator/generator/generator_tags.rb @@ -58,7 +58,7 @@ module GitHubChangelogGenerator if @since_tag.nil? && @options[:base] && File.file?(@options[:base]) reader = GitHubChangelogGenerator::Reader.new content = reader.read(@options[:base]) - @since_tag = content[0]["version"] if content + @since_tag = content[0]["version"] if content.count && content end @since_tag end From a9313dab6bc0942a442f6b50ac55ebe2f1115f91 Mon Sep 17 00:00:00 2001 From: Petr Korolev Date: Tue, 23 Feb 2016 11:55:19 +0200 Subject: [PATCH 09/10] update bundle --- Gemfile.lock | 50 +++++++++++++++++--------------------------------- 1 file changed, 17 insertions(+), 33 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 91835f3..01cf59c 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -10,14 +10,11 @@ GEM specs: addressable (2.4.0) ast (2.2.0) - astrolabe (1.3.1) - parser (~> 2.2) codeclimate-test-reporter (0.4.8) simplecov (>= 0.7.1, < 1.0.0) colorize (0.7.7) - coveralls (0.8.10) + coveralls (0.8.11) json (~> 1.8) - rest-client (>= 1.6.8, < 2) simplecov (~> 0.11.0) term-ansicolor (~> 1.3) thor (~> 0.19.1) @@ -26,8 +23,6 @@ GEM thread_safe (~> 0.3, >= 0.3.1) diff-lcs (1.2.5) docile (1.1.5) - domain_name (0.5.25) - unf (>= 0.0.5, < 1.0.0) faraday (0.9.2) multipart-post (>= 1.2, < 3) github_api (0.13.1) @@ -38,53 +33,44 @@ GEM multi_json (>= 1.7.5, < 2.0) oauth2 hashie (3.4.3) - http-cookie (1.0.2) - domain_name (~> 0.5) json (1.8.3) - jwt (1.5.2) - mime-types (2.99) + jwt (1.5.1) multi_json (1.11.2) multi_xml (0.5.5) multipart-post (2.0.0) - netrc (0.11.0) - oauth2 (1.0.0) + oauth2 (1.1.0) faraday (>= 0.8, < 0.10) - jwt (~> 1.0) + jwt (~> 1.0, < 1.5.2) multi_json (~> 1.3) multi_xml (~> 0.5) - rack (~> 1.2) - parser (2.2.3.0) - ast (>= 1.1, < 3.0) + rack (>= 1.2, < 3) + parser (2.3.0.6) + ast (~> 2.2) powerpack (0.1.1) rack (1.6.4) - rainbow (2.0.0) - rake (10.4.2) - rest-client (1.8.0) - http-cookie (>= 1.0.2, < 2.0) - mime-types (>= 1.16, < 3.0) - netrc (~> 0.7) + rainbow (2.1.0) + rake (10.5.0) rspec (3.4.0) rspec-core (~> 3.4.0) rspec-expectations (~> 3.4.0) rspec-mocks (~> 3.4.0) - rspec-core (3.4.1) + rspec-core (3.4.3) rspec-support (~> 3.4.0) rspec-expectations (3.4.0) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.4.0) - rspec-mocks (3.4.0) + rspec-mocks (3.4.1) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.4.0) rspec-support (3.4.1) - rubocop (0.35.1) - astrolabe (~> 1.3) - parser (>= 2.2.3.0, < 3.0) + rubocop (0.37.2) + parser (>= 2.3.0.4, < 3.0) powerpack (~> 0.1) rainbow (>= 1.99.1, < 3.0) ruby-progressbar (~> 1.7) - tins (<= 1.6.0) + unicode-display_width (~> 0.3) ruby-progressbar (1.7.5) - simplecov (0.11.1) + simplecov (0.11.2) docile (~> 1.1.0) json (~> 1.8) simplecov-html (~> 0.10.0) @@ -94,9 +80,7 @@ GEM thor (0.19.1) thread_safe (0.3.5) tins (1.6.0) - unf (0.1.4) - unf_ext - unf_ext (0.0.7.1) + unicode-display_width (0.3.1) PLATFORMS ruby @@ -112,4 +96,4 @@ DEPENDENCIES simplecov (~> 0.10) BUNDLED WITH - 1.10.6 + 1.11.2 From fa0267b586a08c634cc1dca28afdafeca6500c7f Mon Sep 17 00:00:00 2001 From: Petr Korolev Date: Tue, 23 Feb 2016 12:25:55 +0200 Subject: [PATCH 10/10] Rubocop fixes --- Gemfile.lock | 2 +- lib/github_changelog_generator.rb | 2 +- lib/github_changelog_generator/fetcher.rb | 16 +++---- .../generator/generator_generation.rb | 44 +++++++++---------- .../generator/generator_processor.rb | 26 +++++------ .../generator/generator_tags.rb | 22 +++++----- lib/github_changelog_generator/helper.rb | 12 ++--- lib/github_changelog_generator/parser_file.rb | 4 +- lib/github_changelog_generator/task.rb | 6 +-- lib/github_changelog_generator/version.rb | 2 +- spec/unit/fetcher_spec.rb | 6 +-- 11 files changed, 71 insertions(+), 71 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 01cf59c..a4bce23 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - github_changelog_generator (1.10.1) + github_changelog_generator (1.11.0) colorize (~> 0.7) github_api (~> 0.12) diff --git a/lib/github_changelog_generator.rb b/lib/github_changelog_generator.rb index 31d86ae..c689c95 100755 --- a/lib/github_changelog_generator.rb +++ b/lib/github_changelog_generator.rb @@ -28,7 +28,7 @@ module GitHubChangelogGenerator def run log = @generator.compound_changelog - output_filename = "#{@options[:output]}" + output_filename = (@options[:output]).to_s File.open(output_filename, "w") { |file| file.write(log) } puts "Done!" puts "Generated log placed in #{Dir.pwd}/#{output_filename}" diff --git a/lib/github_changelog_generator/fetcher.rb b/lib/github_changelog_generator/fetcher.rb index eef3e6d..f00a943 100644 --- a/lib/github_changelog_generator/fetcher.rb +++ b/lib/github_changelog_generator/fetcher.rb @@ -7,11 +7,11 @@ module GitHubChangelogGenerator class Fetcher PER_PAGE_NUMBER = 30 - CHANGELOG_GITHUB_TOKEN = "CHANGELOG_GITHUB_TOKEN" + CHANGELOG_GITHUB_TOKEN = "CHANGELOG_GITHUB_TOKEN".freeze GH_RATE_LIMIT_EXCEEDED_MSG = "Warning: Can't finish operation: GitHub API rate limit exceeded, change log may be " \ - "missing some issues. You can limit the number of issues fetched using the `--max-issues NUM` argument." + "missing some issues. You can limit the number of issues fetched using the `--max-issues NUM` argument.".freeze NO_TOKEN_PROVIDED = "Warning: No token provided (-t option) and variable $CHANGELOG_GITHUB_TOKEN was not found. " \ - "This script can make only 50 requests to GitHub API per hour without token!" + "This script can make only 50 requests to GitHub API per hour without token!".freeze def initialize(options = {}) @options = options || {} @@ -123,16 +123,16 @@ Make sure, that you push tags to remote repo via 'git push --tags'".yellow def fetch_closed_pull_requests pull_requests = [] begin - if @options[:release_branch].nil? - response = @github.pull_requests.list @options[:user], + response = if @options[:release_branch].nil? + @github.pull_requests.list @options[:user], @options[:project], state: "closed" - else - response = @github.pull_requests.list @options[:user], + else + @github.pull_requests.list @options[:user], @options[:project], state: "closed", base: @options[:release_branch] - end + end page_i = 0 count_pages = response.count_pages response.each_page do |page| diff --git a/lib/github_changelog_generator/generator/generator_generation.rb b/lib/github_changelog_generator/generator/generator_generation.rb index cfaafe1..b22fe40 100644 --- a/lib/github_changelog_generator/generator/generator_generation.rb +++ b/lib/github_changelog_generator/generator/generator_generation.rb @@ -12,11 +12,11 @@ module GitHubChangelogGenerator log += @options[:frontmatter] if @options[:frontmatter] log += "#{@options[:header]}\n\n" - if @options[:unreleased_only] - log += generate_log_between_tags(filtered_tags[0], nil) - else - log += generate_log_for_all_tags - end + log += if @options[:unreleased_only] + generate_log_between_tags(filtered_tags[0], nil) + else + generate_log_for_all_tags + end log += File.read(@options[:base]) if File.file?(@options[:base]) @@ -39,10 +39,10 @@ module GitHubChangelogGenerator index2 = hash[tag2] log += generate_log_between_tags(all_tags[index1], all_tags[index2]) else - fail ChangelogGeneratorError, "Can't find tag #{tag2} -> exit".red + raise ChangelogGeneratorError, "Can't find tag #{tag2} -> exit".red end else - fail ChangelogGeneratorError, "Can't find tag #{tag1} -> exit".red + raise ChangelogGeneratorError, "Can't find tag #{tag1} -> exit".red end log end @@ -79,16 +79,16 @@ module GitHubChangelogGenerator time_string = newer_tag_time.strftime @options[:date_format] # Generate tag name and link - if @options[:release_url] - release_url = format(@options[:release_url], newer_tag_link) - else - release_url = "#{project_url}/tree/#{newer_tag_link}" - end - if newer_tag_name.equal? @options[:unreleased_label] - log += "## [#{newer_tag_name}](#{release_url})\n\n" - else - log += "## [#{newer_tag_name}](#{release_url}) (#{time_string})\n" - end + release_url = if @options[:release_url] + format(@options[:release_url], newer_tag_link) + else + "#{project_url}/tree/#{newer_tag_link}" + end + log += if newer_tag_name.equal? @options[:unreleased_label] + "## [#{newer_tag_name}](#{release_url})\n\n" + else + "## [#{newer_tag_name}](#{release_url}) (#{time_string})\n" + end if @options[:compare_link] && older_tag_link # Generate compare link @@ -171,11 +171,11 @@ module GitHubChangelogGenerator unless issue.pull_request.nil? if @options[:author] - if issue.user.nil? - title_with_number += " ({Null user})" - else - title_with_number += " ([#{issue.user.login}](#{issue.user.html_url}))" - end + title_with_number += if issue.user.nil? + " ({Null user})" + else + " ([#{issue.user.login}](#{issue.user.html_url}))" + end end end title_with_number diff --git a/lib/github_changelog_generator/generator/generator_processor.rb b/lib/github_changelog_generator/generator/generator_processor.rb index ae745e6..1791711 100644 --- a/lib/github_changelog_generator/generator/generator_processor.rb +++ b/lib/github_changelog_generator/generator/generator_processor.rb @@ -7,7 +7,7 @@ module GitHubChangelogGenerator unless @options[:exclude_labels].nil? issues = issues.select do |issue| var = issue.labels.map(&:name) & @options[:exclude_labels] - !(var).any? + !var.any? end end issues @@ -83,7 +83,7 @@ module GitHubChangelogGenerator tag_in_range_new = tag_older_new_tag?(newer_tag_time, time) - tag_in_range = (tag_in_range_old) && (tag_in_range_new) + tag_in_range = tag_in_range_old && tag_in_range_new tag_in_range else @@ -93,20 +93,20 @@ module GitHubChangelogGenerator end def tag_older_new_tag?(newer_tag_time, time) - if newer_tag_time.nil? - tag_in_range_new = true - else - tag_in_range_new = time <= newer_tag_time - end + tag_in_range_new = if newer_tag_time.nil? + true + else + time <= newer_tag_time + end tag_in_range_new end def tag_newer_old_tag?(older_tag_time, t) - if older_tag_time.nil? - tag_in_range_old = true - else - tag_in_range_old = t > older_tag_time - end + tag_in_range_old = if older_tag_time.nil? + true + else + t > older_tag_time + end tag_in_range_old end @@ -133,7 +133,7 @@ module GitHubChangelogGenerator def filter_by_include_labels(issues) filtered_issues = @options[:include_labels].nil? ? issues : issues.select do |issue| labels = issue.labels.map(&:name) & @options[:include_labels] - (labels).any? + labels.any? end filtered_issues end diff --git a/lib/github_changelog_generator/generator/generator_tags.rb b/lib/github_changelog_generator/generator/generator_tags.rb index 006a345..fbbc95d 100644 --- a/lib/github_changelog_generator/generator/generator_tags.rb +++ b/lib/github_changelog_generator/generator/generator_tags.rb @@ -19,7 +19,7 @@ module GitHubChangelogGenerator # @param [Hash] tag_name name of the tag # @return [Time] time of specified tag def get_time_of_tag(tag_name) - fail ChangelogGeneratorError, "tag_name is nil".red if tag_name.nil? + raise ChangelogGeneratorError, "tag_name is nil".red if tag_name.nil? name_of_tag = tag_name["name"] time_for_name = @tag_times_hash[name_of_tag] @@ -80,11 +80,11 @@ module GitHubChangelogGenerator if tag if all_tags.map(&:name).include? tag idx = all_tags.index { |t| t.name == tag } - if idx > 0 - filtered_tags = all_tags[0..idx - 1] - else - filtered_tags = [] - end + filtered_tags = if idx > 0 + all_tags[0..idx - 1] + else + [] + end else Helper.log.warn "Warning: can't find tag #{tag}, specified with --since-tag option." end @@ -101,11 +101,11 @@ module GitHubChangelogGenerator if (all_tags.count > 0) && (all_tags.map(&:name).include? tag) idx = all_tags.index { |t| t.name == tag } last_index = all_tags.count - 1 - if idx > 0 && idx < last_index - filtered_tags = all_tags[idx + 1..last_index] - else - filtered_tags = [] - end + filtered_tags = if idx > 0 && idx < last_index + all_tags[idx + 1..last_index] + else + [] + end else Helper.log.warn "Warning: can't find tag #{tag}, specified with --due-tag option." end diff --git a/lib/github_changelog_generator/helper.rb b/lib/github_changelog_generator/helper.rb index 7c13407..15789ec 100644 --- a/lib/github_changelog_generator/helper.rb +++ b/lib/github_changelog_generator/helper.rb @@ -3,14 +3,14 @@ module GitHubChangelogGenerator module Helper # @return true if the currently running program is a unit test def self.test? - defined?SpecHelper + defined? SpecHelper end - if test? - @log ||= Logger.new(nil) # don't show any logs when running tests - else - @log ||= Logger.new(STDOUT) - end + @log ||= if test? + Logger.new(nil) # don't show any logs when running tests + else + Logger.new(STDOUT) + end @log.formatter = proc do |severity, _datetime, _progname, msg| string = "#{msg}\n" diff --git a/lib/github_changelog_generator/parser_file.rb b/lib/github_changelog_generator/parser_file.rb index df92814..38cc54d 100644 --- a/lib/github_changelog_generator/parser_file.rb +++ b/lib/github_changelog_generator/parser_file.rb @@ -20,8 +20,8 @@ module GitHubChangelogGenerator def parse_line!(line) key_sym, value = extract_pair(line) - value = true if value =~ (/^(true|t|yes|y|1)$/i) - value = false if value =~ (/^(false|f|no|n|0)$/i) + value = true if value =~ /^(true|t|yes|y|1)$/i + value = false if value =~ /^(false|f|no|n|0)$/i @options[key_sym] = value rescue raise ParserError, "Config file #{file} is incorrect in line \"#{line.gsub(/[\n\r]+/, '')}\"" diff --git a/lib/github_changelog_generator/task.rb b/lib/github_changelog_generator/task.rb index 035d6d5..f5b5b8e 100644 --- a/lib/github_changelog_generator/task.rb +++ b/lib/github_changelog_generator/task.rb @@ -17,7 +17,7 @@ module GitHubChangelogGenerator between_tags exclude_tags since_tag max_issues github_site github_endpoint simple_list future_release release_branch verbose release_url - base ) + base ).freeze OPTIONS.each do |o| attr_accessor o.to_sym @@ -37,7 +37,7 @@ module GitHubChangelogGenerator def define(args, &task_block) desc "Generate a Change log from GitHub" - task_block.call(*[self, args].slice(0, task_block.arity)) if task_block + yield(*[self, args].slice(0, task_block.arity)) if task_block # clear any (auto-)pre-existing task Rake::Task[@name].clear if Rake::Task.task_defined?(@name) @@ -57,7 +57,7 @@ module GitHubChangelogGenerator log = generator.compound_changelog - output_filename = "#{options[:output]}" + output_filename = (options[:output]).to_s File.open(output_filename, "w") { |file| file.write(log) } puts "Done!" puts "Generated log placed in #{Dir.pwd}/#{output_filename}" diff --git a/lib/github_changelog_generator/version.rb b/lib/github_changelog_generator/version.rb index 9ab5197..d68aa5c 100644 --- a/lib/github_changelog_generator/version.rb +++ b/lib/github_changelog_generator/version.rb @@ -1,3 +1,3 @@ module GitHubChangelogGenerator - VERSION = "1.10.1" + VERSION = "1.11.0".freeze end diff --git a/spec/unit/fetcher_spec.rb b/spec/unit/fetcher_spec.rb index bba0c19..983b741 100644 --- a/spec/unit/fetcher_spec.rb +++ b/spec/unit/fetcher_spec.rb @@ -1,8 +1,8 @@ -VALID_TOKEN = "0123456789abcdef" -INVALID_TOKEN = "0000000000000000" +VALID_TOKEN = "0123456789abcdef".freeze +INVALID_TOKEN = "0000000000000000".freeze DEFAULT_OPTIONS = { user: "skywinder", - project: "changelog_test" } + project: "changelog_test" }.freeze def options_with_invalid_token options = DEFAULT_OPTIONS