Class: Licensee::Project

Inherits:
Object
  • Object
show all
Defined in:
lib/licensee/project.rb,
lib/licensee/project_file.rb,
lib/licensee/project_files/readme.rb,
lib/licensee/project_files/license_file.rb,
lib/licensee/project_files/package_info.rb

Direct Known Subclasses

FSProject, GitProject

Defined Under Namespace

Classes: File, LicenseFile, PackageInfo, Readme

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(detect_packages: false, detect_readme: false) ⇒ Project

Returns a new instance of Project.



9
10
11
12
# File 'lib/licensee/project.rb', line 9

def initialize(detect_packages: false, detect_readme: false)
  @detect_packages = detect_packages
  @detect_readme = detect_readme
end

Instance Attribute Details

#detect_packagesObject (readonly) Also known as: detect_packages?

Returns the value of attribute detect_packages.



5
6
7
# File 'lib/licensee/project.rb', line 5

def detect_packages
  @detect_packages
end

#detect_readmeObject (readonly) Also known as: detect_readme?

Returns the value of attribute detect_readme.



5
6
7
# File 'lib/licensee/project.rb', line 5

def detect_readme
  @detect_readme
end

Instance Method Details

#licenseObject

Returns the matching License instance if a license can be detected



15
16
17
# File 'lib/licensee/project.rb', line 15

def license
  @license ||= matched_file && matched_file.license
end

#license_fileObject



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/licensee/project.rb', line 23

def license_file
  return @license_file if defined? @license_file
  @license_file = begin
    license_file = license_from_file { |n| LicenseFile.name_score(n) }
    return license_file unless license_file && license_file.license

    # Special case LGPL, which actually lives in LICENSE.lesser, per the
    # license instructions. See https://git.io/viwyK
    lesser = if license_file.license.gpl?
      license_from_file { |file| LicenseFile.lesser_gpl_score(file) }
    end

    lesser || license_file
  end
end

#matched_fileObject



19
20
21
# File 'lib/licensee/project.rb', line 19

def matched_file
  @matched_file ||= (license_file || readme || package_file)
end

#package_fileObject



50
51
52
53
54
55
56
57
# File 'lib/licensee/project.rb', line 50

def package_file
  return unless detect_packages?
  return @package_file if defined? @package_file
  @package_file = begin
    content, name = find_file { |n| PackageInfo.name_score(n) }
    PackageInfo.new(content, name) if content && name
  end
end

#readme_fileObject Also known as: readme



39
40
41
42
43
44
45
46
47
# File 'lib/licensee/project.rb', line 39

def readme_file
  return unless detect_readme?
  return @readme if defined? @readme
  @readme = begin
    content, name = find_file { |n| Readme.name_score(n) }
    content = Readme.license_content(content)
    Readme.new(content, name) if content && name
  end
end