Sha256: e50cb238659f539d28a1f7c4e57132157c02e137cb1111aefc7c24064c7c385a

Contents?: true

Size: 1.7 KB

Versions: 1

Compression:

Stored size: 1.7 KB

Contents

module AgileUtils
  module FileUtil
    require 'zlib'
    require 'minitar'

    class << self
      CustomError = Class.new(StandardError)
      # Find list of files based on certain extension
      #
      # @param [String] base_dir the starting directory
      # @param [String] extension the file extension to search for
      #
      # @return [Array<String>] list of matching files or empty list
      # rubocop:disable CollectionMethods
      def find(base_dir, extension = "xhtml")
        file_paths = []
        Find.find(base_dir) do |path|
          file_paths << path if path =~ /.*\.#{extension}$/
        end
        file_paths
      end
      # rubocop:enable All

      # @param [Array<String>] files list of input files
      # @param [String] output the output file in .tar.gz format
      def tar_gzip_files(files, output="output.tgz")
        Minitar.pack(files, Zlib::GzipWriter.new(File.open(output, 'wb')))
      end

      # Uncompress 'input.tar.gz' file
      #
      # @param [String] filename input file in the 'tar.gzip' format
      # @param [String] output_dir the output directory
      def gunzip(filename, output_dir)
        input_file = File.open(filename, "rb")
        tgz = Zlib::GzipReader.new(input_file)
        Archive::Tar::Minitar.unpack(tgz, output_dir)
      end

      # Delete the files from the given list
      #
      # @param files list of files to be deleted
      def delete(files)
        files.each do |file|
          FileUtils.rm_rf(file)
        end
      end

      # Time the operation before and after the operation for tuning purpose
      def time
        beg_time = Time.now
        yield
        end_time = Time.now
        end_time - beg_time
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
agile_utils-0.3.2 lib/agile_utils/file_util.rb