Class: Licensed::AppConfiguration
- Inherits:
-
Hash
- Object
- Hash
- Licensed::AppConfiguration
- Defined in:
- lib/licensed/configuration.rb
Constant Summary collapse
- DIRECTORY_NAME_GENERATOR_KEY =
"directory_name".freeze
- RELATIVE_PATH_GENERATOR_KEY =
"relative_path".freeze
- DEFAULT_RELATIVE_PATH_NAME_SEPARATOR =
"-".freeze
- ALL_NAME_GENERATOR_KEYS =
[DIRECTORY_NAME_GENERATOR_KEY, RELATIVE_PATH_GENERATOR_KEY].freeze
- DEFAULT_CACHE_PATH =
".licenses".freeze
- ANY_VERSION_REQUIREMENT =
"*".freeze
Class Method Summary collapse
-
.root_for(configuration) ⇒ Object
Returns the root for a configuration in following order of precedence: 1.
Instance Method Summary collapse
-
#additional_terms_for_dependency(dependency) ⇒ Object
Returns an array of paths to files containing additional license terms.
-
#allow(license) ⇒ Object
Set a license as explicitly allowed.
-
#allowed?(license) ⇒ Boolean
Is the license of the dependency allowed?.
-
#cache_path ⇒ Object
Returns the path to the app cache directory as a Pathname.
-
#enabled?(source_type) ⇒ Boolean
Returns whether a source type is enabled.
-
#ignore(dependency, at_version: false) ⇒ Object
Ignore a dependency.
-
#ignored?(dependency, require_version: false) ⇒ Boolean
Is the given dependency ignored?.
-
#initialize(options = {}, inherited_options = {}) ⇒ AppConfiguration
constructor
A new instance of AppConfiguration.
- #pwd ⇒ Object
-
#review(dependency, at_version: false) ⇒ Object
Set a dependency as reviewed.
-
#reviewed?(dependency, require_version: false) ⇒ Boolean
Is the given dependency reviewed?.
-
#reviewed_versions(dependency) ⇒ Object
Find all reviewed dependencies that match the provided dependency’s name.
-
#root ⇒ Object
Returns the path to the workspace root as a Pathname.
-
#source_path ⇒ Object
Returns the path to the app source directory as a Pathname.
-
#sources ⇒ Object
Returns an array of enabled app sources.
Constructor Details
#initialize(options = {}, inherited_options = {}) ⇒ AppConfiguration
Returns a new instance of AppConfiguration.
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/licensed/configuration.rb', line 23 def initialize( = {}, = {}) super() # update order: # 1. anything inherited from root config # 2. explicitly configured app settings update() update() verify_arg "source_path" self["sources"] ||= {} self["reviewed"] ||= {} self["ignored"] ||= {} self["allowed"] ||= [] self["root"] = AppConfiguration.root_for(self) self["name"] = generate_app_name # setting the cache path might need a valid app name. # this must come after setting self["name"] self["cache_path"] = detect_cache_path(, ) end |
Class Method Details
.root_for(configuration) ⇒ Object
Returns the root for a configuration in following order of precedence:
-
explicitly configured “root” property
-
a found git repository root
-
the current directory
19 20 21 |
# File 'lib/licensed/configuration.rb', line 19 def self.root_for(configuration) configuration["root"] || Licensed::Git.repository_root || Dir.pwd end |
Instance Method Details
#additional_terms_for_dependency(dependency) ⇒ Object
Returns an array of paths to files containing additional license terms.
117 118 119 120 |
# File 'lib/licensed/configuration.rb', line 117 def additional_terms_for_dependency(dependency) amendment_paths = Array(self.dig("additional_terms", dependency["type"], dependency["name"])) amendment_paths.flat_map { |path| Dir.glob(self.root.join(path)) }.sort end |
#allow(license) ⇒ Object
Set a license as explicitly allowed
112 113 114 |
# File 'lib/licensed/configuration.rb', line 112 def allow(license) self["allowed"] << license end |
#allowed?(license) ⇒ Boolean
Is the license of the dependency allowed?
93 94 95 |
# File 'lib/licensed/configuration.rb', line 93 def allowed?(license) Array(self["allowed"]).include?(license) end |
#cache_path ⇒ Object
Returns the path to the app cache directory as a Pathname
50 51 52 |
# File 'lib/licensed/configuration.rb', line 50 def cache_path root.join(self["cache_path"]) end |
#enabled?(source_type) ⇒ Boolean
Returns whether a source type is enabled
71 72 73 74 75 |
# File 'lib/licensed/configuration.rb', line 71 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, at_version: false) ⇒ Object
Ignore a dependency
98 99 100 101 102 |
# File 'lib/licensed/configuration.rb', line 98 def ignore(dependency, at_version: false) id = dependency["name"] id += "@#{dependency["version"]}" if at_version && dependency["version"] (self["ignored"][dependency["type"]] ||= []) << id end |
#ignored?(dependency, require_version: false) ⇒ Boolean
Is the given dependency ignored?
88 89 90 |
# File 'lib/licensed/configuration.rb', line 88 def ignored?(dependency, require_version: false) any_list_pattern_matched? self["ignored"][dependency["type"]], dependency, require_version: require_version end |
#pwd ⇒ Object
59 60 61 |
# File 'lib/licensed/configuration.rb', line 59 def pwd Pathname.pwd end |
#review(dependency, at_version: false) ⇒ Object
Set a dependency as reviewed
105 106 107 108 109 |
# File 'lib/licensed/configuration.rb', line 105 def review(dependency, at_version: false) id = dependency["name"] id += "@#{dependency["version"]}" if at_version && dependency["version"] (self["reviewed"][dependency["type"]] ||= []) << id end |
#reviewed?(dependency, require_version: false) ⇒ Boolean
Is the given dependency reviewed?
78 79 80 |
# File 'lib/licensed/configuration.rb', line 78 def reviewed?(dependency, require_version: false) any_list_pattern_matched? self["reviewed"][dependency["type"]], dependency, require_version: require_version end |
#reviewed_versions(dependency) ⇒ Object
Find all reviewed dependencies that match the provided dependency’s name
83 84 85 |
# File 'lib/licensed/configuration.rb', line 83 def reviewed_versions(dependency) similar_list_patterns self["reviewed"][dependency["type"]], dependency end |
#root ⇒ Object
Returns the path to the workspace root as a Pathname.
45 46 47 |
# File 'lib/licensed/configuration.rb', line 45 def root @root ||= Pathname.new(self["root"]) end |
#source_path ⇒ Object
Returns the path to the app source directory as a Pathname
55 56 57 |
# File 'lib/licensed/configuration.rb', line 55 def source_path root.join(self["source_path"]) end |