Merge pull request #278 from dlanileonardo/master
Auto parse options from file .github_changelog_generator
This commit is contained in:
commit
29c33fec60
10
README.md
10
README.md
|
@ -84,6 +84,16 @@ 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)
|
||||
|
||||
### Params File
|
||||
You can put Params in a .github_changelog_generator file in Project Root to override default params:
|
||||
|
||||
Example:
|
||||
```
|
||||
unreleased=false
|
||||
future-release=5.0.0
|
||||
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)
|
||||
|
|
|
@ -7,6 +7,7 @@ require "benchmark"
|
|||
|
||||
require_relative "github_changelog_generator/helper"
|
||||
require_relative "github_changelog_generator/parser"
|
||||
require_relative "github_changelog_generator/parser_file"
|
||||
require_relative "github_changelog_generator/generator/generator"
|
||||
require_relative "github_changelog_generator/version"
|
||||
require_relative "github_changelog_generator/reader"
|
||||
|
|
|
@ -9,8 +9,10 @@ module GitHubChangelogGenerator
|
|||
def self.parse_options
|
||||
options = get_default_options
|
||||
|
||||
parser = setup_parser(options)
|
||||
parser_file = ParserFile.new options
|
||||
parser_file.parse!
|
||||
|
||||
parser = setup_parser(options)
|
||||
parser.parse!
|
||||
|
||||
if options[:user].nil? || options[:project].nil?
|
||||
|
|
36
lib/github_changelog_generator/parser_file.rb
Normal file
36
lib/github_changelog_generator/parser_file.rb
Normal file
|
@ -0,0 +1,36 @@
|
|||
module GitHubChangelogGenerator
|
||||
class ParserFile
|
||||
def initialize(options)
|
||||
@options = options
|
||||
end
|
||||
|
||||
def file
|
||||
File.expand_path(@options[:params_file] || ".github_changelog_generator")
|
||||
end
|
||||
|
||||
def file?
|
||||
File.exist?(file)
|
||||
end
|
||||
|
||||
def file_open
|
||||
File.open(file)
|
||||
end
|
||||
|
||||
def parse!
|
||||
return unless file?
|
||||
file_open.each do |line|
|
||||
begin
|
||||
key, value = line.split("=")
|
||||
key_sym = key.sub("-", "_").to_sym
|
||||
value = value.gsub(/[\n\r]+/, "")
|
||||
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 "File #{file} is incorrect in line \"#{line.gsub(/[\n\r]+/, '')}\""
|
||||
end
|
||||
end
|
||||
@options
|
||||
end
|
||||
end
|
||||
end
|
0
spec/files/github_changelog_params_empty
Normal file
0
spec/files/github_changelog_params_empty
Normal file
2
spec/files/github_changelog_params_incorrect
Normal file
2
spec/files/github_changelog_params_incorrect
Normal file
|
@ -0,0 +1,2 @@
|
|||
unreleased_label: staging
|
||||
unreleased: false
|
2
spec/files/github_changelog_params_override
Normal file
2
spec/files/github_changelog_params_override
Normal file
|
@ -0,0 +1,2 @@
|
|||
unreleased_label=staging
|
||||
unreleased=false
|
32
spec/unit/parse_file_spec.rb
Normal file
32
spec/unit/parse_file_spec.rb
Normal file
|
@ -0,0 +1,32 @@
|
|||
describe GitHubChangelogGenerator::ParserFile do
|
||||
describe ".github_changelog_generator" do
|
||||
context "when no has file" do
|
||||
let(:options) { {} }
|
||||
let(:parse) { GitHubChangelogGenerator::ParserFile.new(options) }
|
||||
subject { parse.parse! }
|
||||
it { is_expected.to be_nil }
|
||||
end
|
||||
|
||||
context "when file is empty" do
|
||||
let(:options) { { params_file: "spec/files/github_changelog_params_empty" } }
|
||||
let(:parse) { GitHubChangelogGenerator::ParserFile.new(options) }
|
||||
subject { parse.parse! }
|
||||
it { is_expected.to be_a(Hash) }
|
||||
it { is_expected.to eq(options) }
|
||||
end
|
||||
|
||||
context "when file is incorrect" do
|
||||
let(:options) { { params_file: "spec/files/github_changelog_params_incorrect" } }
|
||||
let(:parse) { GitHubChangelogGenerator::ParserFile.new(options) }
|
||||
it { expect { fail.raise! }.to raise_error RuntimeError }
|
||||
end
|
||||
|
||||
context "when override default values" do
|
||||
let(:options) { { params_file: "spec/files/github_changelog_params_override" }.merge(GitHubChangelogGenerator::Parser.get_default_options) }
|
||||
let(:parse) { GitHubChangelogGenerator::ParserFile.new(options) }
|
||||
subject { parse.parse! }
|
||||
it { is_expected.to be_a(Hash) }
|
||||
it { is_expected.to eq(options.merge(unreleased_label: "staging", unreleased: false)) }
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Reference in New Issue
Block a user