Module: File_Checking

Defined in:
lib/file_checking.rb

Overview

A module to facilitate frequently occuring checks on file-system objects

Constant Summary collapse

@@text_messages =
{
  :exist? => "does not exist!",
  :exist => "does not exist!",
  :readable? => "is not readable!",
  :readable => "is not readable!",
  :executable? => "is not executable!",
  :executable => "is not executable!",
  :writable? => "is not writable!",
  :writable => "is not writable!",
  :directory? => "is not a directory!",
  :directory => "is not a directory!",
  :file? => "is not a file!",
  :file => "is not a file!",
# different thing
  :type => "is not of the sought file-type (not '%s', but '%s')!",
  :mime => "does not have the sought mime-type (not '%s', but '%s')!",
}

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.file_check(file, *messages) ⇒ Object

Checks if the file with the name from the first parameter has the properties, listed in the second. The messages parameter is an array of one or all of :exist?, :readable?, :writable?, :directory? or their string-representations, respectively. Returns nil in case of success, otherwise an informative message, describing the first negative test-result.



69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
# File 'lib/file_checking.rb', line 69

def self.file_check(file, *messages)
  msg = nil
  if(file && messages.respond_to?(:to_ary) && !messages.empty?)
    messages.each do |k|
      if( k != :mime && k != :type) 
        if(! k.to_s.end_with?('?')) 
          k = (k.to_s << '?').to_sym
        end
        @log.debug ('checking ' << k.to_s) if @log
        if(msg == nil && File.respond_to?(k) && ! File.send(k, file.to_s))
          msg = "#{file} #{@@text_messages[k.to_sym]}"
        end
      end
    end
  end
  msg
end

.magic_check(file, magic) ⇒ Object



96
97
98
99
100
101
102
103
# File 'lib/file_checking.rb', line 96

def self.magic_check(file, magic)
  fm = FileMagic.fm
  fd = fm.fd(File.new(file) ).split(';')[0]
  if fd != magic.strip  
    return file.dup << ' ' << (@@text_messages[:type] %[magic, fd])
  end
  return nil
end

.mime_check(file, mime_type) ⇒ Object



87
88
89
90
91
92
93
94
# File 'lib/file_checking.rb', line 87

def self.mime_check(file, mime_type)
  fm = FileMagic.mime
  fd = fm.fd(File.new(file) ).split(';')[0]
  if fd != mime_type.strip  
    return file.dup << ' ' << (@@text_messages[:mime] %[mime_type, fd])
  end
  return nil
end

Instance Method Details

#file_check(file, *messages) ⇒ Object

Checks if the file with the name from the first parameter has the properties, listed in the second. The messages parameter is an array of one or several of :exist?, :readable?, :writable?, :directory? or their string-representations, respectively. Returns nil in case of success, otherwise an informative message, describing the first negative test-result.



57
58
59
# File 'lib/file_checking.rb', line 57

def file_check(file, *messages)
  File_Checking.file_check(file, *messages)
end