diff --git a/classes/config.rb b/classes/config.rb index 6c0cf3d..003d557 100644 --- a/classes/config.rb +++ b/classes/config.rb @@ -1,20 +1,24 @@ require "inifile" +# Класс для работы с конфигурацией INI-файла class IniConfig attr :path + # Конструктор класса, принимает путь к INI-файлу и парсит его содержимое def initialize(in_path = "config.ini") @path = in_path @config = {} parse_ini end + # Метод для парсинга INI-файла и загрузки его содержимого в хэш def parse_ini() return if path.nil? return unless File.exist? path @config = IniFile.load(path) end + # Метод для получения порта сервера из конфигурации, если он задан, иначе возвращает значение по умолчанию (8080) def get_port() unless @config["server"]["port"].nil? @config["server"]["port"].to_i @@ -23,6 +27,7 @@ class IniConfig end end + # Метод для получения репозитория из конфигурации, если он задан, иначе возвращает значение по умолчанию ("repo") def get_repo() unless @config["repo"]["repo"].nil? @config["repo"]["repo"].to_s @@ -31,6 +36,7 @@ class IniConfig end end + # Метод для получения базы данных из конфигурации, если она задана, иначе возвращает значение по умолчанию ("db") def get_db() unless @config["server"]["db"].nil? @config["server"]["db"].to_s @@ -39,6 +45,7 @@ class IniConfig end end + # Метод для получения скрытых конфигураций из конфигурации, если они заданы, иначе возвращает пустой массив def get_configs_hide() unless @config["configs"]["hide"].nil? @config["configs"]["hide"].split(",").map { |item| item.strip } @@ -47,6 +54,7 @@ class IniConfig end end + # Метод для получения выбранных конфигураций из конфигурации, если они заданы, иначе возвращает пустой массив def get_configs_selected() unless @config["configs"]["selected"].nil? @config["configs"]["selected"].split(",").map { |item| item.strip } @@ -55,6 +63,7 @@ class IniConfig end end + # Метод для получения пути к проектам из конфигурации, если он задан, иначе возвращает значение по умолчанию ("projects") def get_projects_path() unless @config["projects"]["path"].nil? @config["projects"]["path"].to_s @@ -63,6 +72,7 @@ class IniConfig end end + # Метод для получения пути к счетчику из конфигурации, если он задан, иначе возвращает значение по умолчанию ("locks/counter") def get_counter_path() unless @config["counter"]["path"].nil? @config["counter"]["path"].to_s @@ -71,6 +81,7 @@ class IniConfig end end + # Метод для получения пути к блокировке сборки из конфигурации, если он задан, иначе возвращает значение по умолчанию ("locks/build") def get_build_lock_path() unless @config["build"]["path"].nil? @config["build"]["path"].to_s @@ -79,6 +90,7 @@ class IniConfig end end + # Метод для получения количества элементов на странице из конфигурации, если оно задано и больше нуля, иначе возвращает значение по умолчанию (30) def get_items_per_page() unless @config["pages"]["items_per_page"].nil? res = @config["pages"]["items_per_page"].to_i @@ -91,6 +103,7 @@ class IniConfig end end + # Метод для получения пути к ключам из конфигурации, если он задан, иначе возвращает значение по умолчанию ("keys") def get_keys_path() unless @config["sign"]["path"].nil? @config["sign"]["path"].to_s @@ -99,6 +112,7 @@ class IniConfig end end + # Метод для получения пути к реповьюверу из конфигурации, если он задан, иначе возвращает значение по умолчанию ("repoview") def get_repoview_path() unless @config["repoview"]["path"].nil? @config["repoview"]["path"].to_s diff --git a/classes/configs.rb b/classes/configs.rb index 670fac4..34bf072 100644 --- a/classes/configs.rb +++ b/classes/configs.rb @@ -1,27 +1,49 @@ +# Подключаем файл utilities.rb для использования его методов require_relative "utilities" +# Класс ConfigsList для работы со списком конфигураций class ConfigsList + # Определение свойств класса attr :error, :cfg + # Конструктор класса с параметром cfg def initialize(cfg) @cfg = cfg end + # Метод get_configs для получения списка конфигураций def get_configs + # Получаем список скрытых конфигураций из cfg hide_list = @cfg.get_configs_hide + # Получаем список выбранных конфигураций из cfg select_list = @cfg.get_configs_selected + + # Создаем список глобальных конфигураций в директории /etc/mock/*.cfg 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) } + + # Проверяем наличие глобальных конфигураций и создаем пустой список, если их нет if list_global.nil? list_global = [] end + + # Создаем список локальных конфигураций в директории ~/.config/mock/*.cfg list_local = Dir["~/.config/mock/*.cfg"].map { |item| [File.dirname(item), File.basename(item, ".cfg"), item] } + + # Проверяем наличие локальных конфигураций и создаем пустой список, если их нет if list_local.nil? list_local = [] end + + # Создаем список выбранных конфигураций из глобального и локального списка list_selected = (list_global + list_local).select { |item| check_partname_in_array(item[1], select_list) } + + # Проверяем наличие выбранных конфигураций и создаем пустой список, если их нет if list_selected.nil? list_selected = [] end + + # Возвращаем хеш с глобальными, локальными и выбранными конфигурациями { :global => list_global, :local => list_local, :selected => list_selected } end + end