67 lines
1.4 KiB
Go
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)
|
|
}
|
|
}
|
|
}
|