Skip to content

RackeyHacker/Configuration-management--dz2

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Configuration-management--dz2

Задание №2 (5 вариант) Разработать инструмент командной строки для визуализации графа зависимостей, включая транзитивные зависимости. Сторонние средства для получения зависимостей использовать нельзя. Зависимости определяются для git-репозитория. Для описания графа зависимостей используется представление PlantUML. Визуализатор должен выводить результат на экран в виде графического изображения графа. Построить граф зависимостей для коммитов, в узлах которого содержатся дата, время и автор коммита. Граф необходимо строить для тега с заданным именем.

Конфигурационный файл имеет формат json и содержит: • Путь к программе для визуализации графов. • Путь к анализируемому репозиторию. • Имя тега в репозитории. Все функции визуализатора зависимостей должны быть покрыты тестами.

Описание функций

  1. load_config(config_path: str) -> Dict[str, str]

    • Загружает конфигурацию из JSON-файла по указанному пути.

    • Возвращает словарь с настройками.

  2. get_commits(repo_path: str, tag_name: str, previous_tag: str = None) -> List[Tuple[str, str, str]]

    • Извлекает список коммитов между текущим тегом и предыдущим тегом (если он указан).

    • Возвращает список кортежей с хешем коммита, датой, автором и сообщением коммита.

  3. get_commit_message(repo_path: str, commit_hash: str) -> str

    • Получает сообщение коммита по его хешу.

    • Возвращает строку с сообщением.

  4. build_plantuml_graph(commits_per_tag: Dict[str, List[Tuple[str, str, str]]]) -> str

    • Создает код PlantUML для визуализации графа коммитов.

    • Возвращает строку с кодом PlantUML.

  5. visualize_graph(plantuml_code: str, visualization_tool: str)

    • Записывает код PlantUML в файл и вызывает инструмент визуализации для генерации графа.

    • Удаляет временный файл после завершения.

  6. get_commits_for_tags(repo_path: str, tag_names: List[str]) -> Dict[str, List[Tuple[str, str, str]]

    • Получает коммиты для списка тегов.

    • Возвращает словарь, где ключи — это имена тегов, а значения — списки коммитов.

  7. main(config_path: str)

    • Основная функция, которая загружает конфигурацию, получает коммиты для тегов и визуализирует граф.

• Конфигурация:

• Скрипт ожидает наличие файла config.json, который должен содержать следующие ключи:

путь к репозиторию Git

список тегов для анализа

путь к инструменту визуализации (например, JAR-файл PlantUML)

Пример файла connfig.json:

{

"visualization_tool": "C:\visualizer\plantuml-mit-1.2024.7.jar",

"repository_path": "C:\gittest",

"tag_names": [ "v1.0", "v2.0" ]

}

Для начала, чтобы запустить выизализатор, надо находиться в директории с визуализаторм и прописать команду: {5860431F-0777-4054-AB8A-E1231610B0D3}

После запуска программы будет выведено следующее:

для каждого тега ищутся коммиты и выводтся в формате - "хэш, дата и время, автор, текст коммита". После вывода информации появляется сообще о том, что граф успешно построен. {DA28BCF2-F959-4132-80D9-AF842D5780D5}

Также создается файл, в котором изображены зависимости для разных тегов: graph

Для данноого кода были еще создан файл с тестами функций. Ниже прикреплен скриншот работы файла: {F5E0E1E9-A4B0-48CF-869E-65E3F4E63887}

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages