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?
|
if prj_info.nil?
|
||||||
print_error_page(503, "Путь к проектам не существует")
|
print_error_page(503, "Путь к проектам не существует")
|
||||||
else
|
else
|
||||||
@page_name = "Подписать проект #{prj_info[:projname]}"
|
@page_name = "Установить адрес для репозитория проекта #{prj_info[:projname]}"
|
||||||
@proj_name = prj_info[:projname]
|
@proj_name = prj_info[:projname]
|
||||||
@proj_id = params["id"]
|
@proj_id = params["id"]
|
||||||
@addres = prj_info[:remote_address]
|
@addres = prj_info[:remote_address]
|
||||||
@@ -1532,6 +1532,53 @@ post "/prjremoteaddr/:id" do
|
|||||||
end
|
end
|
||||||
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
|
get "/prjsignview/:id" do
|
||||||
prj = ProjectsActions.new(cfg.get_projects_path, db)
|
prj = ProjectsActions.new(cfg.get_projects_path, db)
|
||||||
if prj.path.nil?
|
if prj.path.nil?
|
||||||
|
|||||||
@@ -538,4 +538,40 @@ class ProjectsActions
|
|||||||
FileUtils.cp_r(Dir.glob(File.join(snap_path, '*')), repo_path)
|
FileUtils.cp_r(Dir.glob(File.join(snap_path, '*')), repo_path)
|
||||||
end
|
end
|
||||||
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
|
end
|
||||||
|
|||||||
@@ -46,6 +46,8 @@
|
|||||||
конфигурацию сборки</span></a>
|
конфигурацию сборки</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
|
<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>
|
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
|
<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">Список всех
|
class="bi bi-box"></i><span class="ms-2">Список всех
|
||||||
пакетов</span></a>
|
пакетов</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