Sha256: c9d9bfce730f73df0718d7e0cb97ca574e9c3cd87ec70dc5ed372886be6a7694

Contents?: true

Size: 950 Bytes

Versions: 3

Compression:

Stored size: 950 Bytes

Contents

require "fileutils"

module Imap::Backup
  module Utils
    def self.check_permissions(filename, limit)
      actual = stat(filename)
      return nil if actual.nil?
      mask = ~limit & 0o777
      if actual & mask != 0
        message = format(
          "Permissions on '%<filename>s' " \
            "should be 0%<limit>o, not 0%<actual>o",
          filename: filename, limit: limit, actual: actual
        )
        raise message
      end
    end

    def self.stat(filename)
      return nil unless File.exist?(filename)

      stat = File.stat(filename)
      stat.mode & 0o777
    end

    def self.make_folder(base_path, path, permissions)
      parts = path.split("/")
      return if parts.size == 0
      full_path = File.join(base_path, path)
      FileUtils.mkdir_p full_path
      path = base_path
      parts.each do |part|
        path = File.join(path, part)
        FileUtils.chmod permissions, path
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
imap-backup-1.4.2 lib/imap/backup/utils.rb
imap-backup-1.4.1 lib/imap/backup/utils.rb
imap-backup-1.4.0 lib/imap/backup/utils.rb