From 5a8919689e91527ed89e9a8d8a061f117dfd250b Mon Sep 17 00:00:00 2001 From: Mitch Riedstra Date: Mon, 16 Jan 2017 13:09:13 -0500 Subject: Add ability to delete games. Remove old "main.go" --- .gitignore | 1 + Readme.md | 3 +++ main.go | 38 -------------------------------------- steam-export-cli.go | 37 +++++++++++++++++++++++++++---------- steam/package.go | 21 +++++++++++++++++---- 5 files changed, 48 insertions(+), 52 deletions(-) delete mode 100644 main.go diff --git a/.gitignore b/.gitignore index 6a07f59..db36e14 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ test*.go *.tar.* *.tgz *.tbz2 +*.exe diff --git a/Readme.md b/Readme.md index 94aefb0..2003736 100644 --- a/Readme.md +++ b/Readme.md @@ -8,6 +8,9 @@ This applications specifically copies the `appmanifest` files into the archives. This prevents you from needing Steam to "discover" or "check" the files. +Steam only seems to scan libraries on startup, so any changes made to +your libraries is going to require you to restart steam. + This process also seems to be much faster, and more reliable than Steam's built in backup tool. diff --git a/main.go b/main.go deleted file mode 100644 index 617be4d..0000000 --- a/main.go +++ /dev/null @@ -1,38 +0,0 @@ -package main - -import ( - "fmt" - "git.riedstra.us/mitch/steam-export/config" - "git.riedstra.us/mitch/steam-export/steam" - - "os" -) - -func main() { - config, err := config.LoadConfig() - if err != nil { - fmt.Println(err) - } - - // fmt.Println(config) - - libs, err := steam.ProcessMultipleLibraries(config.SteamRepositories) - if err != nil { - fmt.Println(err) - } else { - fmt.Println(libs) - } - - fmt.Println("------") - - fmt.Println(libs[0].Games[0]) - - working_dir, _ := os.Getwd() - fmt.Println(working_dir) - - // vvvvvvv - // _ = libs[0].PackageGame(libs[0].Games[0]) - // Duke Nukem 3d - _ = libs[2].PackageGame(libs[2].Games[8]) - -} diff --git a/steam-export-cli.go b/steam-export-cli.go index 80d8a43..35ba453 100644 --- a/steam-export-cli.go +++ b/steam-export-cli.go @@ -28,6 +28,8 @@ func parseArgs(args []string) error { return packageGame(aa) case "extract": return extractGame(aa) + case "delete": + return deleteGame(aa) default: printHelp() } @@ -98,11 +100,6 @@ func packageGame(args []string) error { return steamLib.PackageGameToFile(g, *fileName+".tar") - /* - fmt.Printf("SteamLib dir: %q, Archive Name: %q, SteamLib game: %q", - steamLib.Folder, *fileName+".tar", steamLib.Games[g]) - return nil - */ } func extractGame(args []string) error { @@ -128,12 +125,32 @@ func extractGame(args []string) error { return steamLib.ExtractGameFromFile(*fileName) - /* - fmt.Printf("SteamLib dir: %q, Archive Name: %q\n", - steamLib.Folder, *fileName) - return nil - */ +} + +func deleteGame(args []string) error { + fl := flag.NewFlagSet("delete", errorHandling) + lib := fl.String("l", defaultLib, + "Path to library in question. All the way to the 'steamapps' folder") + game := fl.Int("g", -1, + "Index of the game to be deleted. Please see `list` for the index") + + var g int + l := defaultLib + fl.Parse(args) + if fl.Parsed() { + l = string(*lib) + g = int(*game) + } + + if err := steamLib.ProcessLibrary(l); err != nil { + return err + } + + if len(steamLib.Games) < g || g == -1 { + return errors.New("Cannot find game for index provided or no index provided") + } + return steamLib.DeleteGame(g) } func main() { diff --git a/steam/package.go b/steam/package.go index 8a4ff8b..d7e33af 100644 --- a/steam/package.go +++ b/steam/package.go @@ -1,6 +1,7 @@ package steam import ( + // "fmt" "git.riedstra.us/mitch/steam-export/archive" "os" "path/filepath" @@ -63,8 +64,7 @@ func (l *Library) ExtractGameFromFile(f string) error { return nil } -/* -func (l *Library) DeleteGame(i index) error { +func (l *Library) DeleteGame(i int) error { g := l.Games[i] working_dir, err := os.Getwd() @@ -72,7 +72,21 @@ func (l *Library) DeleteGame(i index) error { return err } - // os.RemoveAll() + if err = os.Chdir(l.Folder); err != nil { + return err + } + + acf, err := l.FindACF(g) + if err != nil { + return err + } + // fmt.Fprintf(os.Stderr, "Removing %q %q\n", acf, "common/"+g) + if err := os.Remove(acf); err != nil { + return err + } + if err := os.RemoveAll("common/" + g); err != nil { + return err + } if err = os.Chdir(working_dir); err != nil { return err @@ -80,4 +94,3 @@ func (l *Library) DeleteGame(i index) error { return nil } -*/ -- cgit v1.2.3