Class: EnhanceRepo::RpmMd::DiskUsageProperty

Inherits:
Property
  • Object
show all
Defined in:
lib/enhance_repo/rpm_md/suse_data.rb

Instance Attribute Summary

Attributes inherited from Property

#name

Instance Method Summary collapse

Methods inherited from Property

#eql?, #hash

Constructor Details

#initialize(pkgid, rpmfile) ⇒ DiskUsageProperty

Returns a new instance of DiskUsageProperty.



57
58
59
60
61
# File 'lib/enhance_repo/rpm_md/suse_data.rb', line 57

def initialize(pkgid, rpmfile)
  super('diskusage')
  @pkgid = pkgid
  @rpmfile = rpmfile
end

Instance Method Details

#write(builder, pkgid) ⇒ Object



63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# File 'lib/enhance_repo/rpm_md/suse_data.rb', line 63

def write(builder, pkgid)
  dirsizes = Hash.new
  dircount = Hash.new
  `rpm -q --queryformat \"[%{FILENAMES} %{FILESIZES}\n]\" -p '#{@rpmfile}'`.each_line do |line|
    file, size = line.split
    dirsizes[File.dirname(file)] = 0 if not dirsizes.has_key?(File.dirname(file))
    dircount[File.dirname(file)] = 0 if not dircount.has_key?(File.dirname(file))
    
    dirsizes[File.dirname(file)] += size.to_i
    dircount[File.dirname(file)] += 1
  end

  builder.diskusage do |b|
    b.dirs do |b|
      dirsizes.each do |k, v|
        b.dir('name' => k, 'size' => v, 'count' => dircount[k] )
      end
    end
  end      
end