Create new config format

This commit is contained in:
Arsen Musayelyan 2021-08-24 08:33:41 -07:00
parent b186f77bea
commit 91f7132d5e
5 changed files with 38 additions and 22 deletions

View File

@ -1,14 +1,25 @@
# This is temporary, it is to show a notice
# to people still using the old config
cfg.version = 2
[socket]
path = "/tmp/itd/socket"
[conn]
reconnect = true
[notify]
onConnect = true
onReconnect = true
[on.connect]
notify = true
[notifications.ignore]
[on.reconnect]
notify = true
setTime = true
[notifs.ignore]
sender = []
summary = ["InfiniTime"]
body = []
[music]
volInterval = 5
vol.interval = 5

18
main.go
View File

@ -50,6 +50,10 @@ func init() {
}
func main() {
if viper.GetInt("cfg.version") != 2 {
log.Fatal().Msg("Please update your config to the newest format, only v2 configs supported.")
}
// Cleanly exit after function
defer infinitime.Exit()
@ -63,14 +67,16 @@ func main() {
// When InfiniTime reconnects
dev.OnReconnect(func() {
// Set time to current time
err = dev.SetTime(time.Now())
if err != nil {
log.Error().Err(err).Msg("Error setting current time on connected InfiniTime")
if viper.GetBool("on.reconnect.setTime") {
// Set time to current time
err = dev.SetTime(time.Now())
if err != nil {
log.Error().Err(err).Msg("Error setting current time on connected InfiniTime")
}
}
// If config specifies to notify on reconnect
if viper.GetBool("notify.onReconnect") {
if viper.GetBool("on.reconnect.notify") {
// Send notification to InfiniTime
err = dev.Notify("itd", "Successfully reconnected")
if err != nil {
@ -89,7 +95,7 @@ func main() {
log.Info().Str("version", ver).Msg("Connected to InfiniTime")
// If config specifies to notify on connect
if viper.GetBool("notify.onConnect") {
if viper.GetBool("on.connect.notify") {
// Send notification to InfiniTime
err = dev.Notify("itd", "Successfully connected")
if err != nil {

View File

@ -85,9 +85,9 @@ func initMusicCtrl(dev *infinitime.Device) error {
case infinitime.MusicEventPrev:
player.Prev()
case infinitime.MusicEventVolUp:
player.VolUp(viper.GetUint("music.volInterval"))
player.VolUp(viper.GetUint("music.vol.interval"))
case infinitime.MusicEventVolDown:
player.VolDown(viper.GetUint("music.volInterval"))
player.VolDown(viper.GetUint("music.vol.interval"))
}
}
}()

View File

@ -90,9 +90,9 @@ func initNotifRelay(dev *infinitime.Device) error {
// ignored checks whether any fields were ignored in the config
func ignored(sender, summary, body string) bool {
ignoreSender := viper.GetStringSlice("notifications.ignore.sender")
ignoreSummary := viper.GetStringSlice("notifications.ignore.summary")
ignoreBody := viper.GetStringSlice("notifications.ignore.body")
ignoreSender := viper.GetStringSlice("notifs.ignore.sender")
ignoreSummary := viper.GetStringSlice("notifs.ignore.summary")
ignoreBody := viper.GetStringSlice("notifs.ignore.body")
return strSlcContains(ignoreSender, sender) ||
strSlcContains(ignoreSummary, summary) ||
strSlcContains(ignoreBody, body)

View File

@ -29,12 +29,11 @@ import (
"github.com/mitchellh/mapstructure"
"github.com/rs/zerolog/log"
"github.com/spf13/viper"
"go.arsenm.dev/infinitime"
"go.arsenm.dev/itd/internal/types"
)
const SockPath = "/tmp/itd/socket"
const (
ReqTypeHeartRate = "hrt"
ReqTypeBattLevel = "battlvl"
@ -52,19 +51,19 @@ const (
func startSocket(dev *infinitime.Device) error {
// Make socket directory if non-existent
err := os.MkdirAll(filepath.Dir(SockPath), 0755)
err := os.MkdirAll(filepath.Dir(viper.GetString("socket.path")), 0755)
if err != nil {
return err
}
// Remove old socket if it exists
err = os.RemoveAll(SockPath)
err = os.RemoveAll(viper.GetString("socket.path"))
if err != nil {
return err
}
// Listen on socket path
ln, err := net.Listen("unix", SockPath)
ln, err := net.Listen("unix", viper.GetString("socket.path"))
if err != nil {
return err
}
@ -83,7 +82,7 @@ func startSocket(dev *infinitime.Device) error {
}()
// Log socket start
log.Info().Str("path", SockPath).Msg("Started control socket")
log.Info().Str("path", viper.GetString("socket.path")).Msg("Started control socket")
return nil
}