class Fingerprint::Command::Duplicates

Attributes

duplicates_recordset[R]

Public Instance Methods

call() click to toggle source
# File lib/fingerprint/command/duplicates.rb, line 50
def call
        @duplicates_recordset = RecordSet.new
        results = RecordSetPrinter.new(@duplicates_recordset, @parent.output)
        
        master_file_path = @master
        master_recordset = RecordSet.load_file(master_file_path)
                
        ignore_similar = false
        
        copy_file_paths = @copies
        
        if copy_file_paths.size == 0
                copy_file_paths = [master_file_path]
                ignore_similar = true
        end
        
        copy_file_paths.each do |copy_file_path|
                copy_recordset = RecordSet.load_file(copy_file_path)
                
                copy_recordset.records.each do |record|
                        next unless record.file?
                        
                        record.metadata['fingerprint'] = copy_file_path
                        
                        # We need to see if the record exists in the master
                        
                        if @options[:verbose]
                                $stderr.puts "Checking #{record.inspect}"
                        end
                        
                        main_record = master_recordset.find_by_key(record)
                        
                        # If we are scanning the same index, don't print out every file, just those that are duplicates within the single file.
                        if ignore_similar && main_record && (main_record.path == record.path)
                                main_record = nil
                        end
                        
                        if main_record
                                record.metadata['original.path'] = main_record.path
                                record.metadata['original.fingerprint'] = master_file_path
                                results << record if !@options[:inverse]
                                
                                if @options[:delete]
                                        delete(copy_recordset.full_path(record.path))
                                end
                        else
                                results << record if @options[:inverse]
                        end
                end
        end
end
delete(path) click to toggle source
# File lib/fingerprint/command/duplicates.rb, line 46
def delete(path)
        FileUtils.rm_f(path)
end