diff --git a/app.rb b/app.rb index a2d204a..17b9b16 100644 --- a/app.rb +++ b/app.rb @@ -45,6 +45,7 @@ get "/" do else repo_data = repo.getrepos @repos_number = repo_data.length + @rcp_number = db.get_recips.length erb :index end end @@ -87,6 +88,23 @@ get "/repos/:reponame" do end end +post "/gitdelete/:reponame" do + input_name = params["reponamedup"] + repo = GitRepo.new(cfg.get_repo, db) + if repo.path.nil? + print_error_page(503, "Путь к репозиториям не существует") + else + if params["reponame"] == input_name + repo.delete_repo(input_name) + end + redirect "/repos" + end +end + +get "/gitdelete" do + redirect "/repos" +end + get "/repos" do @page_name = "Список доступных git репозиториев" repo = GitRepo.new(cfg.get_repo, db) @@ -131,6 +149,12 @@ post "/gitcreate" do redirect "/gitcreate" end +get "/recips" do + @page_name = "Список доступных сценариев сборки" + @rcp_data = db.get_recips + erb :receips +end + not_found do status 404 @page_name = "Кто-то потерялся" diff --git a/classes/db.rb b/classes/db.rb index 38e2cc4..ee1bab5 100644 --- a/classes/db.rb +++ b/classes/db.rb @@ -6,6 +6,12 @@ Sequel.connect(cfg_internal.get_db) class Repos < Sequel::Model(:repos) end +class Recips < Sequel::Model(:recips) +end + +class RepocRecips < Sequel::Model(:repos_recips) +end + class DBase attr :error, :last_id @@ -24,4 +30,11 @@ class DBase def get_repo_info_by_name(repo_name) Repos.where(reponame: repo_name) end + + def get_recips() + result = [] + Recips.order(:id).map do |item| + { :fname => item[:filepath], :descr => item[:descr], :id => item[:id] } + end + end end diff --git a/classes/gitinfo.rb b/classes/gitinfo.rb index 1e7453e..c99a559 100644 --- a/classes/gitinfo.rb +++ b/classes/gitinfo.rb @@ -138,4 +138,14 @@ class GitRepo info[:error] = @error info end + + def delete_repo(reponame) + git_path = File.expand_path(reponame + ".git", @path) + File.open("locks/gitcreate", "r") do |f| + f.flock(File::LOCK_EX) + if File.exist?(git_path) + FileUtils.rm_rf(git_path, secure: true) + end + end + end end diff --git a/views/gitinfo.erb b/views/gitinfo.erb index ed8fe8c..655a948 100644 --- a/views/gitinfo.erb +++ b/views/gitinfo.erb @@ -139,10 +139,11 @@ title: 'Подтвердите удаление репозитория!', content: '' + '
' + - '
' + + '' + '
' + '' + '' + + '' + '
' + '
' + '
', @@ -154,7 +155,7 @@ titleClass: 'text-danger mx-auto p-2', btnClass: 'btn btn-danger', action: function () { - var correct_name = $("#reponame").val(); + var correct_name = this.$content.find("#repohid").val(); var name = this.$content.find('.frmchk').val(); if(!name){ $.alert({ diff --git a/views/header.erb b/views/header.erb index 922cc97..edf08b8 100644 --- a/views/header.erb +++ b/views/header.erb @@ -1,5 +1,5 @@ - + @@ -18,6 +18,25 @@ +
+
+ + git-репозитории + + | + + проекты + + | + + рецепты + + | + + rpm-пакеты + +
+
\ No newline at end of file diff --git a/views/index.erb b/views/index.erb index 6dfff49..b9dc2d0 100644 --- a/views/index.erb +++ b/views/index.erb @@ -41,7 +41,7 @@
-

2

+

<%= @rcp_number %>

Рецепты

diff --git a/views/receips.erb b/views/receips.erb new file mode 100644 index 0000000..c2d7b0f --- /dev/null +++ b/views/receips.erb @@ -0,0 +1,30 @@ +<%= erb :header %> +
+
+
+

Доступные рецепты

+

Страница управления рецептами

+
+ +
+
+
+
+ <% @rcp_data.each do |item| %> +
+
+
+
<%= item[:fname] %>
+

<%= item[:descr] %>

+ Редактировать +
+
+
+ <% end %> +
+
+
+<%= erb :footer %> \ No newline at end of file