Sha256: 0133987f805dc8c462f36ca9f84a28189ec94686fe3f8d7d8efcb7d1d8f97b56
Contents?: true
Size: 1.88 KB
Versions: 41
Compression:
Stored size: 1.88 KB
Contents
# frozen_string_literal: true module Licensed module Sources class Source class DependencyEnumerationNotImplementedError < StandardError def initialize(message = "Source classes must implemented `enumerate_dependencies`") super end end class Error < StandardError; end class << self attr_reader :sources def inherited(klass) # add child source classes are defined, # add them to the known sources list (@sources ||= []) << klass end # Returns the source name as the snake cased class name def type self.name.split(/::/) .last .gsub(/([A-Z\d]+)([A-Z][a-z])/, "\\1_\\2".freeze) .gsub(/([a-z\d])([A-Z])/, "\\1_\\2".freeze) .downcase end end # all sources have a configuration attr_accessor :config def initialize(configuration) @config = configuration end # Returns whether a source is enabled based on the environment in which licensed is run # Defaults to false. def enabled? false end # Returns all dependencies that should be evaluated. # Excludes ignored dependencies. def dependencies cached_dependencies.reject { |d| ignored?(d) } end # Enumerate all source dependencies. Must be implemented by each source class. def enumerate_dependencies raise DependencyEnumerationNotImplementedError end # Returns whether a dependency is ignored in the configuration. def ignored?(dependency) config.ignored?("type" => self.class.type, "name" => dependency.name) end private # Returns a cached list of dependencies def cached_dependencies @dependencies ||= enumerate_dependencies.compact end end end end
Version data entries
41 entries across 41 versions & 1 rubygems