Sha256: 0378f257e70a488542725457159433d3efcf9c3f1dfc6e4ce1bfc554a5e0328a

Contents?: true

Size: 947 Bytes

Versions: 5

Compression:

Stored size: 947 Bytes

Contents

require "fileutils"

module Imap::Backup
  module Utils
    def self.check_permissions(filename, limit)
      actual = mode(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.mode(filename)
      return nil if !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

5 entries across 5 versions & 1 rubygems

Version Path
imap-backup-2.0.0 lib/imap/backup/utils.rb
imap-backup-2.0.0.rc4 lib/imap/backup/utils.rb
imap-backup-2.0.0.rc3 lib/imap/backup/utils.rb
imap-backup-2.0.0.rc2 lib/imap/backup/utils.rb
imap-backup-2.0.0.rc1 lib/imap/backup/utils.rb