Skip to content

Commit

Permalink
Fix warning with go1.22.3
Browse files Browse the repository at this point in the history
  • Loading branch information
chenjianlong committed May 27, 2024
1 parent fca2a96 commit 06715aa
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 50 deletions.
33 changes: 17 additions & 16 deletions cmd/gamesave-sync/gamesearchinfo.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,16 @@ package main
import (
"encoding/hex"
"encoding/json"
"errors"
"fmt"
. "github.com/chenjianlong/gamesave-sync/pkg/gsutils"
"golang.org/x/sys/windows"
"golang.org/x/sys/windows/registry"
"io/ioutil"
"io"
"log"
"os"
"path/filepath"
"strings"

"github.com/chenjianlong/gamesave-sync/pkg/gsutils"
"golang.org/x/sys/windows"
"golang.org/x/sys/windows/registry"
)

type SearchType uint16
Expand Down Expand Up @@ -325,7 +325,7 @@ func toKnownFolderID(folderID string) (*windows.KNOWNFOLDERID, error) {
case "AppDataProgramData":
knownFolderID = windows.FOLDERID_AppDataProgramData
default:
return nil, errors.New(fmt.Sprintf("Unknown FOLDERID: %#v", knownFolderID))
return nil, fmt.Errorf("unknown FOLDERID: %#v", knownFolderID)
}

return knownFolderID, nil
Expand All @@ -345,7 +345,7 @@ func (t *SearchType) UnmarshalJSON(data []byte) error {
case "folder":
*t = STFolder
default:
return errors.New(fmt.Sprintf("Invalid searchType: %s", searchType))
return fmt.Errorf("invalid searchType: %s", searchType)
}

return nil
Expand All @@ -360,23 +360,23 @@ func (t *RegistryInfo) UnmarshalJSON(data []byte) error {
if name, ok := obj["name"]; ok {
t.Name = name
} else {
return errors.New(fmt.Sprintf("Invalid registry info, obj=%#v", obj))
return fmt.Errorf("invalid registry info, obj=%#v", obj)
}

regPath, ok := obj["path"]
if !ok {
return errors.New(fmt.Sprintf("Invalid registry info, obj=%#v", obj))
return fmt.Errorf("invalid registry info, obj=%#v", obj)
}

idx := strings.Index(regPath, "\\")
if idx < 0 {
return errors.New(fmt.Sprintf("Invalid registry info, obj=%#v", obj))
return fmt.Errorf("invalid registry info, obj=%#v", obj)
}

rootKey := regPath[:idx]
t.Key = regPath[idx+1:]
if len(t.Key) == 0 {
return errors.New(fmt.Sprintf("Invalid registry info, obj=%#v", obj))
return fmt.Errorf("invalid registry info, obj=%#v", obj)
}

switch rootKey {
Expand All @@ -391,7 +391,7 @@ func (t *RegistryInfo) UnmarshalJSON(data []byte) error {
case "HKCC", "HKEY_CURRENT_CONFIG":
t.RootKey = registry.CURRENT_CONFIG
default:
return errors.New(fmt.Sprintf("Invalid registry info, obj=%#v", obj))
return fmt.Errorf("invalid registry info, obj=%#v", obj)
}
return nil
}
Expand All @@ -404,7 +404,8 @@ func LoadGameSearchInfo(path string) *GameSearchInfo {
}

defer file.Close()
content, err := ioutil.ReadAll(file)
content, err := io.ReadAll(file)
gsutils.CheckError(err)
searchInfo := new(GameSearchInfo)
err = json.Unmarshal(content, searchInfo)
if err != nil {
Expand Down Expand Up @@ -461,7 +462,7 @@ func LoadGameList(confDir string) []GameInfo {
return nil
})

CheckError(err)
gsutils.CheckError(err)
var gameList []GameInfo
for _, info := range gameSearchInfo {
if info.Name == `` || info.SubDir == `` {
Expand All @@ -473,7 +474,7 @@ func LoadGameList(confDir string) []GameInfo {
switch info.Type {
case STKnownFolder:
dir, err = windows.KnownFolderPath(info.FolderID, 0)
CheckError(err)
gsutils.CheckError(err)
case STRegistry:
key, err := registry.OpenKey(info.Reg.RootKey, info.Reg.Key, registry.QUERY_VALUE|registry.WOW64_64KEY)
if err != nil {
Expand All @@ -495,7 +496,7 @@ func LoadGameList(confDir string) []GameInfo {
}

dir = filepath.Join(dir, info.SubDir)
valid, _ := IsDir(dir)
valid, _ := gsutils.IsDir(dir)
if !valid {
continue
}
Expand Down
69 changes: 35 additions & 34 deletions cmd/gamesave-sync/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,21 @@ package main

import (
"errors"
"github.com/alexflint/go-arg"
"github.com/fsnotify/fsnotify"
"gopkg.in/ini.v1"
"log"
"os"
"path"
"path/filepath"
"strings"
"time"

. "github.com/chenjianlong/gamesave-sync/pkg/gsutils"
. "github.com/chenjianlong/gamesave-sync/pkg/i18n"
. "github.com/chenjianlong/gamesave-sync/pkg/transfer"
. "github.com/chenjianlong/gamesave-sync/pkg/ziputils"
"github.com/alexflint/go-arg"
"github.com/fsnotify/fsnotify"
"gopkg.in/ini.v1"

"github.com/chenjianlong/gamesave-sync/pkg/gsutils"
"github.com/chenjianlong/gamesave-sync/pkg/i18n"
"github.com/chenjianlong/gamesave-sync/pkg/transfer"
"github.com/chenjianlong/gamesave-sync/pkg/ziputils"
"github.com/jeandeaual/go-locale"
"github.com/mitchellh/go-ps"
"golang.org/x/sys/windows"
Expand All @@ -32,16 +33,16 @@ func main() {
arg.MustParse(&args)

loc, err := locale.GetLocale()
CheckError(err)
InitBundle(loc)
gsutils.CheckError(err)
i18n.InitBundle(loc)

transfer := newTransfer(args.Path)
appData := getAppdata()
hasMonitor := false
for _, info := range LoadGameList("conf.d/") {
log.Println(GetSyncGameMessage(info.Name))
log.Println(i18n.GetSyncGameMessage(info.Name))
p := info.Dir
valid, _ := IsDir(p)
valid, _ := gsutils.IsDir(p)
if !valid {
log.Printf("%s not exist\n", p)
continue
Expand All @@ -52,7 +53,7 @@ func main() {
log.Printf("Game: %s, needUpload: %v, downloadObject: %s\n", info.Name, needUpload, downloadObjName)
zipPath := filepath.Join(appData, info.Name+".zip")
if needUpload && localGameSaveTime != nil {
objName := path.Join(info.Name, localGameSaveTime.UTC().Format(TimeFormat)+".zip")
objName := path.Join(info.Name, localGameSaveTime.UTC().Format(gsutils.TimeFormat)+".zip")
uploadGameSave(transfer, p, zipPath, objName)
}

Expand Down Expand Up @@ -110,14 +111,14 @@ func monitorDir(iniPath string, info GameInfo) {
}()

// Add a path.
CheckError(watcher.Add(info.Dir))
gsutils.CheckError(watcher.Add(info.Dir))
// TODO exit if watcher is error on monitor
<-make(chan struct{})
}

func processRunning(name string) bool {
processes, err := ps.Processes()
CheckError(err)
gsutils.CheckError(err)
for _, proc := range processes {
if proc.Executable() == name {
return true
Expand All @@ -134,21 +135,21 @@ func uploadGameSaveIfGameExited(iniPath string, info GameInfo) {

zipPath := filepath.Join(getAppdata(), info.Name+".zip")
localGameSaveTime := getLocalGameSaveTime(info.Dir)
objName := path.Join(info.Name, localGameSaveTime.UTC().Format(TimeFormat)+".zip")
objName := path.Join(info.Name, localGameSaveTime.UTC().Format(gsutils.TimeFormat)+".zip")
uploadGameSave(newTransfer(iniPath), info.Dir, zipPath, objName)
}

func newTransfer(path string) Transfer {
func newTransfer(path string) transfer.Transfer {
iniFile, err := ini.Load(path)
CheckError(err)
gsutils.CheckError(err)
s3Section, err := iniFile.GetSection("s3")
if err == nil {
endpoint := s3Section.Key("endpoint").String()
bucketName := s3Section.Key("bucketName").String()
accessKeyID := s3Section.Key("accessKeyID").String()
secretAccessKey := s3Section.Key("secretAccessKey").String()
transfer, err := NewS3Transfer(endpoint, bucketName, accessKeyID, secretAccessKey)
CheckError(err)
transfer, err := transfer.NewS3Transfer(endpoint, bucketName, accessKeyID, secretAccessKey)
gsutils.CheckError(err)
return transfer
}

Expand All @@ -158,15 +159,15 @@ func newTransfer(path string) Transfer {
user := ftpSection.Key("user").String()
password := ftpSection.Key("password").String()
subDir := ftpSection.Key("subDir").String()
transfer, err := NewFTPTransfer(addr, user, password, subDir)
CheckError(err)
transfer, err := transfer.NewFTPTransfer(addr, user, password, subDir)
gsutils.CheckError(err)
return transfer
}

panic("Invalid config no s3 and ftp section")
}

func getDownloadName(transfer Transfer, localTime *time.Time, dir string) (string, bool) {
func getDownloadName(transfer transfer.Transfer, localTime *time.Time, dir string) (string, bool) {
needUpload := false
var downloadTime time.Time
if localTime != nil {
Expand All @@ -179,7 +180,7 @@ func getDownloadName(transfer Transfer, localTime *time.Time, dir string) (strin
continue
}

objTime, err := time.Parse(TimeFormat, strings.TrimPrefix(strings.TrimSuffix(file, ".zip"), dir))
objTime, err := time.Parse(gsutils.TimeFormat, strings.TrimPrefix(strings.TrimSuffix(file, ".zip"), dir))
if err != nil {
log.Printf("Failed to parse time %s\n", file)
continue
Expand Down Expand Up @@ -216,45 +217,45 @@ func getLocalGameSaveTime(dir string) *time.Time {
return nil
})

CheckError(err)
gsutils.CheckError(err)
return mtime
}

func getAppdata() string {
appData, err := windows.KnownFolderPath(windows.FOLDERID_RoamingAppData, 0)
CheckError(err)
gsutils.CheckError(err)
appData = filepath.Join(appData, AppName)
CheckError(os.MkdirAll(appData, 0755))
gsutils.CheckError(os.MkdirAll(appData, 0755))
return appData
}

func uploadGameSave(uploader Uploader, p, zipPath, objName string) {
err := ZipSource(p, zipPath)
CheckError(err)
func uploadGameSave(uploader transfer.Uploader, p, zipPath, objName string) {
err := ziputils.ZipSource(p, zipPath)
gsutils.CheckError(err)
defer func() {
err = os.Remove(zipPath)
if err != nil {
log.Println(err)
}
}()

CheckError(uploader.Upload(zipPath, objName))
gsutils.CheckError(uploader.Upload(zipPath, objName))
log.Printf("Successfully uploaded %s\n", objName)
}

func downloadGameSave(downloader Downloader, p, zipPath, objName string) {
func downloadGameSave(downloader transfer.Downloader, p, zipPath, objName string) {
err := os.Remove(zipPath)
if err != nil && !errors.Is(err, os.ErrNotExist) {
panic(err)
}

CheckError(downloader.Download(objName, zipPath))
gsutils.CheckError(downloader.Download(objName, zipPath))
defer func() {
err = os.Remove(zipPath)
if err != nil {
log.Println(err)
}
}()
CheckError(os.RemoveAll(p))
CheckError(UnzipSource(zipPath, p))
gsutils.CheckError(os.RemoveAll(p))
gsutils.CheckError(ziputils.UnzipSource(zipPath, p))
}

0 comments on commit 06715aa

Please sign in to comment.