Sha256: ee8ff3a2a3fac7eda036de643b1ff168b0d314a4b9f6c7d9edc4e6dc2a4b353c

Contents?: true

Size: 1.56 KB

Versions: 21

Compression:

Stored size: 1.56 KB

Contents

# frozen_string_literal: true

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

    def package_management_command
      LicenseFinder::Platform.darwin? ? 'pod' : nil
    end

    def possible_package_paths
      [project_path.join('Podfile')]
    end

    private

    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
      search_paths = ['Pods/Pods-acknowledgements.plist',
                      'Pods/Target Support Files/Pods/Pods-acknowledgements.plist',
                      'Pods/Target Support Files/Pods-*/Pods-*-acknowledgements.plist']

      result = Dir[*search_paths.map { |path| File.join(project_path, path) }].first
      raise "Found a Podfile but no Pods directory in #{project_path}. Try running pod install before running license_finder." if result.nil?

      result
    end

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

Version data entries

21 entries across 21 versions & 1 rubygems

Version Path
license_finder-6.13.0 lib/license_finder/package_managers/cocoa_pods.rb
license_finder-6.12.2 lib/license_finder/package_managers/cocoa_pods.rb
license_finder-6.12.1 lib/license_finder/package_managers/cocoa_pods.rb
license_finder-6.12.0 lib/license_finder/package_managers/cocoa_pods.rb
license_finder-6.11.0 lib/license_finder/package_managers/cocoa_pods.rb
license_finder-6.10.1 lib/license_finder/package_managers/cocoa_pods.rb
license_finder-6.10.0 lib/license_finder/package_managers/cocoa_pods.rb
license_finder-6.9.0 lib/license_finder/package_managers/cocoa_pods.rb
license_finder-6.8.2 lib/license_finder/package_managers/cocoa_pods.rb
license_finder-6.8.1 lib/license_finder/package_managers/cocoa_pods.rb
license_finder-6.8.0 lib/license_finder/package_managers/cocoa_pods.rb
license_finder-6.7.0 lib/license_finder/package_managers/cocoa_pods.rb
license_finder-6.6.2 lib/license_finder/package_managers/cocoa_pods.rb
license_finder-6.6.1 lib/license_finder/package_managers/cocoa_pods.rb
license_finder-6.6.0 lib/license_finder/package_managers/cocoa_pods.rb
license_finder-6.5.0 lib/license_finder/package_managers/cocoa_pods.rb
license_finder-6.4.0 lib/license_finder/package_managers/cocoa_pods.rb
license_finder-6.3.0 lib/license_finder/package_managers/cocoa_pods.rb
license_finder-6.2.0 lib/license_finder/package_managers/cocoa_pods.rb
license_finder-6.1.2 lib/license_finder/package_managers/cocoa_pods.rb