diff --git a/classes/repomanage.rb b/classes/repomanage.rb index 32461d0..8c2c1c1 100644 --- a/classes/repomanage.rb +++ b/classes/repomanage.rb @@ -87,38 +87,74 @@ class RepoManager def repoview(url, repo_name, template_dir) rpm_list = get_rpms_list(@path) result = {} + nresult = {} rpm_list.each do |item| full_rpm_path = File.join(@path, item) info = @reader.get_rpm_info(full_rpm_path) dirName = File.dirname(item) fileName = File.basename(item) if result[dirName].nil? - result[dirName] = [] + result[dirName] = {} end + nresult[dirName] = [] if nresult[dirName].nil? pkg_info = {} pkg_info[:fname] = fileName pkg_info[:aname] = item pkg_info[:stat] = File.stat(full_rpm_path).ctime + pkg_info[:pname] = "noname" if info[:error].nil? pkg_info[:chlog] = info[:pkginfo].changelog.first(5) + pkg_info[:pname] = info[:pkginfo].name else pkg_info[:chlog] = [] end - result[dirName] << pkg_info + result[dirName][pkg_info[:pname]] = [] unless result[dirName].key?(pkg_info[:pname]) + result[dirName][pkg_info[:pname]] << pkg_info + nresult[dirName] << pkg_info end repo_name = repo_name repo_url = url pkg_num = rpm_list.length repo_data = [] data_keys = [] + lresult = {} result.each_pair do |key, value| - result[key.to_s].sort_by! { |item| item[:fname] } + pak_keys = [] + value.each_pair do |pkey, pvalue| + result[key][pkey].sort_by! { |item| item[:fname] } + pak_keys << pkey.to_s + end + pak_keys.sort! + lresult[key] = [] unless lresult.key?(key.to_s) + pak_keys.each do |item| + lresult[key] << [value[item], item] + end + data_keys << key.to_s end + data_keys.sort! data_keys.each do |item| - repo_data << [result[item], item] + repo_data << [lresult[item], item] + end + + last_update_src = [] + if nresult.key?("SRPMS") + last_update_src = nresult["SRPMS"].map do |record| + { fname: record[:fname], stat: record[:stat] } + end.sort_by! do |item| + [item[:stat], -item[:fname].downcase.ord] + end.map do |record| + if record[:stat].nil? + ["нет даты", record[:fname]] + else + [record[:stat].strftime("%Y-%m-%d"), record[:fname]] + end + end end + + pp repo_data + tpl_file = File.join(template_dir, "template.erb") template = File.read(tpl_file) renderer = ERB.new(template) diff --git a/repoview/template.erb b/repoview/template.erb index 5d3bd07..a68b666 100644 --- a/repoview/template.erb +++ b/repoview/template.erb @@ -25,6 +25,32 @@ gpgkey=<%= repo_url %><%= repo_name %>-gpg-key gpgcheck=1" > /etc/yum.repos.d/<%= repo_name %>.repo + +
+
| Дата обновления | +Пакет исходников | +
|---|---|
| <%= item[0] %> | +<%= item[1] %> | +