diff options
Diffstat (limited to 'steam/game.go')
| -rw-r--r-- | steam/game.go | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/steam/game.go b/steam/game.go new file mode 100644 index 0000000..0028257 --- /dev/null +++ b/steam/game.go @@ -0,0 +1,32 @@ +package steam + +import ( + "os" + "path/filepath" +) + +// GetSize returns the size of a game in a pretty format. If size is 0 +// it will call SetSizeInfo before returning +func (g *Game) GetSize() string { + if g.Size == 0 { + _ = g.SetSizeInfo() + } + return formatBytes(g.Size) +} + +// SetSizeInfo reads the size information for the game off of the disk +// and stores it in the Size struct element +func (g *Game) SetSizeInfo() error { + pth := filepath.Join(g.LibraryPath, "common", g.Name) + return filepath.Walk(pth, func(path string, info os.FileInfo, err error) error { + if err != nil { + return err + } + + if info.Mode().IsRegular() { + g.Size += info.Size() + } + + return nil + }) +} |
