Sha256: 34484ecda4574e7a82256d85add8af4a3a3ec4532f845ccd7e696eb9c17d1155

Contents?: true

Size: 1.15 KB

Versions: 2

Compression:

Stored size: 1.15 KB

Contents

require_relative "dsl/ro_file"
module RoCommands
  class Info < Base
    include DSL::RoFile

    class RoFile
      def initialize(path, size)
        @path = path
        @size = size
      end

      def path
      	@path ||= nil
      end

      def size
      	@size ||= nil
      end

      def to_s
        "size:#{(size/1024)}kb, path:#{path}"
      end
    end

    desc 'file_size', ''

    def list(path, recursive=false)
      if recursive
        find(path).each do |f|
          files << RoFile.new(f, size(f))
        end
        puts files.sort_by(&:size)
      else
        Dir[File.join(path, "**")].each do |f|
          if dir?(f)
            s = find(f).inject(0) do |total_size, file|
              total_size += size(file).to_i
            end

            rf = RoFile.new(f, s)
          else
            rf = RoFile.new(f, size(f))
          end
          files << rf
        end
        puts files.compact.sort_by(&:size)
      end
    end


    private

    def files
    	@files.flatten! if defined?(@files) and @files.respond_to?(:flatten!)
    	@files.uniq! if defined?(@files) and @files.respond_to?(:uniq!)
    	@files ||= []
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
ro_commands-0.0.3 lib/ro_commands/info.rb
ro_commands-0.0.2 lib/ro_commands/info.rb