Sha256: 9fa788aa11cda6c1c5f5417ae7eca865e12a381da3f07ee1d69b09c9a40baa28

Contents?: true

Size: 1.76 KB

Versions: 4

Compression:

Stored size: 1.76 KB

Contents

# frozen_string_literal: true
require "delegate"
module GitHubChangelogGenerator
  class Options < SimpleDelegator
    UnsupportedOptionError = Class.new(ArgumentError)

    KNOWN_OPTIONS = [
      :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,
      :exclude_labels,
      :exclude_tags,
      :exclude_tags_regex,
      :filter_issues_by_milestone,
      :frontmatter,
      :future_release,
      :git_remote,
      :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,
      :simple_list,
      :since_tag,
      :token,
      :unreleased,
      :unreleased_label,
      :unreleased_only,
      :user,
      :usernames_as_github_logins,
      :verbose
    ]

    THESE_ARE_DIFFERENT = [
      :tag1,
      :tag2
    ]

    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

    private

    def values
      __getobj__
    end

    def unsupported_options
      values.keys - supported_options
    end

    def supported_option?(key)
      supported_options.include?(key)
    end

    def supported_options
      KNOWN_OPTIONS + THESE_ARE_DIFFERENT
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
github_changelog_generator-1.14.3 lib/github_changelog_generator/options.rb
github_changelog_generator-1.14.2 lib/github_changelog_generator/options.rb
github_changelog_generator-1.14.1 lib/github_changelog_generator/options.rb
github_changelog_generator-1.14.0 lib/github_changelog_generator/options.rb