github-changelog-generator/lib/github_changelog_generator/options.rb

95 lines
1.8 KiB
Ruby
Raw Normal View History

# frozen_string_literal: true
2016-10-05 21:31:19 +00:00
require "delegate"
module GitHubChangelogGenerator
class Options < SimpleDelegator
UnsupportedOptionError = Class.new(ArgumentError)
KNOWN_OPTIONS = %i[
add_issues_wo_labels
add_pr_wo_labels
author
base
between_tags
bug_labels
bug_prefix
cache_file
cache_log
compare_link
date_format
due_tag
enhancement_labels
enhancement_prefix
breaking_labels
breaking_prefix
exclude_labels
exclude_tags
exclude_tags_regex
filter_issues_by_milestone
frontmatter
future_release
github_endpoint
github_site
header
http_cache
include_labels
issue_prefix
issue_line_labels
issues
max_issues
merge_prefix
output
project
pulls
release_branch
release_url
require
simple_list
since_tag
ssl_ca_file
token
unreleased
unreleased_label
unreleased_only
user
usernames_as_github_logins
verbose
]
def initialize(values)
super(values)
unsupported_options.any? && raise(UnsupportedOptionError, unsupported_options.inspect)
end
def []=(key, val)
supported_option?(key) || raise(UnsupportedOptionError, key.inspect)
values[key] = val
end
def to_hash
values
end
# Loads the configured Ruby files from the --require option.
#
# @return [void]
def load_custom_ruby_files
self[:require].each { |f| require f }
end
private
def values
__getobj__
end
def unsupported_options
values.keys - KNOWN_OPTIONS
end
def supported_option?(key)
KNOWN_OPTIONS.include?(key)
end
end
end