aboutsummaryrefslogtreecommitdiff
path: root/lib/steam/package.go
diff options
context:
space:
mode:
authorMitch Riedstra <mitch@riedstra.us>2017-02-04 18:16:22 -0500
committerMitch Riedstra <mitch@riedstra.us>2017-02-04 18:16:22 -0500
commit0e346bf5ad4852db5db82343b2aca5911c38ad00 (patch)
tree5a2528211318da0c550dfb5ca576a0292ed8176b /lib/steam/package.go
parent41752a0cf50735bc29dae18271539719f7b59f7c (diff)
downloadsteam-export-0e346bf5ad4852db5db82343b2aca5911c38ad00.tar.gz
steam-export-0e346bf5ad4852db5db82343b2aca5911c38ad00.tar.xz
Moved the libraries around
Diffstat (limited to 'lib/steam/package.go')
-rw-r--r--lib/steam/package.go96
1 files changed, 96 insertions, 0 deletions
diff --git a/lib/steam/package.go b/lib/steam/package.go
new file mode 100644
index 0000000..2e25994
--- /dev/null
+++ b/lib/steam/package.go
@@ -0,0 +1,96 @@
+package steam
+
+import (
+ // "fmt"
+ "git.riedstra.us/mitch/steam-export/lib/archive"
+ "os"
+ "path/filepath"
+)
+
+func (l *Library) PackageGameToFile(index int, file, compress string) error {
+ g := l.Games[index]
+
+ working_dir, err := os.Getwd()
+ if err != nil {
+ return err
+ }
+ // output := working_dir + "/" + g + ".tar"
+ output, err := filepath.Abs(file)
+ if err != nil {
+ return err
+ }
+
+ os.Chdir(l.Folder)
+ acf, err := l.FindACF(g)
+ if err != nil {
+ return err
+ }
+ input := []string{"common/" + g, acf}
+ a := archive.Archive{Output: output, Input: input}
+ err = a.Tar(compress)
+ if err != nil {
+ return err
+ }
+
+ os.Chdir(working_dir)
+
+ return nil
+}
+
+func (l *Library) ExtractGameFromFile(f, compress string) error {
+ working_dir, err := os.Getwd()
+ if err != nil {
+ return err
+ }
+
+ f, err = filepath.Abs(f)
+ if err != nil {
+ return err
+ }
+
+ if err = os.Chdir(l.Folder); err != nil {
+ return err
+ }
+ u := &archive.Unarchive{
+ Input: f,
+ }
+ if err := u.UnTar(compress); err != nil {
+ return err
+ }
+
+ if err = os.Chdir(working_dir); err != nil {
+ return err
+ }
+ return nil
+}
+
+func (l *Library) DeleteGame(i int) error {
+ g := l.Games[i]
+
+ working_dir, err := os.Getwd()
+ if err != nil {
+ return err
+ }
+
+ 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
+ }
+
+ return nil
+}