Added abbility to upload custom rpm to the projects repo
This commit is contained in:
49
app.rb
49
app.rb
@@ -1495,7 +1495,7 @@ get "/prjremoteaddr/:id" do
|
||||
if prj_info.nil?
|
||||
print_error_page(503, "Путь к проектам не существует")
|
||||
else
|
||||
@page_name = "Подписать проект #{prj_info[:projname]}"
|
||||
@page_name = "Установить адрес для репозитория проекта #{prj_info[:projname]}"
|
||||
@proj_name = prj_info[:projname]
|
||||
@proj_id = params["id"]
|
||||
@addres = prj_info[:remote_address]
|
||||
@@ -1532,6 +1532,53 @@ post "/prjremoteaddr/:id" do
|
||||
end
|
||||
end
|
||||
|
||||
get "/prjaddrpm/:id" do
|
||||
prj = ProjectsActions.new(cfg.get_projects_path, db)
|
||||
if prj.path.nil?
|
||||
print_error_page(503, "Путь к проектам не существует")
|
||||
else
|
||||
prj_info = prj.get_project(params["id"])
|
||||
if prj_info.nil?
|
||||
print_error_page(503, "Путь к проектам не существует")
|
||||
else
|
||||
@page_name = "Добавить rpm пакет в репозиторий #{prj_info[:projname]}"
|
||||
@proj_name = prj_info[:projname]
|
||||
@proj_id = params["id"]
|
||||
@proj_dir_list = prj.get_repo_dirs_list(params["id"])
|
||||
erb :projaddrpm
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
post "/prjaddrpm/:id" do
|
||||
prj = ProjectsActions.new(cfg.get_projects_path, db)
|
||||
if prj.path.nil?
|
||||
print_error_page(503, "Путь к проектам не существует")
|
||||
else
|
||||
prj_info = prj.get_project(params["id"])
|
||||
if prj_info.nil?
|
||||
print_error_page(503, "Путь к проектам не существует")
|
||||
else
|
||||
if params["cancel"].nil? && params["add"] == "add"
|
||||
direct = if params["newdir"].strip == ""
|
||||
params["directory"]
|
||||
else
|
||||
params["newdir"]
|
||||
end
|
||||
puts params
|
||||
err = prj.add_rpm(params["id"], direct, params["rpm_file"])
|
||||
unless err.nil?
|
||||
session[:prj_modal_info] = "Ошибка установки адреса проекта"
|
||||
session[:prj_modal_text] = err
|
||||
else
|
||||
prj.recreate_repo(params["id"])
|
||||
end
|
||||
end
|
||||
redirect "/prjedit/#{params["id"]}"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
get "/prjsignview/:id" do
|
||||
prj = ProjectsActions.new(cfg.get_projects_path, db)
|
||||
if prj.path.nil?
|
||||
|
||||
@@ -538,4 +538,40 @@ class ProjectsActions
|
||||
FileUtils.cp_r(Dir.glob(File.join(snap_path, '*')), repo_path)
|
||||
end
|
||||
end
|
||||
|
||||
def get_repo_dirs_list(id)
|
||||
repo_path = get_project_repo(id)
|
||||
dir_list = []
|
||||
if Dir.exist?(repo_path)
|
||||
dir_list = Dir.entries(repo_path).reject { |entry| entry == '.' || entry == '..' || entry == 'repodata' }
|
||||
end
|
||||
dir_list
|
||||
end
|
||||
|
||||
def add_rpm(id, directory, rpm_file)
|
||||
repo_path = get_project_repo(id)
|
||||
if !Dir.exist?(repo_path)
|
||||
return "Репозиторий отсутствует"
|
||||
end
|
||||
|
||||
target_dir = File.join(repo_path, directory)
|
||||
unless Dir.exist?(target_dir)
|
||||
Dir.mkdir(target_dir)
|
||||
end
|
||||
|
||||
target_file = File.join(target_dir, File.basename(rpm_file[:filename]))
|
||||
if File.exist?(target_file)
|
||||
return "Файл #{File.basename(rpm_file[:filename])} уже существует"
|
||||
end
|
||||
|
||||
begin
|
||||
File.open(target_file, "wb") do |file|
|
||||
file.write(rpm_file[:tempfile].read)
|
||||
end
|
||||
rescue => e
|
||||
return "Ошибка при создании файла: #{e.message}"
|
||||
end
|
||||
|
||||
nil
|
||||
end
|
||||
end
|
||||
|
||||
@@ -46,6 +46,8 @@
|
||||
конфигурацию сборки</span></a>
|
||||
<a href="/prjaddrepo/<%= ERB::Util.url_encode(@proj_id) %>" class="list-group-item list-group-item-action list-group-item-dark icon-link"><i
|
||||
class="bi bi-archive"></i><span class="ms-2">Добавить внутренний репозиторий из другого проекта</span></a>
|
||||
<a href="/prjaddrpm/<%= ERB::Util.url_encode(@proj_id) %>" class="list-group-item list-group-item-action list-group-item-dark icon-link"><i
|
||||
class="bi bi-bag-dash"></i><span class="ms-2">Добавить бинарный пакет в репозиторий</span></a>
|
||||
<a href="/prjrpm/<%= ERB::Util.url_encode(@proj_id) %>" class="list-group-item list-group-item-action list-group-item-dark icon-link"><i
|
||||
class="bi bi-box"></i><span class="ms-2">Список всех
|
||||
пакетов</span></a>
|
||||
|
||||
33
views/projaddrpm.erb
Normal file
33
views/projaddrpm.erb
Normal file
@@ -0,0 +1,33 @@
|
||||
<%= erb :header %>
|
||||
<div class="container">
|
||||
<h2 class="text-center">Установить адрес для репозитория проекта <%= @proj_name %></h2>
|
||||
<form action="/prjaddrpm/<%= ERB::Util.url_encode(@proj_id) %>" method="post" enctype='multipart/form-data'>
|
||||
<div class="text-center pb-3">
|
||||
<label class="form-label" for="newdir">
|
||||
Создать новый каталог с именем (может быть пустым, если уже существует нужный каталог):
|
||||
</label>
|
||||
<input class="form-control" type="text" id="newdir" name="newdir" value="">
|
||||
</div>
|
||||
<div class="text-center pb-3">
|
||||
<label class="form-label" for="directory">
|
||||
Выберите каталог куда будет помещен файл:
|
||||
</label>
|
||||
<select class="form-select" id="directory" name="directory">
|
||||
<% @proj_dir_list.each do |dir| %>
|
||||
<option value="<%= ERB::Util.html_escape(dir) %>"><%= ERB::Util.html_escape(dir) %></option>
|
||||
<% end %>
|
||||
</select>
|
||||
</div>
|
||||
<div class="text-center pb-3">
|
||||
<label class="form-label" for="rpm_file">
|
||||
Укажите rpm файл:
|
||||
</label>
|
||||
<input class="form-control" type="file" id="rpm_file" name="rpm_file" required>
|
||||
</div>
|
||||
<div class="mb-3 text-center">
|
||||
<button type="submit" class="btn btn-primary" name="cancel" value="cancel">Отменить</button>
|
||||
<button type="submit" class="btn btn-danger" name="add" value="add">Добавить</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<%= erb :footer %>
|
||||
Reference in New Issue
Block a user