Added preparing actions for custom build

This commit is contained in:
Alexey Berezhok
2026-04-19 01:20:36 +03:00
parent 0828293f36
commit 8f1e8d4a0b
7 changed files with 364 additions and 2 deletions

128
app.rb
View File

@@ -1916,6 +1916,134 @@ get "/prjuplrpm/:id" do
end
get "/prjcstmbld/:id/:git_id" do
prj = ProjectsActions.new(cfg.get_projects_path, db)
if prj.path.nil?
print_error_page(503, "Путь к проектам не существует")
else
repo = GitRepo.new(cfg.get_repo, db)
if repo.path.nil?
print_error_page(503, "Путь к репозиториям не существует")
else
prj_info = prj.get_project(params["id"])
if prj_info.nil?
print_error_page(503, "Путь к проектам не существует")
else
git_info = repo.get_repo_short_info_by_id(params["git_id"].to_i)
@page_name = "#{prj_info[:projname]} задать скрипт сборки git проекта #{git_info[:reponame]}"
@proj_name = prj_info[:projname]
@proj_descr = prj_info[:descr]
@git_name = git_info[:reponame]
@proj_id = prj_info[:id]
@git_id = git_info[:id]
cust_bld = prj.get_project_custom_build(prj_info[:id], git_info[:id])
if session[:errora_data].nil?
@old_filepath = cust_bld[:script_name]
else
@old_filepath = session[:old_filepath]
end
if session[:old_content].nil?
@old_content = cust_bld[:content]
else
@old_content = session[:old_content]
end
if session[:old_descr].nil?
@old_descr = cust_bld[:description]
else
@old_descr = session[:old_descr]
end
@error_data = session[:errora_data]
session[:errora_data] = nil
session[:old_filepath] = nil
session[:old_descr] = nil
session[:old_content] = nil
erb :prjcustombld
end
end
end
end
post "/prjcstmbld/:id/:git_id" do
unless params["cancel"].nil?
session[:old_filepath] = nil
session[:old_descr] = nil
session[:old_content] = nil
redirect "/prjedit/#{params["id"]}"
else
session[:old_filepath] = params["filepath"]
session[:old_descr] = params["description"]
session[:old_content] = params["codedata"]
if params["filepath"].nil? || params["description"].nil? || params["filepath"].strip == "" || params["description"].strip == ""
session[:errora_data] = "Имя рецепта и описание не должны быть пустыми"
redirect "/prjcstmbld/#{params["id"]}/#{params["git_id"]}"
else
if params["filepath"] =~ /^[0-9a-zA-Z_\.]+$/
# Valid filepath
# Proceed with further processing
codedata = params["codedata"].gsub(/\r$/, "")
prj = ProjectsActions.new(cfg.get_projects_path, db)
if prj.path.nil?
print_error_page(503, "Путь к проектам не существует")
else
repo = GitRepo.new(cfg.get_repo, db)
if repo.path.nil?
print_error_page(503, "Путь к репозиториям не существует")
else
prj_info = prj.get_project(params["id"])
if prj_info.nil?
print_error_page(503, "Путь к проектам не существует")
else
unless params["save"].nil?
prj.set_project_custom_build(params["id"], params["git_id"], params["filepath"], params["description"], codedata)
redirect "/prjedit/#{params["id"]}"
end
end
end
end
else
# Invalid filepath
session[:errora_data] = "Недопустимые символы в имени файла"
redirect "/prjcstmbld/#{params["id"]}/#{params["git_id"]}"
end
end
end
end
post "/prjcstmblddel/:id/:git_id" do
prj = ProjectsActions.new(cfg.get_projects_path, db)
if prj.path.nil?
print_error_page(503, "Путь к проектам не существует")
else
repo = GitRepo.new(cfg.get_repo, db)
if repo.path.nil?
print_error_page(503, "Путь к репозиториям не существует")
else
prj_info = prj.get_project(params["id"])
if prj_info.nil?
print_error_page(503, "Путь к проектам не существует")
else
git_info = repo.get_repo_short_info_by_id(params["git_id"].to_i)
input_name = params["rcpnamedup"]
info = prj.get_project_custom_build(prj_info[:id], git_info[:id])
if info.nil?
print_error_page(404, "Скрипта не существует")
else
puts input_name
puts info
if info[:script_name] == input_name
prj.del_project_custom_build(params["id"], params["git_id"])
end
redirect "/prjedit/#{params["id"]}"
end
end
end
end
end
get "/sanitize" do
#Подчистим гит проекты, которые есть в базе, но нет в файловой системе