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