/* * 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) } } }