package steam import ( // "fmt" "git.riedstra.us/mitch/steam-export/archive" "os" "path/filepath" ) func (l *Library) PackageGameToFile(index int, file 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() if err != nil { return err } os.Chdir(working_dir) return nil } func (l *Library) ExtractGameFromFile(f 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(); 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 }