https://github.com/newyaroslav/consolix
Consolix is a header-only C++ library providing components and utilities for developing console applications.
https://github.com/newyaroslav/consolix
ansi-colors cli configuration-management console-application console-applications cp866 cpp cpp17 cxxopts header-only library logging logging-library logit utf-8-support utf8
Last synced: over 1 year ago
JSON representation
Consolix is a header-only C++ library providing components and utilities for developing console applications.
- Host: GitHub
- URL: https://github.com/newyaroslav/consolix
- Owner: NewYaroslav
- Created: 2024-12-02T04:22:59.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-03-02T14:17:53.000Z (over 1 year ago)
- Last Synced: 2025-03-02T15:25:50.156Z (over 1 year ago)
- Topics: ansi-colors, cli, configuration-management, console-application, console-applications, cp866, cpp, cpp17, cxxopts, header-only, library, logging, logging-library, logit, utf-8-support, utf8
- Language: C++
- Homepage: https://newyaroslav.github.io/Consolix/
- Size: 1 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README-RU.md
Awesome Lists containing this project
README
# Consolix
```bash
█████████ ████ ███
███░░░░░███ ░░███ ░░░
███ ░░░ ██████ ████████ █████ ██████ ░███ ████ █████ █████
░███ ███░░███░░███░░███ ███░░ ███░░███ ░███ ░░███ ░░███ ░░███
░███ ░███ ░███ ░███ ░███ ░░█████ ░███ ░███ ░███ ░███ ░░░█████░
░░███ ███░███ ░███ ░███ ░███ ░░░░███░███ ░███ ░███ ░███ ███░░░███
░░█████████ ░░██████ ████ █████ ██████ ░░██████ █████ █████ █████ █████
░░░░░░░░░ ░░░░░░ ░░░░ ░░░░░ ░░░░░░ ░░░░░░ ░░░░░ ░░░░░ ░░░░░ ░░░░░
```
**Consolix** — это `header-only` C++ библиотека, предоставляющая компоненты и утилиты для разработки консольных приложений.
## Особенности
- **Компонентная архитектура:** Легко подключаемые модули, такие как логирование, управление конфигурациями и обработка командной строки.
- **Глобальный локатор сервисов:** Удобный механизм для управления зависимостями и сервисами.
- **Поддержка UTF-8:**
- Заголовок программы (`TitleComponent`) поддерживает установку текста в `UTF-8` с автоматической конвертацией в `UTF-16` для Windows и использованием `ANSI escape` последовательностей на POSIX-системах.
- Вывод в консоль (`LoggerComponent`) поддерживает `UTF-8` с автоматической конвертацией в `CP866` на Windows для совместимости с устаревшими кодировками.
- **Кастомизируемые циклы выполнения:** Поддержка структурированных циклов для выполнения пользовательских задач.
- **Расширенное логирование:** Интеграция с [LogIt](https://github.com/NewYaroslav/log-it-cpp).
- **Поддержка JSON с комментариями:** Загрузка конфигураций JSON с комментариями благодаря [nlohmann/json](https://github.com/nlohmann/json).
- **Кроссплатформенность:** Работа на Windows и POSIX-совместимых системах. *(Для POSIX не протестировано)*.
- **Совместимость с C++17:** Требует компилятора с поддержкой стандарта C++17 (GCC 7.1+, Clang 5.0+, MSVC 15.3+).
## Установка
**Consolix** — это `header-only` библиотека. Для начала работы просто добавьте её в ваш проект:
1. Скачайте библиотеку или клонируйте репозиторий:
```bash
git clone https://github.com/yourusername/Consolix.git
```
2. Добавьте путь к заголовочным файлам в настройки вашего проекта:
```
Consolix/include
```
3. Подключите заголовок в вашем коде:
```
#include
```
### Зависимости
Consolix поддерживает интеграцию с внешними библиотеками через макросы, которые можно включать или отключать в зависимости от ваших нужд:
- **LogIt** (включается через устанвоку макроса `CONSOLIX_USE_LOGIT 1`):
- Используется для логирования.
- LogIt на [GitHub](https://github.com/NewYaroslav/log-it-cpp.git).
- Зависит от библиотеки [time-shield](https://github.com/NewYaroslav/time-shield-cpp.git).
- Обе библиотеки являются *header-only*, поэтому достаточно добавить их заголовки в проект.
- **cxxopts** (включается через устанвоку макроса `CONSOLIX_USE_CXXOPTS 1`):
- Используется для обработки аргументов командной строки.
- cxxopts на [GitHub](https://github.com/jarro2783/cxxopts.git).
- *header-only* библиотека.
- **nlohmann/json** (включается через устанвоку макроса `CONSOLIX_USE_JSON 1`):
- Используется для работы с JSON, включая поддержку комментариев.
- nlohmann/json на [GitHub](https://github.com/nlohmann/json.git).
- *header-only* библиотека.
Чтобы указать, какие зависимости использовать, задайте соответствующие макросы перед подключением Consolix:
```cpp
// Отключение LogIt и cxxopts, но включение nlohmann/json
#define CONSOLIX_USE_LOGIT 0
#define CONSOLIX_USE_CXXOPTS 0
#define CONSOLIX_USE_JSON 1
#include
```
Для включения зависимостей добавьте пути к их заголовкам в ваш проект:
```
log-it-cpp/include
time-shield-cpp/include
cxxopts/include
nlohmann-json/include
```
## Пример использования
```cpp
#include
int main(int argc, char* argv[]) {
// Добавление заголовка программы
consolix::add(u8"Consolix - консольное приложение");
// Добавление логгера
consolix::add();
// Вывод ASCII-логотипа в консоль
consolix::add(consolix::TextColor::DarkYellow);
// Обработка аргументов командной строки
consolix::add("MyApp", "Описание программы", [](auto& options) {
options.add_options()("debug", "Включить режим отладки");
}, argc, argv);
// Загрузка конфигурации из JSON
consolix::add>("config.json");
// Выполнение главного цикла
consolix::run([]() {
CONSOLIX_STREAM() << "Выполнение главного цикла...";
});
return 0;
}
```
## Модули
### Основные модули
- **ServiceLocator:** Управление глобальными сервисами.
- **ConsoleApplication:** Фреймворк для управления консольными приложениями.
### Компоненты
- **TitleComponent:** Управление заголовком окна консоли. Поддерживает UTF-8.
- **LoggerComponent:** Централизованное логирование. Поддерживает UTF-8 с конвертацией в CP866.
- **CliComponent:** Упрощённая работа с аргументами командной строки.
- **ConfigComponent:** Работа с конфигурациями JSON с комментариями.
- **LogoComponent:** Вывод ASCII-логотипов.
- **LoopComponent:** Поддержка пользовательских циклов выполнения.
### Утилиты
- **path_utils.hpp:** Работа с путями и директориями.
- **json_utils.hpp:** Удаление комментариев и работа с JSON.
- **ColorManipulator.hpp:** Стилизация текста в консоли.
## Документация
Полная документация доступна [здесь](https://newyaroslav.github.io/Consolix/). Она включает руководство по установке, описания модулей, примеры использования и многое другое.
## Лицензия
Consolix распространяется под лицензией MIT. Полный текст лицензии доступен в файле LICENSE.