aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMitch Riedstra <mitch@riedstra.us>2017-01-16 13:09:13 -0500
committerMitch Riedstra <mitch@riedstra.us>2017-01-16 13:09:13 -0500
commit5a8919689e91527ed89e9a8d8a061f117dfd250b (patch)
tree895ce38ef6232675523a61500a6769fba4efd890
parent4f9e8e54fd6796e3080dc07381b2e8d17fd35b5f (diff)
downloadsteam-export-5a8919689e91527ed89e9a8d8a061f117dfd250b.tar.gz
steam-export-5a8919689e91527ed89e9a8d8a061f117dfd250b.tar.xz
Add ability to delete games. Remove old "main.go"
-rw-r--r--.gitignore1
-rw-r--r--Readme.md3
-rw-r--r--main.go38
-rw-r--r--steam-export-cli.go37
-rw-r--r--steam/package.go21
5 files changed, 48 insertions, 52 deletions
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
}
-*/