apgbuild
Документация AnmiTali Package Builder (apgbuild)
Содержание
- Общее описание
- Техническая спецификация
- Структура кода
- API и основные компоненты
- Форматы данных
- Безопасность
Общее описание
Назначение
AnmiTali Package Builder (apgbuild) представляет собой утилиту для создания и управления программными пакетами. Разработана с использованием современных стандартов C++17 и предоставляет удобный интерфейс командной строки для работы с пакетами.
Версия и информация
- Автор: AnmiTaliDev
- Лицензия: MIT
- Репозиторий: https://github.com/NurOS-Linux/apgbuild
Техническая спецификация
Системные требования
- Компилятор: Совместимый с C++17
- Библиотеки:
- nlohmann/json для работы с JSON
- OpenSSL для вычисления MD5
- Стандартная библиотека filesystem
Основные возможности
- Создание метаданных пакета
- Генерация контрольных сумм MD5
- Создание архивов пакетов
- Извлечение содержимого пакетов
- Проверка целостности
Структура кода
Основные пространства имён
namespace fs = std::filesystem;
namespace Color { ... }
namespace ApgBuilderInfo { ... }
Класс ApgBuilder
Внутренняя структура ProgramOptions
struct ProgramOptions {
bool makemetadata; // Флаг создания метаданных
bool open; // Флаг распаковки пакета
bool makesums; // Флаг создания контрольных сумм
bool version; // Флаг отображения версии
std::string input_dir; // Входная директория
std::string output_path;// Путь вывода
};
Приватные методы
-
calculateMD5
cpp std::string calculateMD5(const std::string& filepath)
Вычисляет MD5-хеш файла.
- Параметры: путь к файлу
- Возвращает: строку с MD5-хешем
- Исключения: при ошибке открытия файла
- createMD5Sums
cpp void createMD5Sums(const std::string& directory, const std::string& output)
Создаёт файл с контрольными суммами.
- Параметры:
- directory: директория для обработки
- output: путь выходного файла
- Исключения: при ошибках доступа к файлам
- createMetadata
cpp void createMetadata()
Создаёт файл метаданных пакета в интерактивном режиме.
- Создаёт metadata.json
- Запрашивает у пользователя всю необходимую информацию
- Поддерживает зависимости, конфликты, замены
- createPackage
cpp void createPackage(const std::string& directory, const std::string& output_path)
Создаёт архив пакета.
- Параметры:
- directory: исходная директория
- output_path: путь выходного файла
- Автоматически создаёт контрольные суммы
- Использует tar с сжатием xz
Публичные методы
-
run
cpp void run(int argc, char* argv[])
Основной метод запуска программы.
- Обрабатывает аргументы командной строки
- Выполняет соответствующие операции
- Обрабатывает исключения
API и основные компоненты
Формат вызова
apgbuild [опции] [директория]
Опции командной строки
--makemetadata, -m
: Создание файла метаданных--open
: Распаковка пакета--makesums
: Создание контрольных сумм--version, -v
: Информация о версии-o <путь>
: Указание пути вывода
Форматы данных
Структура metadata.json
{
"name": "имя-пакета",
"version": "версия",
"release": номер_релиза,
"architecture": "архитектура",
"description": "описание",
"maintainer": "сопровождающий",
"license": "лицензия",
"homepage": "домашняя-страница",
"dependencies": [
{
"name": "имя-зависимости",
"version": "версия",
"condition": "условие"
}
],
"conflicts": ["конфликтующие-пакеты"],
"provides": ["предоставляемые-возможности"],
"replaces": ["заменяемые-пакеты"]
}
Формат файла контрольных сумм
md5sum путь/к/файлу
md5sum путь/к/другому/файлу
Структура пакета
пакет/
├── data/ # Содержимое пакета
├── metadata.json # Метаданные
└── md5sums # Контрольные суммы
Безопасность
Проверка целостности
- Автоматическая генерация MD5-хешей
- Проверка контрольных сумм при распаковке
- Безопасная обработка файлов
Обработка ошибок
- Проверка существования файлов и директорий
- Валидация метаданных
- Проверка прав доступа
- Обработка исключений при файловых операциях
Цветовая индикация
- Бирюзовый: информационные сообщения
- Зелёный: успешные операции
- Красный: сообщения об ошибках
- Жирный: заголовки и важная информация