Class: Licensee::Projects::Project
- Inherits:
-
Object
- Object
- Licensee::Projects::Project
- Includes:
- HashHelper
- Defined in:
- lib/licensee/projects/project.rb
Overview
Base class for project scanners (filesystem/git/github).
Direct Known Subclasses
Constant Summary collapse
- HASH_METHODS =
%i[licenses matched_files].freeze
Instance Attribute Summary collapse
-
#detect_packages ⇒ Object
(also: #detect_packages?)
readonly
Returns the value of attribute detect_packages.
-
#detect_readme ⇒ Object
(also: #detect_readme?)
readonly
Returns the value of attribute detect_readme.
Instance Method Summary collapse
- #build_license_files ⇒ Object
-
#initialize(detect_packages: false, detect_readme: false) ⇒ Project
constructor
A new instance of Project.
-
#license ⇒ Object
Returns the matching License instance if a license can be detected.
-
#license_file ⇒ Object
Returns the LicenseFile used to determine the License.
- #license_files ⇒ Object
-
#licenses ⇒ Object
Returns an array of detected Licenses.
-
#matched_file ⇒ Object
Returns the ProjectFile used to determine the License.
-
#matched_files ⇒ Object
Returns an array of matches LicenseFiles.
- #package_file ⇒ Object
- #readme_file ⇒ Object (also: #readme)
Methods included from HashHelper
Constructor Details
#initialize(detect_packages: false, detect_readme: false) ⇒ Project
Returns a new instance of Project.
20 21 22 23 |
# File 'lib/licensee/projects/project.rb', line 20 def initialize(detect_packages: false, detect_readme: false, **) @detect_packages = detect_packages @detect_readme = detect_readme end |
Instance Attribute Details
#detect_packages ⇒ Object (readonly) Also known as: detect_packages?
Returns the value of attribute detect_packages.
12 13 14 |
# File 'lib/licensee/projects/project.rb', line 12 def detect_packages @detect_packages end |
#detect_readme ⇒ Object (readonly) Also known as: detect_readme?
Returns the value of attribute detect_readme.
12 13 14 |
# File 'lib/licensee/projects/project.rb', line 12 def detect_readme @detect_readme end |
Instance Method Details
#build_license_files ⇒ Object
60 61 62 63 64 65 66 |
# File 'lib/licensee/projects/project.rb', line 60 def build_license_files return [] if files.nil? || files.empty? files = find_files { |dir, name| Licensee::ProjectFiles::LicenseFile.name_score(dir, name) } files = files.map { |file| Licensee::ProjectFiles::LicenseFile.new(load_file(file), file) } prioritize_lgpl(files) end |
#license ⇒ Object
Returns the matching License instance if a license can be detected
26 27 28 29 30 31 32 33 34 |
# File 'lib/licensee/projects/project.rb', line 26 def license return @license if defined? @license @license = if licenses_without_copyright.one? || lgpl? licenses_without_copyright.first elsif licenses_without_copyright.count > 1 Licensee::License.find('other') end end |
#license_file ⇒ Object
Returns the LicenseFile used to determine the License
52 53 54 |
# File 'lib/licensee/projects/project.rb', line 52 def license_file license_files.first if license_files.one? || lgpl? end |
#license_files ⇒ Object
56 57 58 |
# File 'lib/licensee/projects/project.rb', line 56 def license_files @license_files ||= build_license_files end |
#licenses ⇒ Object
Returns an array of detected Licenses
37 38 39 |
# File 'lib/licensee/projects/project.rb', line 37 def licenses @licenses ||= matched_files.map(&:license).uniq end |
#matched_file ⇒ Object
Returns the ProjectFile used to determine the License
42 43 44 |
# File 'lib/licensee/projects/project.rb', line 42 def matched_file matched_files.first if matched_files.one? || lgpl? end |
#matched_files ⇒ Object
Returns an array of matches LicenseFiles
47 48 49 |
# File 'lib/licensee/projects/project.rb', line 47 def matched_files @matched_files ||= project_files.select(&:license) end |
#package_file ⇒ Object
82 83 84 85 86 87 88 89 90 91 92 |
# File 'lib/licensee/projects/project.rb', line 82 def package_file return unless detect_packages? return @package_file if defined? @package_file @package_file = begin content, file = find_file do |_dir, name| Licensee::ProjectFiles::PackageManagerFile.name_score(name) end Licensee::ProjectFiles::PackageManagerFile.new(content, file) if content && file end end |
#readme_file ⇒ Object Also known as: readme
68 69 70 71 72 73 74 75 76 77 78 79 |
# File 'lib/licensee/projects/project.rb', line 68 def readme_file return unless detect_readme? return @readme if defined? @readme @readme = begin content, file = find_file do |_dir, name| Licensee::ProjectFiles::ReadmeFile.name_score(name) end content = Licensee::ProjectFiles::ReadmeFile.license_content(content) Licensee::ProjectFiles::ReadmeFile.new(content, file) if content && file end end |