Added new repoview

master
Alexey Berezhok 3 weeks ago
parent e354e20f2d
commit 5fef1797a7

@ -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)

@ -25,6 +25,32 @@ gpgkey=<%= repo_url %><%= repo_name %>-gpg-key
gpgcheck=1" > /etc/yum.repos.d/<%= repo_name %>.repo
</pre>
</div>
</div>
<div class="container p-3">
<div class="card">
<div class="card-body">
<h5 class="card-title">Последние обновленные пакеты</h5>
<h6 class="card-subtitle mb-2 text-body-secondary">src.rpm (для непубличных репозиториев сам пакет с исходными кодами может отсутствовать)</h6>
<p class="card-text">
<table class="table table-striped">
<thead>
<tr>
<th scope="col">Дата обновления</th>
<th scope="col">Пакет исходников</th>
</tr>
</thead>
<tbody>
<% last_update_src.each do |item| %>
<tr>
<td><%= item[0] %></td>
<td><%= item[1] %></td>
</tr>
<% end %>
</tbody>
</table>
</p>
</div>
</div>
</div>
<div class="container p-3">
<div class="card border-warning mb-3">
@ -49,20 +75,38 @@ gpgcheck=1" > /etc/yum.repos.d/<%= repo_name %>.repo
<button class="accordion-button collapsed" type="button"
data-bs-toggle="collapse" data-bs-target="#rid<%= jndex %>" aria-expanded="false"
aria-controls="rid<%= jndex %>">
<%= idata[:fname] %> (<%= idata[:stat]%>)
<%= idata[1] %>
</button>
</h2>
<div id="rid<%= jndex %>" class="accordion-collapse collapse" data-bs-parent="#rpmInfo">
<div class="accordion-body">
<div class="accordion accordion-flush" id="pkgInfo">
<% idata[0].each_with_index do |iidata, ijndex| %>
<div class="accordion-item">
<h2 class="accordion-header">
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#pid<%= ijndex %>" aria-expanded="false" aria-controls="pid<%= ijndex %>">
<%= iidata[:fname] %> (<%= iidata[:stat]%>)
</button>
</h2>
<div id="pid<%= ijndex %>" class="accordion-collapse collapse" data-bs-parent="#pkgInfo" style="">
<div class="accordion-body">
<div class="accordion accordion-flush" id="pkgInfo">
<ul class="list-group list-group-flush">
<li class="list-group-item list-group-item-warning"> Скачать пакет - <a href="<%= idata[:aname] %>"><%= idata[:fname] %></a> </li>
<% idata[:chlog].each do |chlg| %>
<li class="list-group-item list-group-item-warning"> Скачать пакет - <a href="<%= iidata[:aname] %>"><%= iidata[:fname] %></a> </li>
<% iidata[:chlog].each do |chlg| %>
<li class="list-group-item list-group-item-warning"> <%= chlg.text %> </li>
<% end %>
</ul>
</div>
</div>
</div>
</div>
<% end %>
</div>
</div>
</div>
</div>
<% end %>
</div>
</div>

Loading…
Cancel
Save