@@ -3,10 +3,8 @@ package main
33import (
44 "errors"
55 "fmt"
6- "io/ioutil"
7- "log"
86 "os"
9- "strings "
7+ "path/filepath "
108 "time"
119)
1210
@@ -17,56 +15,41 @@ type Save struct {
1715}
1816
1917func (s Save ) String () string {
20- return fmt . Sprintf ( "%s" , s .Name )
18+ return s .Name
2119}
2220
2321// Lists save files in factorio/saves
24- func listSaves (saveDir string ) ([]Save , error ) {
25- result := []Save {}
26-
27- files , err := ioutil .ReadDir (saveDir )
28- if err != nil {
29- log .Printf ("Error listing save directory: %s" , err )
30- return result , err
31- }
32-
33- for _ , f := range files {
34- save := Save {f .Name (), f .ModTime (), f .Size ()}
35- result = append (result , save )
36- }
37-
38- return result , nil
22+ func listSaves (saveDir string ) (saves []Save , err error ) {
23+ err = filepath .Walk (saveDir , func (path string , info os.FileInfo , err error ) error {
24+ saves = append (saves , Save {
25+ info .Name (),
26+ info .ModTime (),
27+ info .Size (),
28+ })
29+ return nil
30+ })
31+ return
3932}
4033
41- func rmSave (saveName string ) error {
42- removed := false
43- if saveName == "" {
44- return errors .New ("No save name provided" )
45- }
46-
34+ func findSave (name string ) (* Save , error ) {
4735 saves , err := listSaves (config .FactorioSavesDir )
4836 if err != nil {
49- log .Printf ("Error in remove save: %s" , err )
50- return err
37+ return nil , fmt .Errorf ("error listing saves: %v" , err )
5138 }
5239
5340 for _ , save := range saves {
54- log .Printf ("Checking if %s in %s" , save , saveName )
55- if strings .Contains (save .Name , saveName ) {
56- err := os .Remove (config .FactorioSavesDir + "/" + save .Name )
57- if err != nil {
58- log .Printf ("Error removing save %s: %s" , saveName , err )
59- return err
60- }
61- log .Printf ("Deleted save: %s" , save )
62- removed = true
41+ if save .Name == name {
42+ return & save , nil
6343 }
6444 }
6545
66- if ! removed {
67- log .Printf ("Did not remove save: %s" , saveName )
68- return errors .New (fmt .Sprintf ("Did not remove save: %s" , saveName ))
46+ return nil , errors .New ("save not found" )
47+ }
48+
49+ func (s * Save ) remove () error {
50+ if s .Name == "" {
51+ return errors .New ("save name cannot be blank" )
6952 }
7053
71- return nil
54+ return os . Remove ( filepath . Join ( config . FactorioSavesDir , s . Name ))
7255}
0 commit comments