module Gem::Comparator::DirUtils

Constants

SHEBANG_REGEX

Attributes

files_first_line[RW]

Public Class Methods

dirs_of_files(file_list) click to toggle source

Returns a unique list of directories and top level files out of an array of files

# File lib/rubygems/comparator/dir_utils.rb, line 34
def self.dirs_of_files(file_list)
  dirs_of_files = []
  file_list.each do |file|
    unless Pathname.new(file).dirname.to_s == '.'
      dirs_of_files << "#{Pathname.new(file).dirname.to_s}/"
    else
      dirs_of_files << file
    end
  end
  dirs_of_files.uniq
end
file_first_line(file) click to toggle source
# File lib/rubygems/comparator/dir_utils.rb, line 9
def self.file_first_line(file)
  File.open(file){ |f| f.readline }.gsub(/(.*)\n/, '\1')
rescue
end
file_has_shebang?(file) click to toggle source
# File lib/rubygems/comparator/dir_utils.rb, line 14
def self.file_has_shebang?(file)
  file_first_line(file) =~ SHEBANG_REGEX
end
file_permissions(file) click to toggle source
# File lib/rubygems/comparator/dir_utils.rb, line 22
def self.file_permissions(file)
  sprintf("%o", File.stat(file).mode)
end
files_same_first_line?(file1, file2) click to toggle source
# File lib/rubygems/comparator/dir_utils.rb, line 18
def self.files_same_first_line?(file1, file2)
  file_first_line(file1) == file_first_line(file2)
end
gem_bin_file?(file) click to toggle source
# File lib/rubygems/comparator/dir_utils.rb, line 26
def self.gem_bin_file?(file)
  file =~ /(\A|.*\/)bin\/.*/
end
remove_subdirs(dirs) click to toggle source
# File lib/rubygems/comparator/dir_utils.rb, line 46
def self.remove_subdirs(dirs)
  dirs.dup.sort_by(&:length).reverse.each do |dir|
    dirs.delete_if{ |d| d =~ /#{dir}\/.+/ }
  end
  dirs
end