Class: Licensed::AppConfiguration
- Inherits:
-
Hash
- Object
- Hash
- Licensed::AppConfiguration
- Defined in:
- lib/licensed/configuration.rb
Direct Known Subclasses
Constant Summary collapse
- DEFAULT_CACHE_PATH =
".licenses".freeze
- DEFAULT_CONFIG_FILES =
[ ".licensed.yml".freeze, ".licensed.yaml".freeze, ".licensed.json".freeze ].freeze
- SOURCE_TYPES =
Source.constants.map { |c| Source.const_get(c) }.freeze
Instance Method Summary collapse
-
#allow(license) ⇒ Object
Set a license as explicitly allowed.
-
#allowed?(dependency) ⇒ Boolean
Is the license of the dependency allowed?.
-
#cache_path ⇒ Object
Returns the path to the app cache directory as a Pathname.
- #defaults_for(options, inherited_options) ⇒ Object
-
#enabled?(source_type) ⇒ Boolean
Returns whether a source type is enabled.
-
#ignore(dependency) ⇒ Object
Ignore a dependency.
-
#ignored?(dependency) ⇒ Boolean
Is the given dependency ignored?.
-
#initialize(options = {}, inherited_options = {}) ⇒ AppConfiguration
constructor
A new instance of AppConfiguration.
- #pwd ⇒ Object
-
#review(dependency) ⇒ Object
Set a dependency as reviewed.
-
#reviewed?(dependency) ⇒ Boolean
Is the given dependency reviewed?.
-
#source_path ⇒ Object
Returns the path to the app source directory as a Pathname.
-
#sources ⇒ Object
Returns an array of enabled app sources.
- #verify_arg(property) ⇒ Object
Constructor Details
#initialize(options = {}, inherited_options = {}) ⇒ AppConfiguration
Returns a new instance of AppConfiguration.
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/licensed/configuration.rb', line 14 def initialize( = {}, = {}) super() # update order: # 1. anything inherited from root config # 2. app defaults # 3. explicitly configured app settings update() update(defaults_for(, )) update() self["sources"] ||= {} self["reviewed"] ||= {} self["ignored"] ||= {} self["allowed"] ||= [] verify_arg "source_path" verify_arg "cache_path" end |
Instance Method Details
#allow(license) ⇒ Object
Set a license as explicitly allowed
88 89 90 |
# File 'lib/licensed/configuration.rb', line 88 def allow(license) self["allowed"] << license end |
#allowed?(dependency) ⇒ Boolean
Is the license of the dependency allowed?
73 74 75 |
# File 'lib/licensed/configuration.rb', line 73 def allowed?(dependency) Array(self["allowed"]).include?(dependency["license"]) end |
#cache_path ⇒ Object
Returns the path to the app cache directory as a Pathname
35 36 37 |
# File 'lib/licensed/configuration.rb', line 35 def cache_path Licensed::Git.repository_root.join(self["cache_path"]) end |
#defaults_for(options, inherited_options) ⇒ Object
92 93 94 95 96 97 98 99 |
# File 'lib/licensed/configuration.rb', line 92 def defaults_for(, ) name = ["name"] || File.basename(["source_path"]) cache_path = ["cache_path"] || DEFAULT_CACHE_PATH { "name" => name, "cache_path" => File.join(cache_path, name) } end |
#enabled?(source_type) ⇒ Boolean
Returns whether a source type is enabled
56 57 58 59 60 |
# File 'lib/licensed/configuration.rb', line 56 def enabled?(source_type) # the default is false if any sources are set to true, true otherwise default = !self["sources"].any? { |_, enabled| enabled } self["sources"].fetch(source_type, default) end |
#ignore(dependency) ⇒ Object
Ignore a dependency
78 79 80 |
# File 'lib/licensed/configuration.rb', line 78 def ignore(dependency) (self["ignored"][dependency["type"]] ||= []) << dependency["name"] end |
#ignored?(dependency) ⇒ Boolean
Is the given dependency ignored?
68 69 70 |
# File 'lib/licensed/configuration.rb', line 68 def ignored?(dependency) Array(self["ignored"][dependency["type"]]).include?(dependency["name"]) end |
#pwd ⇒ Object
44 45 46 |
# File 'lib/licensed/configuration.rb', line 44 def pwd Pathname.pwd end |
#review(dependency) ⇒ Object
Set a dependency as reviewed
83 84 85 |
# File 'lib/licensed/configuration.rb', line 83 def review(dependency) (self["reviewed"][dependency["type"]] ||= []) << dependency["name"] end |
#reviewed?(dependency) ⇒ Boolean
Is the given dependency reviewed?
63 64 65 |
# File 'lib/licensed/configuration.rb', line 63 def reviewed?(dependency) Array(self["reviewed"][dependency["type"]]).include?(dependency["name"]) end |
#source_path ⇒ Object
Returns the path to the app source directory as a Pathname
40 41 42 |
# File 'lib/licensed/configuration.rb', line 40 def source_path Licensed::Git.repository_root.join(self["source_path"]) end |
#sources ⇒ Object
Returns an array of enabled app sources
49 50 51 52 53 |
# File 'lib/licensed/configuration.rb', line 49 def sources @sources ||= SOURCE_TYPES.select { |source_class| enabled?(source_class.type) } .map { |source_class| source_class.new(self) } .select(&:enabled?) end |
#verify_arg(property) ⇒ Object
101 102 103 104 105 |
# File 'lib/licensed/configuration.rb', line 101 def verify_arg(property) return if self[property] raise Licensed::Configuration::LoadError, "App #{self["name"]} is missing required property #{property}" end |