Sha256: a5ead6187297b9a06a577eb53ee455ae6e13b56186d10a92ccc1e76cfb3d409c

Contents?: true

Size: 1.63 KB

Versions: 21

Compression:

Stored size: 1.63 KB

Contents

require 'openssl'

module Antrapol
  module ToolRack
    module FileUtils
      include Antrapol::ToolRack::DataConversionUtils

      class FileUtilsError < StandardError; end
      module ClassMethods
        def is_same?(*args, &block)
          opts = { verbose: false } 
          if args.last.is_a?(Hash)
            opts.merge!(args.last)
            target = args[0..-2]
          else
            target = args
          end

          raise FileUtilsError, "is_same? requires at least 2 files" if target.length < 2

          res = true
          size = nil
          target.each do |f|
            raise FileUtilsError, "Given file #{f} to is_same? does not exist" if not File.exist?(f)

            if size.nil?
              size = File.size(f)
            elsif File.size(f) != size
              res = false 
              break
            end

          end

          if res
            prevDigRes = nil
            target.each do |f|
              dig = OpenSSL::Digest.new("SHA256")
              bufSize = 2048*1000
              File.open(f,"rb") do |f|
                dig.update(f.read(bufSize))
              end
              digRes = dig.digest

              STDOUT.puts "#{f} : #{to_hex(digRes)}" if opts[:verbose]

              if prevDigRes.nil?
                prevDigRes = digRes
              elsif prevDigRes != digRes 
                res = false
                break
              end
            end
          end

          res

        end
      end

      def self.included(klass)
        File.class_eval <<-END
        extend Antrapol::ToolRack::FileUtils::ClassMethods
        END
      end
      
    end
  end
end


Version data entries

21 entries across 21 versions & 1 rubygems

Version Path
toolrack-0.24.3 lib/toolrack/file_utils.rb
toolrack-0.24.2 lib/toolrack/file_utils.rb
toolrack-0.24.1 lib/toolrack/file_utils.rb
toolrack-0.24.0 lib/toolrack/file_utils.rb
toolrack-0.23.3 lib/toolrack/file_utils.rb
toolrack-0.23.2 lib/toolrack/file_utils.rb
toolrack-0.22.1 lib/toolrack/file_utils.rb
toolrack-0.22.0 lib/toolrack/file_utils.rb
toolrack-0.21.0 lib/toolrack/file_utils.rb
toolrack-0.20.2 lib/toolrack/file_utils.rb
toolrack-0.20.1 lib/toolrack/file_utils.rb
toolrack-0.20.0 lib/toolrack/file_utils.rb
toolrack-0.19.1 lib/toolrack/file_utils.rb
toolrack-0.18.6 lib/toolrack/file_utils.rb
toolrack-0.18.5 lib/toolrack/file_utils.rb
toolrack-0.18.4 lib/toolrack/file_utils.rb
toolrack-0.18.3 lib/toolrack/file_utils.rb
toolrack-0.18.2 lib/toolrack/file_utils.rb
toolrack-0.18.1 lib/toolrack/file_utils.rb
toolrack-0.18.0 lib/toolrack/file_utils.rb