diff --git a/app.rb b/app.rb index 800a228..e6df777 100644 --- a/app.rb +++ b/app.rb @@ -262,6 +262,27 @@ post "/rcpcreate" do end end +get "/bldcfg" do + @page_name = "Список конфигураций сборки" + hide_list = cfg.get_configs_hide + select_list = cfg.get_configs_selected + @list_global = Dir["/etc/mock/*.cfg"].map { |item| [File.dirname(item), File.basename(item, ".cfg"), item] }.reject { |item| check_partname_in_array(item[1], hide_list) } + @list_local = Dir["~/.config/mock/*.cfg"].map { |item| [File.dirname(item), File.basename(item, ".cfg"), item] } + @list_selected = (@list_global + @list_local).select { |item| check_partname_in_array(item[1], select_list) } + erb :cfgslist +end + +get "/bldcfginfo" do + @filename = params["info"] + if @filename.nil? + print_error_page(503, "Не задано имя конфигурационного файла") + else + @page_name = @filename + @content = File.readlines(@filename) + erb :cfgsinfo + end +end + not_found do status 404 @page_name = "Кто-то потерялся" diff --git a/classes/config.rb b/classes/config.rb index 2819853..0aa800c 100644 --- a/classes/config.rb +++ b/classes/config.rb @@ -38,4 +38,20 @@ class IniConfig "db" end end + + def get_configs_hide() + unless @config["configs"]["hide"].nil? + @config["configs"]["hide"].split(",").map { |item| item.strip } + else + [] + end + end + + def get_configs_selected() + unless @config["configs"]["selected"].nil? + @config["configs"]["selected"].split(",").map { |item| item.strip } + else + [] + end + end end diff --git a/classes/utilities.rb b/classes/utilities.rb index ca4b704..3cdc14b 100644 --- a/classes/utilities.rb +++ b/classes/utilities.rb @@ -13,3 +13,14 @@ def sanitize_rcptname(filename) sanitized.gsub!(/^_+|_+$/, "") sanitized end + +def check_partname_in_array(filename, search_array) + fnd = false + search_array.each do |item| + if filename.include?(item) + fnd = true + break + end + end + fnd +end diff --git a/config.ini b/config.ini index b00456b..a2734dc 100644 --- a/config.ini +++ b/config.ini @@ -3,4 +3,12 @@ port = 8081 db = "sqlite://db/workbase.sqlite3" [repo] -repo = "repo" \ No newline at end of file +repo = "repo" + +[projects] +path = "projects" +old = 3 + +[configs] +hide=open,amazon,anolis,circle,custom,euro,fedora,mageia,navy,alma,rocky +selected=msvsphere \ No newline at end of file diff --git a/views/cfgsinfo.erb b/views/cfgsinfo.erb new file mode 100644 index 0000000..24f527a --- /dev/null +++ b/views/cfgsinfo.erb @@ -0,0 +1,21 @@ +<%= erb :header %> +
+

<%= @filename %>

+
+ <% @content.each do |line| %> + <% if line =~ /^include\(/ + dn = File.dirname(@filename) + result = line.match /^include\s*\('(?\S+)'\)/ + if result.nil? + %> +

<%= line %>

+ <% else link = File.join(dn, result[:fl]) %> +

<%= line %>

+ <% end + else %> +

<%= line %>

+ <% end %> + <% end %> +
+
+<%= erb :footer %> \ No newline at end of file diff --git a/views/cfgslist.erb b/views/cfgslist.erb new file mode 100644 index 0000000..df2336c --- /dev/null +++ b/views/cfgslist.erb @@ -0,0 +1,29 @@ +<%= erb :header %> +
+

Список доступных конфигураций

+

Избранные

+
+ <% @list_selected.each do |item| %> + + <% end %> +
+

Локальные

+
+ <% @list_local.each do |item| %> + + <% end %> +
+

Глобальные

+
+ <% @list_global.each do |item| %> + + <% end %> +
+
+<%= erb :footer %> \ No newline at end of file diff --git a/views/header.erb b/views/header.erb index 87e89f5..9885474 100644 --- a/views/header.erb +++ b/views/header.erb @@ -40,6 +40,10 @@ rpm-пакеты + | + + build-окружения +
diff --git a/views/index.erb b/views/index.erb index b9dc2d0..4640a4c 100644 --- a/views/index.erb +++ b/views/index.erb @@ -88,4 +88,16 @@
+
+
+
+
+
+

Окружения сборки

+

Список всех доступных окружений сборки

Перейти к списку достпуных окружений +
+
+
+
+
<%= erb :footer %> \ No newline at end of file