Актуализация страниц о деплое и разработке + мелочи по оформлению

This commit is contained in:
2026-08-02 00:39:36 +08:00
parent 9d817f65d8
commit 89b303fed3
59 changed files with 577 additions and 251 deletions
+26 -13
View File
@@ -30,11 +30,13 @@ iptvc/
│ ├── check.go # команда check
│ ├── serve.go # команда serve
│ ├── flags.go # общие флаги check/serve
│ ├── flags_test.go # тесты применения CLI-переопределений
│ └── version.go # команда version
├── app/
│ ├── app.go # глобальные переменные: Args, Config, Cache
│ ├── config/
│ │ ── config.go # Config, Init(), validate(), IntRange, UserAgents
│ │ ── config.go # Config, Init(), validate(), IntRange, UserAgents
│ │ └── config_test.go # тесты конфигурации
│ ├── checker/
│ │ └── checker.go # CheckPlaylists(), CheckChannels(), OnPlaylistChecked
│ ├── playlist/
@@ -52,7 +54,16 @@ iptvc/
│ └── web/
│ ├── server.go # Server, Start(), StartBackgroundChecker()
│ ├── handlers.go # HTTP-обработчики
│ ├── views.go # PlaylistView, ChannelView, PageData
│ ├── views_test.go # тесты представлений
│ ├── templates.go # TemplateManager, //go:embed
│ ├── templates_test.go # тесты шаблонов
│ ├── openapi.go # OpenAPI-спецификация, Swagger UI
│ ├── openapi_test.go # тесты OpenAPI
│ ├── details_test.go # тесты страницы деталей плейлиста
│ ├── testdata/ # тестовые фикстуры
│ ├── swagger/ # встроенные файлы Swagger UI
│ ├── static/ # встроенные статические файлы (CSS, JS)
│ └── views/ # HTML-шаблоны
│ ├── base.html
│ ├── list.html
@@ -66,7 +77,8 @@ iptvc/
### `app`
Глобальный контейнер: `Args` (CLI-флаги), `Config` (конфигурация), `Cache` (Redis-клиент).
`Init()` загружает конфигурацию, инициализирует логгер и подключение к кешу.
`Init()` загружает конфигурацию и инициализирует логгер.
`InitCache()` подключается к KeyDB/Redis, если кеш включён.
### `app.config`
@@ -86,8 +98,8 @@ iptvc/
Содержит логику проверки:
- **`PrepareListsToCheck(files, urls, codes)`** — формирует список плейлистов из файлов, URL и кодов ini-файла.
- **`CheckPlaylists(lists)`** — параллельная проверка плейлистов (семфор `per-routine`), загрузка, парсинг, вызов `CheckChannels` для каждого.
- **`CheckChannels(pls)`** — параллельная проверка каналов (семфор `per-routine`), HTTP-запрос с `Range` header.
- **`CheckPlaylists(lists)`** — параллельная проверка плейлистов (семфор `max-routines`), загрузка, парсинг, вызов `CheckChannels` для каждого.
- **`CheckChannels(pls)`** — параллельная проверка каналов (семфор `max-routines`), HTTP-запрос с `Range` header.
- **`OnPlaylistChecked`** — глобальный callback, вызывается после проверки каждого плейлиста. Используется веб-сервером для обновления in-memory кеша.
- **`cachePlaylist(pls)`** — сохранение результата в Redis (если включён).
@@ -108,7 +120,7 @@ iptvc/
- **`Server`** — структура: конфиг, кеш, шаблоны, in-memory кеш (`memCache` с `sync.RWMutex`).
- **`Start()`** — запуск HTTP-сервера.
- **`StartBackgroundChecker(opts)`** — фоновая проверка в отдельной горутине.
- **`CheckOptions`** — параметры: Every, Repeat, Random, Files, Urls, Codes.
- **`CheckOptions`** — параметры: Repeat, Random, Files, Urls, Codes.
Маршруты (Go 1.22 patterns):
@@ -152,9 +164,8 @@ StartBackgroundChecker:
→ check status + content type
→ OnPlaylistChecked(pls) → memCache update
→ one-cooldown sleep
→ all-cooldown sleep
sleep(every)
if repeat > 0 && iteration >= repeat: stop
→ all-cooldown sleep
if repeat > 0 && iteration >= repeat: stop
```
## CLI-флаги
@@ -191,14 +202,16 @@ StartBackgroundChecker:
### Глобальные (`cmd/root.go`)
| Флаг | Поле | Описание |
| --------------- | ----------------- | ----------------- |
| `--config` | `Args.ConfigPath` | Путь к config.yml |
| `-v, --verbose` | `Args.Verbose` | Подробный лог |
| Флаг | Поле | Описание |
| --------------- | ----------------- | ------------------- |
| `--config` | `Args.ConfigPath` | Путь к config.yml |
| `-v, --verbose` | `Args.Verbose` | Подробный лог |
| `--debug` | `Args.Debug` | Режим отладки |
| `--log-level` | `Args.LogLevel` | Уровень логирования |
## Конфигурация
Подробное описание параметров — в разделе [config.yml](../../common/config/config.md).
Подробное описание параметров — в разделе [config.yml](../../ref/config.md).
Приоритет: Defaults < `config.yml` < Env < CLI-флаги.
+11 -8
View File
@@ -17,14 +17,17 @@ make linux
## Доступные рецепты Makefile
| Команда | Назначение |
| -------------- | ------------------------------------------------------------- |
| `make linux` | Сборка под Linux (amd64 по умолчанию) |
| `make win` | Сборка под Windows |
| `make darwin` | Сборка под macOS |
| `make release` | Сборка под все платформы (linux/windows/darwin × amd64/arm64) |
| `make clean` | Удаление скомпилированных бинарников |
| `make help` | Вывод списка доступных рецептов |
| Команда | Назначение |
| ---------------- | ------------------------------------------------------------- |
| `make linux` | Сборка под Linux (amd64 по умолчанию) |
| `make win` | Сборка под Windows |
| `make darwin` | Сборка под macOS |
| `make release` | Сборка под все платформы (linux/windows/darwin × amd64/arm64) |
| `make test` | Запуск всех тестов |
| `make clear` | Удаление скомпилированных бинарников |
| `make image` | Сборка Docker-образа для текущей платформы |
| `make image-all` | Сборка и отправка multi-arch манифеста в registry |
| `make help` | Вывод списка доступных рецептов |
## Управление архитектурой
+18 -8
View File
@@ -8,22 +8,32 @@ tags: ["iptvc", "docker"]
## Сборка
Образ собирается из [Dockerfile](https://git.axenov.dev/IPTV/iptvc/src/branch/master/Dockerfile) — multi-stage сборка на базе `golang:1.25-alpine` с финальным образом `alpine:3.22`.
Образ собирается из [Dockerfile](https://git.axenov.dev/IPTV/iptvc/src/branch/master/Dockerfile) на базе `alpine:3.22.5`.
Бинарный файл должен быть предварительно собран через `make linux` — Dockerfile берёт уже готовый бинарь из `bin/linux_${TARGETARCH}/iptvc`.
```bash
docker build -t iptvc ./iptvc
# Сборка бинарного файла и образа
make image
# Сборка с указанием архитектуры
make image GOARCH=arm64
# Сборка с указанием тега
make image IMAGE_TAG=v1.1.3
```
Можно передать версию через build-arg:
Целевая архитектура задаётся через `GOARCH`:
```bash
docker build --build-arg IPTVC_VERSION=1.1.3 -t iptvc:v1.1.3 ./iptvc
make linux GOARCH=arm64
make image GOARCH=arm64
```
Целевая платформа и архитектура задаются через `GOOS` и `GOARCH`:
Для публикации multi-arch манифеста в registry:
```bash
docker build --build-arg GOOS=linux --build-arg GOARCH=arm64 -t iptvc:linux-arm64 ./iptvc
make image-all
```
## Запуск
@@ -33,13 +43,13 @@ docker build --build-arg GOOS=linux --build-arg GOARCH=arm64 -t iptvc:linux-arm6
docker run --rm \
-v ./playlists.ini:/app/playlists.ini \
-v ./channels.json:/app/channels.json \
iptvc check -i playlists.ini --repeat 0 --playlists-all-cooldown 60
git.axenov.dev/iptv/iptvc:latest check -i playlists.ini --repeat 0 --playlists-all-cooldown 60
# Веб-сервер с фоновой проверкой
docker run --rm -p 8800:8800 \
-v ./playlists.ini:/app/playlists.ini \
-v ./channels.json:/app/channels.json \
iptvc serve -i playlists.ini -p 8800 --check
git.axenov.dev/iptv/iptvc:latest serve -i playlists.ini -p 8800 --check
```
## Использование в compose
+3 -1
View File
@@ -1,4 +1,6 @@
Информацию о лицензии см. на странице [Свободное ПО](../../../legal/license.md)
# Иконки codicons
Информацию о лицензии см. на странице [Свободное ПО](../../../extra/legal/license.md)
| Иконка | Код для вставки в текст | Код для вставки в frontmatter |
| ------------------------------------------------ | -------------------------------------------------- | ------------------------------------------------ |
+3 -3
View File
@@ -53,9 +53,9 @@ make release
Для работы `iptvc` нужны два файла рядом с бинарником:
- `playlists.ini` — список плейлистов. Формат описан в [справочнике форматов](../../common/formats/playlists.md).
- `channels.json` — правила тегов каналов. Формат описан в [справочнике форматов](../../common/formats/channels.md).
- `config.yml` — конфигурация программы. Описание — в [разделе config.yml](../../common/config/config.md).
- `playlists.ini` — список плейлистов. Формат описан в [справочнике форматов](../../ref/formats/playlists.md).
- `channels.json` — правила тегов каналов. Формат описан в [справочнике форматов](../../ref/formats/channels.md).
- `config.yml` — конфигурация программы. Описание — в [разделе config.yml](../../ref/config.md).
## Полное Docker-окружение