Files
iptvc/app/app.go
2026-06-01 20:29:34 +08:00

67 lines
1.4 KiB
Go

/*
* Copyright (c) 2025, Антон Аксенов
* This file is part of iptvc project
* MIT License: https://git.axenov.dev/IPTV/iptvc/src/branch/master/LICENSE
*/
package app
import (
"axenov/iptv-checker/app/cache"
"axenov/iptv-checker/app/config"
"axenov/iptv-checker/app/logger"
"log"
"github.com/redis/go-redis/v9"
)
var version = "dev"
// Arguments описывает аргументы командной строки
type Arguments struct {
IniPath string
TagsPath string
RandomCount uint
RepeatCount uint
RepeatEverySec uint
NeedJson bool
NeedQuiet bool
Verbose bool
}
var (
Args Arguments
Cache *redis.Client
Config *config.Config
)
// SetVersion устанавливает версию приложения
func SetVersion(v string) {
if v != "" {
version = v
}
}
// Version возвращает версию приложения
func Version() string {
return version
}
// Init инициализирует конфигурацию и подключение к keydb
func Init() {
Config = config.Init()
logger.Init(Args.NeedQuiet)
if Config.Cache.IsEnabled {
Cache = cache.Init(&Config.Cache)
}
}
// Shutdown корректно завершает работу приложения
func Shutdown() {
if Cache != nil {
if err := Cache.Close(); err != nil {
log.Printf("Error closing cache connection: %s", err)
}
}
}