diff options
Diffstat (limited to 'steam/steam.go')
| -rw-r--r-- | steam/steam.go | 123 |
1 files changed, 0 insertions, 123 deletions
diff --git a/steam/steam.go b/steam/steam.go deleted file mode 100644 index ea27e5a..0000000 --- a/steam/steam.go +++ /dev/null @@ -1,123 +0,0 @@ -// This is designed to be a rather simplistic library to help pull information -// from a local steam library -package steam - -import ( - "fmt" - "io/ioutil" - - "errors" - - "bufio" - "os" - "path/filepath" - "strings" - // "log" -) - -type Library struct { - Folder string - Games []string -} - -func ProcessMultipleLibraries(r []string) ([]*Library, error) { - var libs []*Library - for _, i := range r { - lib := &Library{} - err := lib.ProcessLibrary(i) - if err != nil { - return nil, err - } - libs = append(libs, lib) - } - return libs, nil -} - -// Populate the "Folder" and "Games" fields based on the provided directory -func (s *Library) ProcessLibrary(r string) error { - if hasCommon(r) { - dirs, err := ioutil.ReadDir(r + "/common") - if err != nil { - return err - } - s.Folder = r - for _, f := range dirs { - if f.IsDir() { - s.Games = append(s.Games, f.Name()) - } - } - } else { - return errors.New(fmt.Sprintf("No common directory in: %s", r)) - } - return nil -} - -// Find the ACF files related to this video game -func (l *Library) FindACF(g string) (string, error) { - working_dir, err := os.Getwd() - if err != nil { - return "", err - } - if err = os.Chdir(l.Folder); err != nil { - return "", err - } - files, err := filepath.Glob("*.acf") - if err != nil { - return "", err - } - for _, fn := range files { - info, err := os.Lstat(fn) - if err != nil { - return "", err - } - // We don't want it if it's a directory - if info.IsDir() { - continue - } - - // Open up the file - f, err := os.Open(fn) - defer f.Close() - if err != nil { - return "", err - } - scanner := bufio.NewScanner(f) - for scanner.Scan() { - // Finally check and see if the file has the video game name - if strings.Contains(scanner.Text(), g) { - os.Chdir(working_dir) - return fn, nil - // fmt.Printf("%s/%s:%d: %s\n", root, path, i, scanner.Text()) - } - } - - } - str := "Couldn't find ACF file related to Game: %s" - return "", errors.New(fmt.Sprintf(str, g)) -} - -// This is automatically called to print out the contents of the struct -// when things like fmt.Println are used -func (s *Library) String() (str string) { - str = fmt.Sprintln("\n----") - str = str + fmt.Sprintln(s.Folder) - str = str + "\n----\n" - for k, v := range s.Games { - str = str + fmt.Sprintf("%d: %s\n", k, v) - //str = str + fmt.Sprintln(v) - } - return -} - -func hasCommon(d string) bool { - dirs, err := ioutil.ReadDir(d) - if err != nil { - return false - } - for _, f := range dirs { - if f.Name() == "common" && f.IsDir() { - return true - } - } - return false -} |
