From 8153b81cba93fdfb31161f30e4b0625cb4ef14d0 Mon Sep 17 00:00:00 2001 From: Felipe Martin Date: Fri, 13 Nov 2020 12:47:59 +0100 Subject: [PATCH] Added Minecraft provider Closes #1 --- pkg/cli/cli.go | 8 ++++- pkg/providers/minecraft/minecraft.go | 51 ++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 pkg/providers/minecraft/minecraft.go diff --git a/pkg/cli/cli.go b/pkg/cli/cli.go index 1be86c9..4120fd3 100644 --- a/pkg/cli/cli.go +++ b/pkg/cli/cli.go @@ -11,18 +11,22 @@ import ( "github.com/fmartingr/games-screenshot-mananger/pkg/games" "github.com/fmartingr/games-screenshot-mananger/pkg/helpers" + "github.com/fmartingr/games-screenshot-mananger/pkg/providers/minecraft" "github.com/fmartingr/games-screenshot-mananger/pkg/providers/steam" ) -var allowedProviders = [...]string{"steam"} +var allowedProviders = [...]string{"steam", "minecraft"} const defaultOutputPath string = "./Output" + +// const defaultInputPath string = "./Input" const defaultProvider string = "steam" const defaultDryRun bool = false func Start() { var provider = flag.String("provider", defaultProvider, "steam") var outputPath = flag.String("output-path", defaultOutputPath, "The destination path of the screenshots") + // var inputPath = flag.String("input-path", defaultInputPath, "Input path for the provider that requires it") var dryRun = flag.Bool("dry-run", defaultDryRun, "Use to disable write actions on filesystem") flag.Parse() @@ -38,6 +42,8 @@ func getGamesFromProvider(provider string) []games.Game { var games []games.Game if provider == "steam" { games = append(games, steam.GetGames()...) + } else if provider == "minecraft" { + games = append(games, minecraft.GetGames()...) } return games } diff --git a/pkg/providers/minecraft/minecraft.go b/pkg/providers/minecraft/minecraft.go new file mode 100644 index 0000000..8d26ee9 --- /dev/null +++ b/pkg/providers/minecraft/minecraft.go @@ -0,0 +1,51 @@ +package minecraft + +import ( + "io/ioutil" + "log" + "os" + "path" + "runtime" + "strings" + + "github.com/fmartingr/games-screenshot-mananger/pkg/games" + "github.com/fmartingr/games-screenshot-mananger/pkg/helpers" +) + +func getScreenshotsFromPath(game *games.Game, path string) { + path = helpers.ExpandUser(path) + if _, err := os.Stat(path); !os.IsNotExist(err) { + files, err := ioutil.ReadDir(path) + if err != nil { + log.Fatal(err) + } + + for _, file := range files { + if strings.Contains(file.Name(), ".png") { + game.Screenshots = append(game.Screenshots, games.Screenshot{Path: path + "/" + file.Name(), DestinationName: file.Name()}) + } + } + } +} + +func GetGames() []games.Game { + var result []games.Game + // Standalone minecraft + minecraftStandalone := games.Game{Name: "Minecraft", Platform: "PC", Notes: "Standalone"} + + if runtime.GOOS == "linux" { + getScreenshotsFromPath(&minecraftStandalone, "~/.minecraft/screenshots") + + // Flatpak minecraft + minecraftFlatpak := games.Game{Name: "Minecraft", Platform: "PC", Notes: "Flatpak"} + getScreenshotsFromPath(&minecraftFlatpak, "~/.var/app/com.mojang.Minecraft/.minecraft/screenshots") + result = append(result, minecraftFlatpak) + } else if runtime.GOOS == "windows" { + getScreenshotsFromPath(&minecraftStandalone, path.Join(os.Getenv("APPDATA"), ".minecraft/screenshots")) + } else if runtime.GOOS == "darwin" { + getScreenshotsFromPath(&minecraftStandalone, path.Join(helpers.ExpandUser("~/Library/Application Support/minecraft/screenshots"))) + } + result = append(result, minecraftStandalone) + + return result +}