Sha256: da622ef245185cbd8fbf0a0039394e1436b0db4817e5a0bc63b78ab0765e53f1

Contents?: true

Size: 1.25 KB

Versions: 9

Compression:

Stored size: 1.25 KB

Contents

require "json"

module LicenseFinder
  class CocoaPods < PackageManager
    def current_packages
      podfile = YAML.load_file(lockfile_path)

      podfile["PODS"].map do |pod|
        pod = pod.keys.first if pod.is_a?(Hash)

        name, version = pod.scan(/(.*)\s\((.*)\)/).flatten

        CocoaPodsPackage.new(
          name,
          version,
          license_texts[name],
          logger: logger
        )
      end
    end

    private

    def package_path
      project_path.join("Podfile")
    end

    def lockfile_path
      project_path.join("Podfile.lock")
    end

    def license_texts
      # package name => license text
      @license_texts ||= read_plist(acknowledgements_path)["PreferenceSpecifiers"]
        .each_with_object({}) { |hash, memo| memo[hash["Title"]] = hash["FooterText"] }
    end

    def acknowledgements_path
      filename = 'Pods-acknowledgements.plist'
      directories = [
        'Pods',                          # cocoapods < 0.34
        'Pods/Target Support Files/Pods' # cocoapods >= 0.34
      ]

      directories
        .map { |dir| project_path.join(dir, filename) }
        .find(&:exist?)
    end

    def read_plist pathname
      JSON.parse(`plutil -convert json -o - '#{pathname.expand_path}'`)
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
license_finder-2.1.0.rc6 lib/license_finder/package_managers/cocoa_pods.rb
license_finder-2.1.0.rc5 lib/license_finder/package_managers/cocoa_pods.rb
license_finder-2.1.0.rc4 lib/license_finder/package_managers/cocoa_pods.rb
license_finder-2.1.0.rc3 lib/license_finder/package_managers/cocoa_pods.rb
license_finder-2.1.0.rc2 lib/license_finder/package_managers/cocoa_pods.rb
license_finder-2.1.0.rc1 lib/license_finder/package_managers/cocoa_pods.rb
license_finder-2.0.4 lib/license_finder/package_managers/cocoa_pods.rb
license_finder-2.0.3 lib/license_finder/package_managers/cocoa_pods.rb
license_finder-2.0.2 lib/license_finder/package_managers/cocoa_pods.rb