diff options
| author | Mitch Riedstra <mitch@riedstra.us> | 2017-01-16 12:46:37 -0500 |
|---|---|---|
| committer | Mitch Riedstra <mitch@riedstra.us> | 2017-01-16 12:46:37 -0500 |
| commit | 6aa43fe0ed572999bcb0553f05cdc54c8d452e50 (patch) | |
| tree | f457057e76db06c6c87dfe23699bd1d78ec1d72c /steam-export-cli.go | |
| parent | d5679be63fe396b5bcd2f01b76799a17a64a83d4 (diff) | |
| download | steam-export-6aa43fe0ed572999bcb0553f05cdc54c8d452e50.tar.gz steam-export-6aa43fe0ed572999bcb0553f05cdc54c8d452e50.tar.xz | |
Add the ability to package and export games
Diffstat (limited to 'steam-export-cli.go')
| -rw-r--r-- | steam-export-cli.go | 82 |
1 files changed, 78 insertions, 4 deletions
diff --git a/steam-export-cli.go b/steam-export-cli.go index 46f96dd..80d8a43 100644 --- a/steam-export-cli.go +++ b/steam-export-cli.go @@ -12,7 +12,7 @@ import ( var ( errorHandling flag.ErrorHandling = flag.ExitOnError - defaultLib string = "C:\\Program Files (x86)\\Steam\\steamapps" + defaultLib string = `C:\Program Files (x86)\Steam\steamapps` steamLib *steam.Library = &steam.Library{} ) @@ -20,9 +20,14 @@ func parseArgs(args []string) error { if len(args) < 2 { return errors.New("Not enough arguments") } + aa := args[2:] switch a := args[1]; a { case "list": - return listGames(args[2:]) + return listGames(aa) + case "package": + return packageGame(aa) + case "extract": + return extractGame(aa) default: printHelp() } @@ -35,9 +40,9 @@ func printHelp() { steam-export-cli $subcommand $options Subcommands: list -l $steam_library - package -l $steam_library -f $output_file [ -G $game_index | -g "game_name" ] + package -l $steam_library -f $output_file -g $game_index extract -l $steam_library -f $input_file - delete -l $steam_library [ -G $game_index | -g $game_name ] + delete -l $steam_library -g $game_index server -c $config_file -l $steam_library -L $listen_addr`) } @@ -62,6 +67,75 @@ func listGames(args []string) error { return nil } +func packageGame(args []string) error { + fl := flag.NewFlagSet("package", errorHandling) + lib := 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") + + var g int + l := defaultLib + fl.Parse(args) + if fl.Parsed() { + l = string(*lib) + g = int(*game) + } + + if err := steamLib.ProcessLibrary(l); err != nil { + return err + } + + if len(steamLib.Games) < g || g == -1 { + return errors.New("Cannot find game for index provided or no index provided") + } + + if *fileName == "export" { + fileName = &steamLib.Games[g] + } + + return steamLib.PackageGameToFile(g, *fileName+".tar") + + /* + fmt.Printf("SteamLib dir: %q, Archive Name: %q, SteamLib game: %q", + steamLib.Folder, *fileName+".tar", steamLib.Games[g]) + return nil + */ +} + +func extractGame(args []string) error { + fl := flag.NewFlagSet("extract", errorHandling) + lib := 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") + + l := defaultLib + fl.Parse(args) + if fl.Parsed() { + l = string(*lib) + } + + if err := steamLib.ProcessLibrary(l); err != nil { + return err + } + + if *fileName == "" { + return errors.New("No filename provided") + } + + return steamLib.ExtractGameFromFile(*fileName) + + /* + fmt.Printf("SteamLib dir: %q, Archive Name: %q\n", + steamLib.Folder, *fileName) + return nil + */ + +} + func main() { if err := parseArgs(os.Args); err != nil { fmt.Fprintln(os.Stderr, err) |
