[docs] API docs for Options, Parser
- shorten implementation of print_options
This commit is contained in:
parent
ad0d972ed9
commit
1fac4efe47
|
@ -2,9 +2,14 @@
|
|||
|
||||
require "delegate"
|
||||
module GitHubChangelogGenerator
|
||||
# This class wraps Options, and knows a list of known options. Others options
|
||||
# will raise exceptions.
|
||||
class Options < SimpleDelegator
|
||||
# Raised on intializing with unknown keys in the values hash,
|
||||
# and when trying to store a value on an unknown key.
|
||||
UnsupportedOptionError = Class.new(ArgumentError)
|
||||
|
||||
# List of valid option names
|
||||
KNOWN_OPTIONS = %i[
|
||||
add_issues_wo_labels
|
||||
add_pr_wo_labels
|
||||
|
@ -56,23 +61,31 @@ module GitHubChangelogGenerator
|
|||
verbose
|
||||
]
|
||||
|
||||
# @param values [Hash]
|
||||
#
|
||||
# @raise [UnsupportedOptionError] if given values contain unknown options
|
||||
def initialize(values)
|
||||
super(values)
|
||||
unsupported_options.any? && raise(UnsupportedOptionError, unsupported_options.inspect)
|
||||
end
|
||||
|
||||
# Set option key to val.
|
||||
#
|
||||
# @param key [Symbol]
|
||||
# @param val [Object]
|
||||
#
|
||||
# @raise [UnsupportedOptionError] when trying to set an unknown option
|
||||
def []=(key, val)
|
||||
supported_option?(key) || raise(UnsupportedOptionError, key.inspect)
|
||||
values[key] = val
|
||||
end
|
||||
|
||||
# @return [Hash]
|
||||
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
|
||||
|
|
|
@ -5,6 +5,7 @@ require "optparse"
|
|||
require "pp"
|
||||
require_relative "version"
|
||||
require_relative "helper"
|
||||
|
||||
module GitHubChangelogGenerator
|
||||
class Parser
|
||||
# parse options with optparse
|
||||
|
@ -26,23 +27,23 @@ module GitHubChangelogGenerator
|
|||
options
|
||||
end
|
||||
|
||||
# If options set to verbose, print the parsed options.
|
||||
# Pretty-print the parsed options.
|
||||
#
|
||||
# The GitHub `:token` key is censored in the output.
|
||||
#
|
||||
# @param options [Hash] The options to display
|
||||
# @param options [Options] The options to display
|
||||
# @option options [Boolean] :verbose If false this method does nothing
|
||||
def self.print_options(options)
|
||||
if options[:verbose]
|
||||
Helper.log.info "Performing task with options:"
|
||||
options_to_display = options.clone
|
||||
options_to_display[:token] = options_to_display[:token].nil? ? nil : "hidden value"
|
||||
pp options_to_display
|
||||
puts ""
|
||||
end
|
||||
return unless options[:verbose]
|
||||
|
||||
Helper.log.info "Using these options:"
|
||||
pp(options.clone.tap { |opts| opts[:token] = opts[:token].nil? ? "No token used" : "hidden value" })
|
||||
puts ""
|
||||
end
|
||||
|
||||
# setup parsing options
|
||||
# Setup parsing options
|
||||
#
|
||||
# @param options [Options]
|
||||
def self.setup_parser(options)
|
||||
parser = OptionParser.new do |opts| # rubocop:disable Metrics/BlockLength
|
||||
opts.banner = "Usage: github_changelog_generator [options]"
|
||||
|
@ -199,7 +200,7 @@ module GitHubChangelogGenerator
|
|||
parser
|
||||
end
|
||||
|
||||
# @return [Hash] Default options
|
||||
# @return [Options] Default options
|
||||
def self.default_options
|
||||
Options.new(
|
||||
date_format: "%Y-%m-%d",
|
||||
|
|
Loading…
Reference in New Issue
Block a user