mirror of
https://github.com/Walter-Sparrow/lunar-tear.git
synced 2026-07-02 05:43:41 +03:00
Add cross-platform prebuilt release workflow
Build and Push Docker images to Docker Hub / build-and-push (push) Has been cancelled
Build and Push Docker images to Docker Hub / build-and-push (push) Has been cancelled
This commit is contained in:
+29
-21
@@ -27,31 +27,39 @@ func backupGameDB() {
|
||||
return
|
||||
}
|
||||
|
||||
_ = spinner.New().Title(" Backing up db/game.db...").Action(func() {
|
||||
if err := os.MkdirAll(backupDir, 0o755); err != nil {
|
||||
fmt.Fprintf(os.Stderr, " failed to create %s: %v\n", backupDir, err)
|
||||
return
|
||||
}
|
||||
if !sourceMode {
|
||||
fmt.Println(" Backing up db/game.db...")
|
||||
doBackupGameDB()
|
||||
return
|
||||
}
|
||||
|
||||
ts := time.Now().UTC().Format("20060102T150405Z")
|
||||
dest := filepath.Join(backupDir, fmt.Sprintf("game.db.%s%s", ts, backupSuffix))
|
||||
_ = spinner.New().Title(" Backing up db/game.db...").Action(doBackupGameDB).Run()
|
||||
}
|
||||
|
||||
db, err := sql.Open("sqlite", gameDBPath+"?_pragma=busy_timeout(5000)")
|
||||
if err != nil {
|
||||
fmt.Fprintf(os.Stderr, " failed to open %s: %v\n", gameDBPath, err)
|
||||
return
|
||||
}
|
||||
defer db.Close()
|
||||
func doBackupGameDB() {
|
||||
if err := os.MkdirAll(backupDir, 0o755); err != nil {
|
||||
fmt.Fprintf(os.Stderr, " failed to create %s: %v\n", backupDir, err)
|
||||
return
|
||||
}
|
||||
|
||||
escaped := strings.ReplaceAll(dest, "'", "''")
|
||||
if _, err := db.Exec(fmt.Sprintf("VACUUM INTO '%s'", escaped)); err != nil {
|
||||
fmt.Fprintf(os.Stderr, " VACUUM INTO failed: %v\n", err)
|
||||
_ = os.Remove(dest)
|
||||
return
|
||||
}
|
||||
ts := time.Now().UTC().Format("20060102T150405Z")
|
||||
dest := filepath.Join(backupDir, fmt.Sprintf("game.db.%s%s", ts, backupSuffix))
|
||||
|
||||
pruneOldBackups()
|
||||
}).Run()
|
||||
db, err := sql.Open("sqlite", gameDBPath+"?_pragma=busy_timeout(5000)")
|
||||
if err != nil {
|
||||
fmt.Fprintf(os.Stderr, " failed to open %s: %v\n", gameDBPath, err)
|
||||
return
|
||||
}
|
||||
defer db.Close()
|
||||
|
||||
escaped := strings.ReplaceAll(dest, "'", "''")
|
||||
if _, err := db.Exec(fmt.Sprintf("VACUUM INTO '%s'", escaped)); err != nil {
|
||||
fmt.Fprintf(os.Stderr, " VACUUM INTO failed: %v\n", err)
|
||||
_ = os.Remove(dest)
|
||||
return
|
||||
}
|
||||
|
||||
pruneOldBackups()
|
||||
}
|
||||
|
||||
func pruneOldBackups() {
|
||||
|
||||
Reference in New Issue
Block a user