diff options
| author | Mitch Riedstra <mitch@riedstra.us> | 2020-11-20 22:46:45 -0500 |
|---|---|---|
| committer | Mitch Riedstra <mitch@riedstra.us> | 2020-11-20 22:46:45 -0500 |
| commit | 891447f0e40a6d1a9637b3333cffed8eb2543c51 (patch) | |
| tree | fb748b0c6af1670a2b73e5d581f206d0fe26e003 /cmd/cli/main.go | |
| parent | 971cc396e1d01f53f65a86278fd0ac4490565335 (diff) | |
| download | steam-export-891447f0e40a6d1a9637b3333cffed8eb2543c51.tar.gz steam-export-891447f0e40a6d1a9637b3333cffed8eb2543c51.tar.xz | |
Works after reorganization.
Diffstat (limited to 'cmd/cli/main.go')
| -rw-r--r-- | cmd/cli/main.go | 133 |
1 files changed, 45 insertions, 88 deletions
diff --git a/cmd/cli/main.go b/cmd/cli/main.go index 3292d30..989592a 100644 --- a/cmd/cli/main.go +++ b/cmd/cli/main.go @@ -6,16 +6,9 @@ import ( "fmt" "os" - "riedstra.dev/mitch/steam-export/config" "riedstra.dev/mitch/steam-export/steam" ) -var ( - errorHandling flag.ErrorHandling = flag.ExitOnError - - steamLib *steam.Library = &steam.Library{} -) - func parseArgs(args []string) error { if len(args) < 2 { return errors.New("Not enough arguments") @@ -30,8 +23,6 @@ func parseArgs(args []string) error { return extractGame(aa) case "delete": return deleteGame(aa) - case "edit-config": - return editConfig(aa) default: printHelp() } @@ -49,34 +40,21 @@ Subcommands: extract delete server - edit-config Type in a subcommand -h or -help for more information `) } -func editConfig(args []string) error { - fl := flag.NewFlagSet("edit-config", errorHandling) - e := fl.String("e", "", "Editor to invoke") - if err := fl.Parse(args); err != nil { - return err - } - return config.EditDefaultConfig(*e) -} - func listGames(args []string) error { - fl := flag.NewFlagSet("list", errorHandling) - lib := fl.String("l", steam.DefaultLib, + fl := flag.NewFlagSet("list", flag.ExitOnError) + lib := fl.String("l", DefaultLib, "Path to library in question. All the way to the 'steamapps' folder") - l := steam.DefaultLib fl.Parse(args) - if fl.Parsed() { - l = string(*lib) - } - if err := steamLib.ProcessLibrary(l); err != nil { + steamLib := &steam.Library{} + if err := steamLib.ProcessLibrary(*lib); err != nil { return err } @@ -86,111 +64,90 @@ func listGames(args []string) error { } func packageGame(args []string) error { - fl := flag.NewFlagSet("package", errorHandling) - lib := fl.String("l", steam.DefaultLib, + fl := flag.NewFlagSet("package", flag.ExitOnError) + libPth := fl.String("l", DefaultLib, "Path to library in question. All the way to the 'steamapps' folder") - fileName := fl.String("f", "export", - "Name of the archive file to be created. Please do not include the file extension") - game := fl.Int("g", -1, - "Index of the game to be exported. Please see `list` for the index") - compress := fl.String("z", "gz", - "Compression type. Default 'gz' '' is no compression") - - var g int - l := steam.DefaultLib + fileName := fl.String("f", "", "Name of archive to be created") + game := fl.String("g", "", "Name of the game to be exported.") + fl.Parse(args) - if fl.Parsed() { - l = string(*lib) - g = int(*game) + + if *fileName == "" { + return errors.New("You need to specify a file name") } - if err := steamLib.ProcessLibrary(l); err != nil { + lib := &steam.Library{} + if err := lib.ProcessLibrary(*libPth); err != nil { return err } - if len(steamLib.Games) < g || g == -1 { - return errors.New("Cannot find game for index provided or no index provided") + G, ok := lib.Games[*game] + if !ok { + return errors.New("Game does not exist") } - if *fileName == "export" { - fileName = &steamLib.Games[g] + f, err := os.OpenFile(*fileName, os.O_CREATE|os.O_TRUNC|os.O_WRONLY, 0664) + if err != nil { + return err } + defer f.Close() - switch *compress { - case "gz": - return steamLib.PackageGameToFile(g, *fileName+".tar.gz", *compress) - default: - return steamLib.PackageGameToFile(g, *fileName+".tar", *compress) + err = G.Package(f) + if err != nil { + return err } + return nil } func extractGame(args []string) error { - fl := flag.NewFlagSet("extract", errorHandling) - lib := fl.String("l", steam.DefaultLib, + fl := flag.NewFlagSet("extract", flag.ExitOnError) + libPath := fl.String("l", DefaultLib, "Path to library in question. All the way to the 'steamapps' folder") fileName := fl.String("f", "", - "Name of the archive file to be extracted. Please include the file extension") - compress := fl.String("z", "gz", - "Compression type. Default 'gz' '' is no compression") + "Name of the archive file to be extracted. Include the file extension") - l := steam.DefaultLib fl.Parse(args) - if fl.Parsed() { - l = string(*lib) - } - if err := steamLib.ProcessLibrary(l); err != nil { + lib := &steam.Library{} + + if err := lib.ProcessLibrary(*libPath); err != nil { return err } - if *fileName == "" { - return errors.New("No filename provided") + fh, err := os.Open(*fileName) + if err != nil { + return err } - return steamLib.ExtractGameFromFile(*fileName, *compress) - + return lib.Extract(fh) } func deleteGame(args []string) error { - fl := flag.NewFlagSet("delete", errorHandling) - lib := fl.String("l", steam.DefaultLib, + fl := flag.NewFlagSet("delete", flag.ExitOnError) + libPath := fl.String("l", DefaultLib, "Path to library in question. All the way to the 'steamapps' folder") - game := fl.Int("g", -1, - "Index of the game to be deleted. Please see `list` for the index") + game := fl.String("g", "", "Name of the game to be deleted.") - var g int - l := steam.DefaultLib fl.Parse(args) - if fl.Parsed() { - l = string(*lib) - g = int(*game) - } - if err := steamLib.ProcessLibrary(l); err != nil { + lib := &steam.Library{} + + if err := lib.ProcessLibrary(*libPath); err != nil { return err } - if len(steamLib.Games) < g || g == -1 { - return errors.New("Cannot find game for index provided or no index provided") + G, ok := lib.Games[*game] + if !ok { + return errors.New("Game does not exist") } - return steamLib.DeleteGame(g) + return G.Delete() } func main() { - config, err := config.LoadConfig() - if err != nil { - fmt.Println(err) - } else { - if config.DefaultRepository != "" { - steam.DefaultLib = config.DefaultRepository - } - } - if err := parseArgs(os.Args); err != nil { fmt.Fprintln(os.Stderr, err) printHelp() } } - |
