Added new repoview
This commit is contained in:
@@ -87,38 +87,74 @@ class RepoManager
|
|||||||
def repoview(url, repo_name, template_dir)
|
def repoview(url, repo_name, template_dir)
|
||||||
rpm_list = get_rpms_list(@path)
|
rpm_list = get_rpms_list(@path)
|
||||||
result = {}
|
result = {}
|
||||||
|
nresult = {}
|
||||||
rpm_list.each do |item|
|
rpm_list.each do |item|
|
||||||
full_rpm_path = File.join(@path, item)
|
full_rpm_path = File.join(@path, item)
|
||||||
info = @reader.get_rpm_info(full_rpm_path)
|
info = @reader.get_rpm_info(full_rpm_path)
|
||||||
dirName = File.dirname(item)
|
dirName = File.dirname(item)
|
||||||
fileName = File.basename(item)
|
fileName = File.basename(item)
|
||||||
if result[dirName].nil?
|
if result[dirName].nil?
|
||||||
result[dirName] = []
|
result[dirName] = {}
|
||||||
end
|
end
|
||||||
|
nresult[dirName] = [] if nresult[dirName].nil?
|
||||||
pkg_info = {}
|
pkg_info = {}
|
||||||
pkg_info[:fname] = fileName
|
pkg_info[:fname] = fileName
|
||||||
pkg_info[:aname] = item
|
pkg_info[:aname] = item
|
||||||
pkg_info[:stat] = File.stat(full_rpm_path).ctime
|
pkg_info[:stat] = File.stat(full_rpm_path).ctime
|
||||||
|
pkg_info[:pname] = "noname"
|
||||||
if info[:error].nil?
|
if info[:error].nil?
|
||||||
pkg_info[:chlog] = info[:pkginfo].changelog.first(5)
|
pkg_info[:chlog] = info[:pkginfo].changelog.first(5)
|
||||||
|
pkg_info[:pname] = info[:pkginfo].name
|
||||||
else
|
else
|
||||||
pkg_info[:chlog] = []
|
pkg_info[:chlog] = []
|
||||||
end
|
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
|
end
|
||||||
repo_name = repo_name
|
repo_name = repo_name
|
||||||
repo_url = url
|
repo_url = url
|
||||||
pkg_num = rpm_list.length
|
pkg_num = rpm_list.length
|
||||||
repo_data = []
|
repo_data = []
|
||||||
data_keys = []
|
data_keys = []
|
||||||
|
lresult = {}
|
||||||
result.each_pair do |key, value|
|
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
|
data_keys << key.to_s
|
||||||
end
|
end
|
||||||
|
|
||||||
data_keys.sort!
|
data_keys.sort!
|
||||||
data_keys.each do |item|
|
data_keys.each do |item|
|
||||||
repo_data << [result[item], item]
|
repo_data << [lresult[item], item]
|
||||||
end
|
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")
|
tpl_file = File.join(template_dir, "template.erb")
|
||||||
template = File.read(tpl_file)
|
template = File.read(tpl_file)
|
||||||
renderer = ERB.new(template)
|
renderer = ERB.new(template)
|
||||||
|
|||||||
@@ -25,6 +25,32 @@ gpgkey=<%= repo_url %><%= repo_name %>-gpg-key
|
|||||||
gpgcheck=1" > /etc/yum.repos.d/<%= repo_name %>.repo
|
gpgcheck=1" > /etc/yum.repos.d/<%= repo_name %>.repo
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</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>
|
||||||
<div class="container p-3">
|
<div class="container p-3">
|
||||||
<div class="card border-warning mb-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"
|
<button class="accordion-button collapsed" type="button"
|
||||||
data-bs-toggle="collapse" data-bs-target="#rid<%= jndex %>" aria-expanded="false"
|
data-bs-toggle="collapse" data-bs-target="#rid<%= jndex %>" aria-expanded="false"
|
||||||
aria-controls="rid<%= jndex %>">
|
aria-controls="rid<%= jndex %>">
|
||||||
<%= idata[:fname] %> (<%= idata[:stat]%>)
|
<%= idata[1] %>
|
||||||
</button>
|
</button>
|
||||||
</h2>
|
</h2>
|
||||||
<div id="rid<%= jndex %>" class="accordion-collapse collapse" data-bs-parent="#rpmInfo">
|
<div id="rid<%= jndex %>" class="accordion-collapse collapse" data-bs-parent="#rpmInfo">
|
||||||
<div class="accordion-body">
|
<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">
|
<ul class="list-group list-group-flush">
|
||||||
<li class="list-group-item list-group-item-warning"> Скачать пакет - <a href="<%= idata[:aname] %>"><%= idata[:fname] %></a> </li>
|
<li class="list-group-item list-group-item-warning"> Скачать пакет - <a href="<%= iidata[:aname] %>"><%= iidata[:fname] %></a> </li>
|
||||||
<% idata[:chlog].each do |chlg| %>
|
<% iidata[:chlog].each do |chlg| %>
|
||||||
<li class="list-group-item list-group-item-warning"> <%= chlg.text %> </li>
|
<li class="list-group-item list-group-item-warning"> <%= chlg.text %> </li>
|
||||||
<% end %>
|
<% end %>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user