apgbuild

Документация AnmiTali Package Builder (apgbuild)

Содержание

  1. Общее описание
  2. Техническая спецификация
  3. Структура кода
  4. API и основные компоненты
  5. Форматы данных
  6. Безопасность

Общее описание

Назначение

AnmiTali Package Builder (apgbuild) представляет собой утилиту для создания и управления программными пакетами. Разработана с использованием современных стандартов C++17 и предоставляет удобный интерфейс командной строки для работы с пакетами.

Версия и информация

  • Автор: AnmiTaliDev
  • Лицензия: MIT
  • Репозиторий: https://github.com/NurOS-Linux/apgbuild

Техническая спецификация

Системные требования

  1. Компилятор: Совместимый с C++17
  2. Библиотеки:
  3. nlohmann/json для работы с JSON
  4. OpenSSL для вычисления MD5
  5. Стандартная библиотека filesystem

Основные возможности

  1. Создание метаданных пакета
  2. Генерация контрольных сумм MD5
  3. Создание архивов пакетов
  4. Извлечение содержимого пакетов
  5. Проверка целостности

Структура кода

Основные пространства имён

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;// Путь вывода
};

Приватные методы

  1. 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

Публичные методы

  1. 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        # Контрольные суммы

Безопасность

Проверка целостности

  1. Автоматическая генерация MD5-хешей
  2. Проверка контрольных сумм при распаковке
  3. Безопасная обработка файлов

Обработка ошибок

  • Проверка существования файлов и директорий
  • Валидация метаданных
  • Проверка прав доступа
  • Обработка исключений при файловых операциях

Цветовая индикация

  • Бирюзовый: информационные сообщения
  • Зелёный: успешные операции
  • Красный: сообщения об ошибках
  • Жирный: заголовки и важная информация