Merge pull request #297 from olleolleolle/feature/linting-parser-setup

Rubocop: less complex methods in parser.rb
This commit is contained in:
Petr Korolev 2015-10-22 15:24:47 +03:00
commit b1d2b7d828
3 changed files with 22 additions and 26 deletions

View File

@ -7,22 +7,16 @@ module GitHubChangelogGenerator
class Parser
# parse options with optparse
def self.parse_options
options = get_default_options
options = default_options
parser_file = ParserFile.new options
parser_file.parse!
ParserFile.new(options).parse!
parser = setup_parser(options)
parser.parse!
if options[:user].nil? || options[:project].nil?
detect_user_and_project(options, ARGV[0], ARGV[1])
end
user_and_project_from_git(options)
if !options[:user] || !options[:project]
puts parser.banner
exit
end
abort(parser.banner) unless options[:user] && options[:project]
print_options(options)
@ -165,8 +159,8 @@ module GitHubChangelogGenerator
end
# just get default options
def self.get_default_options
options = {
def self.default_options
{
tag1: nil,
tag2: nil,
date_format: "%Y-%m-%d",
@ -194,21 +188,25 @@ module GitHubChangelogGenerator
enhancement_prefix: "**Implemented enhancements:**",
git_remote: "origin"
}
end
options
def self.user_and_project_from_git
if options[:user].nil? || options[:project].nil?
detect_user_and_project(options, ARGV[0], ARGV[1])
end
end
# Detects user and project from git
def self.detect_user_and_project(options, arg0 = nil, arg1 = nil)
options[:user], options[:project] = user_project_from_option(arg0, arg1, options[:github_site])
if !options[:user] || !options[:project]
if ENV["RUBYLIB"] =~ /ruby-debug-ide/
options[:user] = "skywinder"
options[:project] = "changelog_test"
else
remote = `git config --get remote.#{options[:git_remote]}.url`
options[:user], options[:project] = user_project_from_remote(remote)
end
return if options[:user] && options[:project]
if ENV["RUBYLIB"] =~ /ruby-debug-ide/
options[:user] = "skywinder"
options[:project] = "changelog_test"
else
remote = `git config --get remote.#{options[:git_remote]}.url`
options[:user], options[:project] = user_project_from_remote(remote)
end
end

View File

@ -43,11 +43,9 @@ module GitHubChangelogGenerator
task @name do
# mimick parse_options
options = Parser.get_default_options
options = Parser.default_options
if options[:user].nil? || options[:project].nil?
Parser.detect_user_and_project(options)
end
Parser.user_and_project_from_git(options)
OPTIONS.each do |o|
v = instance_variable_get("@#{o}")

View File

@ -24,7 +24,7 @@ describe GitHubChangelogGenerator::ParserFile do
end
context "when override default values" do
let(:default_options) { GitHubChangelogGenerator::Parser.get_default_options }
let(:default_options) { GitHubChangelogGenerator::Parser.default_options }
let(:options) { { params_file: "spec/files/github_changelog_params_override" }.merge(default_options) }
let(:options_before_change) { options.dup }
let(:parse) { GitHubChangelogGenerator::ParserFile.new(options) }