class Pod::Command::List::Unused_pods

Public Instance Methods

collect_headers_path_of_pods(pods) click to toggle source
# File lib/cocoapods-unused_pods/command/unused_pods.rb, line 59
def collect_headers_path_of_pods(pods)
  pods_header = Hash.new
  public_header_path = Dir.pwd + '/Pods/Headers/Public'
  pods.each do |pod|
    pod_public_header_path = public_header_path + '/' + pod + '/**/*.h'
    headers = Array.new
    Dir.glob(pod_public_header_path) do |header_path|
      headers.push(File.basename(header_path))
    end
    pods_header[pod] = headers
  end

  pods_header
end
parse_Podfile(podfile_path) click to toggle source
# File lib/cocoapods-unused_pods/command/unused_pods.rb, line 45
def parse_Podfile(podfile_path)
  active_pods = Array.new
  File.open(podfile_path, 'r') do |f|
    active_pod_reg = /^[\t ]*pod *'(\w+)'[\n\r,]/
    f.each_line do |line|
      if active_pod_reg.match(line)
      active_pods.push($1)
      end
    end
  end

  active_pods
end
run() click to toggle source
# File lib/cocoapods-unused_pods/command/unused_pods.rb, line 29
def run
  path = Dir.pwd + '/Podfile'
  if !File.exists? path
    help! "Please make sure current project has Podfile."
    Process.exit! false
  end

  UI.puts "In progress:"

  pods = parse_Podfile(path)
  pods_header = collect_headers_path_of_pods(pods)
  unused_pods = unused_pods(pods_header)
  UI.puts "Unused Pods:"
  UI.puts unused_pods
end
unused_pods(pods_header) click to toggle source
# File lib/cocoapods-unused_pods/command/unused_pods.rb, line 74
def unused_pods(pods_header)
  unused_pods = pods_header.keys
  filepathes = Dir.glob('./**/*.{h,pch,m,mm,c,cpp}')

  filepathes.each do |path|
    File.open(path) do |file|
      content = File.read(file)
      if ! content.valid_encoding?
        content = content.encode("UTF-16be", :invalid=>:replace, :replace=>"?").encode('UTF-8')
      end
      pods_header.each do |pod, headers|
        if path =~ /\/Pods\/#{pod}/
          next
        end
        headers.each do |header|
          if header.length > 0 && content =~ /#import +.*#{header}[>\"]/
            unused_pods.delete(pod)
            pods_header.delete(pod)
            break
          end
        end
      end
    end
  end

  unused_pods
end