Class: Licensed::Sources::Source

Inherits:
Object
  • Object
show all
Defined in:
lib/licensed/sources/source.rb

Direct Known Subclasses

Bower, Bundler, Cabal, Composer, Dep, GitSubmodule, Go, Gradle, Manifest, Mix, NPM, Pip, Pipenv

Defined Under Namespace

Classes: DependencyEnumerationNotImplementedError, Error

Class Attribute Summary collapse

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(configuration) ⇒ Source

Returns a new instance of Source.



35
36
37
# File 'lib/licensed/sources/source.rb', line 35

def initialize(configuration)
  @config = configuration
end

Class Attribute Details

.sourcesObject (readonly)

Returns the value of attribute sources.



15
16
17
# File 'lib/licensed/sources/source.rb', line 15

def sources
  @sources
end

Instance Attribute Details

#configObject

all sources have a configuration



33
34
35
# File 'lib/licensed/sources/source.rb', line 33

def config
  @config
end

Class Method Details

.inherited(klass) ⇒ Object



16
17
18
19
20
# File 'lib/licensed/sources/source.rb', line 16

def inherited(klass)
  # add child source classes are defined,
  # add them to the known sources list
  (@sources ||= []) << klass
end

.typeObject

Returns the source name as the snake cased class name



23
24
25
26
27
28
29
# File 'lib/licensed/sources/source.rb', line 23

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

Instance Method Details

#dependenciesObject

Returns all dependencies that should be evaluated. Excludes ignored dependencies.



47
48
49
# File 'lib/licensed/sources/source.rb', line 47

def dependencies
  cached_dependencies.reject { |d| ignored?(d) }
end

#enabled?Boolean

Returns whether a source is enabled based on the environment in which licensed is run Defaults to false.

Returns:

  • (Boolean)


41
42
43
# File 'lib/licensed/sources/source.rb', line 41

def enabled?
  false
end

#enumerate_dependenciesObject

Enumerate all source dependencies. Must be implemented by each source class.



52
53
54
# File 'lib/licensed/sources/source.rb', line 52

def enumerate_dependencies
  raise DependencyEnumerationNotImplementedError
end

#ignored?(dependency) ⇒ Boolean

Returns whether a dependency is ignored in the configuration.

Returns:

  • (Boolean)


57
58
59
# File 'lib/licensed/sources/source.rb', line 57

def ignored?(dependency)
  config.ignored?("type" => self.class.type, "name" => dependency.name)
end