Class: RepositoryUpdateRules
- Inherits:
-
Object
- Object
- RepositoryUpdateRules
- Defined in:
- lib/spm_version_updates/repository_update_rules.rb
Overview
Loads and evaluates per-repository semantic update suppression rules.
Constant Summary collapse
- SEMANTIC_TYPES =
["version", "above_maximum"].freeze
- SEVERITY_RANK =
{ "patch" => 0, "minor" => 1, "major" => 2 }.freeze
- YAML_KEYS =
{ repositories: "repositories", url: "url", ignore_until: "ignore-until", allowed_updates: "allowed-updates" }.freeze
- VALID_YAML_KEYS =
{ root: [YAML_KEYS.fetch(:repositories)], entry: YAML_KEYS.values_at(:url, :ignore_until, :allowed_updates) }.freeze
Class Method Summary collapse
- .empty ⇒ Object
- .from_hash(config = {}, source: "repo rules", **keyword_config) ⇒ Object
- .load_file(path) ⇒ Object
- .record_value(record, key) ⇒ Object
- .semver(value) ⇒ Object
Instance Method Summary collapse
- #empty? ⇒ Boolean
-
#initialize(rules_by_repo) ⇒ RepositoryUpdateRules
constructor
A new instance of RepositoryUpdateRules.
- #suppressed?(record) ⇒ Boolean
Constructor Details
#initialize(rules_by_repo) ⇒ RepositoryUpdateRules
Returns a new instance of RepositoryUpdateRules.
196 197 198 |
# File 'lib/spm_version_updates/repository_update_rules.rb', line 196 def initialize(rules_by_repo) @rules_by_repo = rules_by_repo end |
Class Method Details
.empty ⇒ Object
58 59 60 |
# File 'lib/spm_version_updates/repository_update_rules.rb', line 58 def self.empty new({}) end |
.from_hash(config = {}, source: "repo rules", **keyword_config) ⇒ Object
70 71 72 73 74 75 76 |
# File 'lib/spm_version_updates/repository_update_rules.rb', line 70 def self.from_hash(config = {}, source: "repo rules", **keyword_config) effective_config = keyword_config.empty? ? config : keyword_config effective_config ||= {} raise(SpmVersionUpdates::ConfigurationError, "#{source} must contain a YAML mapping") unless effective_config.kind_of?(Hash) new(parse_repositories(repositories_from(effective_config, source), source)) end |
.load_file(path) ⇒ Object
62 63 64 65 66 67 68 |
# File 'lib/spm_version_updates/repository_update_rules.rb', line 62 def self.load_file(path) path = validated_file_path(path) yaml_config = YAML.safe_load_file(path, permitted_classes: [], permitted_symbols: [], aliases: false) || {} from_hash(yaml_config, source: path) rescue Psych::Exception => error raise(SpmVersionUpdates::ConfigurationError, "repo-rules YAML is invalid in #{path}: #{error.}") end |
.record_value(record, key) ⇒ Object
173 174 175 |
# File 'lib/spm_version_updates/repository_update_rules.rb', line 173 def self.record_value(record, key) record[key] || record[key.to_sym] end |
.semver(value) ⇒ Object
78 79 80 81 82 |
# File 'lib/spm_version_updates/repository_update_rules.rb', line 78 def self.semver(value) SpmVersionUpdates::Semver.new(value.to_s) rescue ArgumentError nil end |
Instance Method Details
#empty? ⇒ Boolean
200 201 202 |
# File 'lib/spm_version_updates/repository_update_rules.rb', line 200 def empty? @rules_by_repo.empty? end |
#suppressed?(record) ⇒ Boolean
204 205 206 207 208 209 |
# File 'lib/spm_version_updates/repository_update_rules.rb', line 204 def suppressed?(record) return false unless semantic_record?(record) rule = @rules_by_repo[normalized_record_url(record)] rule ? rule.suppressed?(record) : false end |