diff --git a/app.rb b/app.rb index 159a9cb..562c6c6 100644 --- a/app.rb +++ b/app.rb @@ -1438,6 +1438,14 @@ get "/sanitize" do erb :sanitize end +get "/buildsclean" do + @page_name = "Очистка окружений сборок" + mock_cache_path = "/var/cache/mock/" + @list_cleaned = get_dirs_in_mock_cache(mock_cache_path) + MockManager.clean_mock + erb :buildsclean +end + not_found do status 404 @page_name = "Кто-то потерялся" diff --git a/classes/mock.rb b/classes/mock.rb index 8e9db8a..d497e28 100644 --- a/classes/mock.rb +++ b/classes/mock.rb @@ -321,4 +321,10 @@ class MockManager @db.after_fork end + + def self.clean_mock + cmd_args = %Q(/usr/bin/mock --scrub-all-chroots) + cmd = Runner.new(cmd_args) + cmd.run_clean + end end diff --git a/classes/utilities.rb b/classes/utilities.rb index d801df5..18ec825 100644 --- a/classes/utilities.rb +++ b/classes/utilities.rb @@ -54,3 +54,8 @@ end def get_rpms_list(directory) Dir.glob(File.join(directory, "**", "*.rpm")).reject { |f| File.directory?(f) || f =~ /repodata\// }.map { |f| f.delete_prefix(directory + "/") } end + +def get_dirs_in_mock_cache(dir_path) + Dir.glob(File.join(dir_path, "*")).select { |f| File.directory?(f) }.map{ |f| File.basename(f) } +end + diff --git a/views/buildsclean.erb b/views/buildsclean.erb new file mode 100644 index 0000000..618aa84 --- /dev/null +++ b/views/buildsclean.erb @@ -0,0 +1,23 @@ +<%= erb :header %> +
Ни один проект не был очищен, очищены только окружения сборок. Это значит, что следующая сборка будет длится дольше, но некоторые ошибки накопившиеся в кэше сборки будут устранены
+