From 742938b00222c7ad57ad11eb24850d9202c2503d Mon Sep 17 00:00:00 2001 From: Mitchell Riedstra Date: Wed, 4 Aug 2021 20:06:07 -0400 Subject: Pretty large structural changes. Non-building development snapshot --- steam/game.go | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 steam/game.go (limited to 'steam/game.go') 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 + }) +} -- cgit v1.2.3