Skip to content

Commit

Permalink
Fix tracker being called too early in startup (#173)
Browse files Browse the repository at this point in the history
* Fix tracker being called too early in startup

* Stop old tapto.sh on startup

* Don't save mappings to config.toml

* Fix logic with startup migration to avoid error
  • Loading branch information
wizzomafizzo authored Jan 7, 2025
1 parent 889eb46 commit 5f80df8
Show file tree
Hide file tree
Showing 6 changed files with 130 additions and 81 deletions.
11 changes: 6 additions & 5 deletions cmd/mister/gui.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,17 +43,15 @@ func tryAddStartup(stdscr *goncurses.Window) error {
log.Error().Msgf("failed to load startup file: %s", err)
}

changed := false

// migration from tapto name
if startup.Exists("mrext/tapto") {
err = startup.Remove("mrext/tapto")
if err != nil {
return err
}

err = startup.Save()
if err != nil {
return err
}
changed = true
}

if !startup.Exists("mrext/" + config.AppName) {
Expand Down Expand Up @@ -109,7 +107,10 @@ func tryAddStartup(stdscr *goncurses.Window) error {
if err != nil {
return err
}
changed = true
}

if changed && len(startup.Entries) > 0 {
err = startup.Save()
if err != nil {
return err
Expand Down
16 changes: 11 additions & 5 deletions cmd/mister/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ import (
"github.com/ZaparooProject/zaparoo-core/pkg/utils"
"github.com/rs/zerolog/log"
"os"
"os/exec"
"path/filepath"

"github.com/ZaparooProject/zaparoo-core/pkg/platforms/mister"
Expand All @@ -49,25 +50,26 @@ func addToStartup() error {
return err
}

changed := false

// migration from tapto name
if startup.Exists("mrext/tapto") {
err = startup.Remove("mrext/tapto")
if err != nil {
return err
}

err = startup.Save()
if err != nil {
return err
}
changed = true
}

if !startup.Exists("mrext/" + config.AppName) {
err = startup.AddService("mrext/" + config.AppName)
if err != nil {
return err
}
changed = true
}

if changed && len(startup.Entries) > 0 {
err = startup.Save()
if err != nil {
return err
Expand Down Expand Up @@ -102,6 +104,10 @@ func main() {
os.Exit(0)
}

if _, err := os.Stat("/media/fat/Scripts/tapto.sh"); err == nil {
_ = exec.Command("/media/fat/Scripts/tapto.sh", "-service", "stop").Run()
}

defaults := config.BaseDefaults
iniPath := "/media/fat/Scripts/tapto.ini"
if migrate.Required(iniPath, filepath.Join(pl.ConfigDir(), config.CfgFile)) {
Expand Down
5 changes: 5 additions & 0 deletions pkg/config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -252,11 +252,16 @@ func (c *Instance) Save() error {
log.Info().Msgf("generated new device id: %s", newId)
}

tmpMappings := c.vals.Mappings
c.vals.Mappings = Mappings{}

data, err := toml.Marshal(&c.vals)
if err != nil {
return err
}

c.vals.Mappings = tmpMappings

return os.WriteFile(c.cfgPath, data, 0644)
}

Expand Down
65 changes: 0 additions & 65 deletions pkg/platforms/mister/methods.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,80 +4,15 @@ package mister

import (
"github.com/ZaparooProject/zaparoo-core/pkg/config"
"os"
"os/exec"
"strings"

"github.com/ZaparooProject/zaparoo-core/pkg/assets"
"github.com/rs/zerolog/log"
mrextConfig "github.com/wizzomafizzo/mrext/pkg/config"
"github.com/wizzomafizzo/mrext/pkg/games"
mrextMister "github.com/wizzomafizzo/mrext/pkg/mister"
"github.com/wizzomafizzo/mrext/pkg/utils"
)

// TODO: don't want to depend on external aplay command, but i'm out of
// time to keep messing with this. oto/beep would not work for me
// and are annoying to compile statically

func Setup(tr *Tracker) error {
if _, err := os.Stat(SuccessSoundFile); err != nil {
// copy success sound to temp
sf, err := os.Create(SuccessSoundFile)
if err != nil {
log.Error().Msgf("error creating success sound file: %s", err)
}
_, err = sf.Write(assets.SuccessSound)
if err != nil {
log.Error().Msgf("error writing success sound file: %s", err)
}
_ = sf.Close()
}

if _, err := os.Stat(FailSoundFile); err != nil {
// copy fail sound to temp
ff, err := os.Create(FailSoundFile)
if err != nil {
log.Error().Msgf("error creating fail sound file: %s", err)
}
_, err = ff.Write(assets.FailSound)
if err != nil {
log.Error().Msgf("error writing fail sound file: %s", err)
}
_ = ff.Close()
}

// attempt arcadedb update
go func() {
haveInternet := utils.WaitForInternet(30)
if !haveInternet {
log.Warn().Msg("no internet connection, skipping network tasks")
return
}

arcadeDbUpdated, err := UpdateArcadeDb()
if err != nil {
log.Error().Msgf("failed to download arcade database: %s", err)
}

if arcadeDbUpdated {
log.Info().Msg("arcade database updated")
tr.ReloadNameMap()
} else {
log.Info().Msg("arcade database is up to date")
}

m, err := ReadArcadeDb()
if err != nil {
log.Error().Msgf("failed to read arcade database: %s", err)
} else {
log.Info().Msgf("arcade database has %d entries", len(m))
}
}()

return nil
}

func PlaySuccess(cfg *config.Instance) {
if !cfg.AudioFeedback() {
return
Expand Down
56 changes: 53 additions & 3 deletions pkg/platforms/mister/platform.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import (
"errors"
"fmt"
"github.com/ZaparooProject/zaparoo-core/pkg/api/models"
"github.com/ZaparooProject/zaparoo-core/pkg/assets"
"github.com/ZaparooProject/zaparoo-core/pkg/config"
"github.com/ZaparooProject/zaparoo-core/pkg/database/gamesdb"
"github.com/ZaparooProject/zaparoo-core/pkg/readers/optical_drive"
Expand Down Expand Up @@ -145,9 +146,30 @@ func (p *Platform) StartPre(_ *config.Instance) error {
}
p.stopMappingsWatcher = closeMappingsWatcher

err = Setup(p.tr)
if err != nil {
return err
if _, err := os.Stat(SuccessSoundFile); err != nil {
// copy success sound to temp
sf, err := os.Create(SuccessSoundFile)
if err != nil {
log.Error().Msgf("error creating success sound file: %s", err)
}
_, err = sf.Write(assets.SuccessSound)
if err != nil {
log.Error().Msgf("error writing success sound file: %s", err)
}
_ = sf.Close()
}

if _, err := os.Stat(FailSoundFile); err != nil {
// copy fail sound to temp
ff, err := os.Create(FailSoundFile)
if err != nil {
log.Error().Msgf("error creating fail sound file: %s", err)
}
_, err = ff.Write(assets.FailSound)
if err != nil {
log.Error().Msgf("error writing fail sound file: %s", err)
}
_ = ff.Close()
}

stopSocket, err := StartSocketServer(
Expand Down Expand Up @@ -185,6 +207,34 @@ func (p *Platform) StartPost(cfg *config.Instance, ns chan<- models.Notification
p.tr = tr
p.stopTr = stopTr

// attempt arcadedb update
go func() {
haveInternet := utils.WaitForInternet(30)
if !haveInternet {
log.Warn().Msg("no internet connection, skipping network tasks")
return
}

arcadeDbUpdated, err := UpdateArcadeDb()
if err != nil {
log.Error().Msgf("failed to download arcade database: %s", err)
}

if arcadeDbUpdated {
log.Info().Msg("arcade database updated")
tr.ReloadNameMap()
} else {
log.Info().Msg("arcade database is up to date")
}

m, err := ReadArcadeDb()
if err != nil {
log.Error().Msgf("failed to read arcade database: %s", err)
} else {
log.Info().Msgf("arcade database has %d entries", len(m))
}
}()

return nil
}

Expand Down
58 changes: 55 additions & 3 deletions pkg/platforms/mistex/platform.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,11 @@ package mistex
import (
"fmt"
"github.com/ZaparooProject/zaparoo-core/pkg/api/models"
"github.com/ZaparooProject/zaparoo-core/pkg/assets"
"github.com/ZaparooProject/zaparoo-core/pkg/config"
"github.com/ZaparooProject/zaparoo-core/pkg/service/tokens"
"github.com/ZaparooProject/zaparoo-core/pkg/utils"
"github.com/rs/zerolog/log"
"os"
"path/filepath"
"strconv"
Expand Down Expand Up @@ -72,9 +75,30 @@ func (p *Platform) StartPre(_ *config.Instance) error {
}
p.gpd = gpd

err = mister.Setup(p.tr)
if err != nil {
return err
if _, err := os.Stat(mister.SuccessSoundFile); err != nil {
// copy success sound to temp
sf, err := os.Create(mister.SuccessSoundFile)
if err != nil {
log.Error().Msgf("error creating success sound file: %s", err)
}
_, err = sf.Write(assets.SuccessSound)
if err != nil {
log.Error().Msgf("error writing success sound file: %s", err)
}
_ = sf.Close()
}

if _, err := os.Stat(mister.FailSoundFile); err != nil {
// copy fail sound to temp
ff, err := os.Create(mister.FailSoundFile)
if err != nil {
log.Error().Msgf("error creating fail sound file: %s", err)
}
_, err = ff.Write(assets.FailSound)
if err != nil {
log.Error().Msgf("error writing fail sound file: %s", err)
}
_ = ff.Close()
}

return nil
Expand All @@ -89,6 +113,34 @@ func (p *Platform) StartPost(cfg *config.Instance, ns chan<- models.Notification
p.tr = tr
p.stopTr = stopTr

// attempt arcadedb update
go func() {
haveInternet := utils.WaitForInternet(30)
if !haveInternet {
log.Warn().Msg("no internet connection, skipping network tasks")
return
}

arcadeDbUpdated, err := mister.UpdateArcadeDb()
if err != nil {
log.Error().Msgf("failed to download arcade database: %s", err)
}

if arcadeDbUpdated {
log.Info().Msg("arcade database updated")
tr.ReloadNameMap()
} else {
log.Info().Msg("arcade database is up to date")
}

m, err := mister.ReadArcadeDb()
if err != nil {
log.Error().Msgf("failed to read arcade database: %s", err)
} else {
log.Info().Msgf("arcade database has %d entries", len(m))
}
}()

return nil
}

Expand Down

0 comments on commit 5f80df8

Please sign in to comment.