aboutsummaryrefslogtreecommitdiff
path: root/steam-export-cli.go
diff options
context:
space:
mode:
authorMitch Riedstra <mitch@riedstra.us>2017-01-16 12:46:37 -0500
committerMitch Riedstra <mitch@riedstra.us>2017-01-16 12:46:37 -0500
commit6aa43fe0ed572999bcb0553f05cdc54c8d452e50 (patch)
treef457057e76db06c6c87dfe23699bd1d78ec1d72c /steam-export-cli.go
parentd5679be63fe396b5bcd2f01b76799a17a64a83d4 (diff)
downloadsteam-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.go82
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)