Добавлено отслеживание изменений в конфиге. Посмотрим как будет работать

This commit is contained in:
B4D_US3R 2025-04-30 10:19:33 +05:00
parent 1de14cdae1
commit 66afe8eac7
5 changed files with 55 additions and 3 deletions

View file

@ -2,15 +2,16 @@ FROM golang:1.24
WORKDIR /app/kiki WORKDIR /app/kiki
RUN mkdir /app/kiki/config /app/kiki/service /app/kiki/stacker /app/kiki/tooter RUN mkdir /app/kiki/config /app/kiki/service /app/kiki/stacker /app/kiki/tooter /app/kiki/file_watcher
COPY config/* /app/kiki/config COPY config/* /app/kiki/config
COPY service/* /app/kiki/service COPY service/* /app/kiki/service
COPY stacker/* /app/kiki/stacker COPY stacker/* /app/kiki/stacker
COPY tooter/* /app/kiki/tooter COPY tooter/* /app/kiki/tooter
COPY file_watcher/* /app/kiki/file_watcher
RUN cd service && go mod tidy && cd ../ COPY Makefile /app/kiki/
RUN go build -C ./service -o ../kiki RUN make
CMD [ "/app/kiki/kiki", "run" ] CMD [ "/app/kiki/kiki", "run" ]

View file

@ -0,0 +1,30 @@
package file_watcher
import (
"os"
"time"
)
func IsFileChange(lastMod *time.Time, filename string) bool {
fileStat, err := os.Stat(filename)
if err != nil {
return false
}
if *lastMod != fileStat.ModTime() {
*lastMod = fileStat.ModTime()
return true
} else {
return false
}
}
func GetFileModTime(filename string) (time.Time, error) {
fileStat, err := os.Stat(filename)
if err != nil {
return time.Date(1970, 1, 1, 0, 0, 0, 0, time.UTC), err
}
return fileStat.ModTime(), nil
}

3
file_watcher/go.mod Normal file
View file

@ -0,0 +1,3 @@
module file_watcher
go 1.24.2

View file

@ -8,10 +8,13 @@ replace kiki/stacker => ../stacker
replace kiki/tooter => ../tooter replace kiki/tooter => ../tooter
replace kiki/file_watcher => ../file_watcher/
require ( require (
github.com/mattn/go-mastodon v0.0.9 github.com/mattn/go-mastodon v0.0.9
github.com/urfave/cli/v3 v3.2.0 github.com/urfave/cli/v3 v3.2.0
kiki/config v0.0.0-00010101000000-000000000000 kiki/config v0.0.0-00010101000000-000000000000
kiki/file_watcher v0.0.0-00010101000000-000000000000
kiki/stacker v0.0.0-00010101000000-000000000000 kiki/stacker v0.0.0-00010101000000-000000000000
kiki/tooter v0.0.0-00010101000000-000000000000 kiki/tooter v0.0.0-00010101000000-000000000000
) )

View file

@ -9,6 +9,7 @@ import (
"time" "time"
"kiki/config" "kiki/config"
"kiki/file_watcher"
"kiki/stacker" "kiki/stacker"
"kiki/tooter" "kiki/tooter"
@ -55,13 +56,27 @@ func main() {
} }
kikiConfig := config.GetKikiConfig(confFile) kikiConfig := config.GetKikiConfig(confFile)
lastFileMod, err := file_watcher.GetFileModTime(confFile)
log.Println(lastFileMod)
if err != nil {
log.Println(err)
}
rdb := stacker.ConnectToRedis(kikiConfig.Redis.Address) rdb := stacker.ConnectToRedis(kikiConfig.Redis.Address)
defer stacker.SaveRedis(rdb) defer stacker.SaveRedis(rdb)
ticker := time.NewTicker(1 * time.Minute) ticker := time.NewTicker(1 * time.Minute)
defer ticker.Stop() defer ticker.Stop()
for range ticker.C { for range ticker.C {
if file_watcher.IsFileChange(&lastFileMod, confFile) {
log.Println(lastFileMod)
log.Println("RSS ленты перечитаны")
kikiConfig.RSSUri = config.GetKikiConfig(confFile).RSSUri
}
newPosts := tooter.NewsText(kikiConfig.RSSUri) newPosts := tooter.NewsText(kikiConfig.RSSUri)
for _, post := range newPosts { for _, post := range newPosts {