# Holiday Highlighter Plugin Плагин для `cal`, добавляющий подсветку официальных праздников через API isdayoff.ru. ## Возможности - **Автоматическое определение страны** по системной локали - **Кэширование данных** для уменьшения количества запросов к API - **Поддержка нескольких стран**: Россия, Беларусь, Казахстан, США, Узбекистан, Турция, Латвия - **Данные о типах дней**: рабочие, выходные, сокращённые, официальные праздники ## Сборка ```bash # Сборка всего workspace cargo build --release --workspace # Только плагин cargo build --release -p holiday_highlighter ``` ## Установка ### Локально для пользователя ```bash mkdir -p ~/.local/lib/cal/plugins cp target/release/libholiday_highlighter.so ~/.local/lib/cal/plugins/ ``` ### Системно ```bash sudo mkdir -p /usr/lib/cal/plugins sudo cp target/release/libholiday_highlighter.so /usr/lib/cal/plugins/ ``` ## Использование ```bash # Подсветка праздников для текущей страны cal -H # Год с праздниками cal -y -H # Три месяца с праздниками cal -3 -H ``` ## Поддерживаемые страны | Код | Страна | Локали для автоопределения | |-----|--------|----------------------------| | RU | Россия | ru_RU, ru_BY, ru_KZ, ru_UZ, ru_LV | | BY | Беларусь | be_BY, ru_BY | | KZ | Казахстан | kk_KZ, ru_KZ | | US | США | en_US, en | | UZ | Узбекистан | uz_UZ, ru_UZ | | TR | Турция | tr_TR | | LV | Латвия | lv_LV, ru_LV | ## API Плагин использует [isdayoff.ru API](https://isdayoff.ru/): ### Запрос за месяц ``` GET https://isdayoff.ru/api/getdata?year=2026&month=01&pre=1 ``` ### Запрос за год ``` GET https://isdayoff.ru/api/getdata?year=2026&pre=1 ``` Параметр `pre=1` включает информацию о предпраздничных сокращённых днях. ## Формат данных Каждый символ в ответе представляет день месяца: | Символ | Тип дня | Описание | |--------|---------|----------| | `0` | Рабочий | Обычный рабочий день | | `1` | Выходной | Суббота или воскресенье | | `2` | Сокращённый | Предпраздничный день | | `8` | Праздник | Официальный государственный праздник | ## Переменные окружения | Переменная | Описание | |------------|----------| | `LC_ALL` | Приоритетная локаль для определения страны | | `LC_TIME` | Локаль для определения страны | | `LANG` | Резервная локаль для определения страны |