aboutsummaryrefslogtreecommitdiff
path: root/cmd/cli
diff options
context:
space:
mode:
authorMitch Riedstra <mitch@riedstra.us>2020-11-20 22:46:45 -0500
committerMitch Riedstra <mitch@riedstra.us>2020-11-20 22:46:45 -0500
commit891447f0e40a6d1a9637b3333cffed8eb2543c51 (patch)
treefb748b0c6af1670a2b73e5d581f206d0fe26e003 /cmd/cli
parent971cc396e1d01f53f65a86278fd0ac4490565335 (diff)
downloadsteam-export-891447f0e40a6d1a9637b3333cffed8eb2543c51.tar.gz
steam-export-891447f0e40a6d1a9637b3333cffed8eb2543c51.tar.xz
Works after reorganization.
Diffstat (limited to 'cmd/cli')
-rw-r--r--cmd/cli/main.go133
-rw-r--r--cmd/cli/unix.go10
-rw-r--r--cmd/cli/windows.go5
3 files changed, 60 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()
}
}
-
diff --git a/cmd/cli/unix.go b/cmd/cli/unix.go
new file mode 100644
index 0000000..6b1b1ae
--- /dev/null
+++ b/cmd/cli/unix.go
@@ -0,0 +1,10 @@
+// +build darwin dragonfly freebsd linux nacl netbsd openbsd solaris
+
+package main
+
+import (
+ "os"
+ "path/filepath"
+)
+
+var DefaultLib string = filepath.Join(os.Getenv("HOME"), ".steam/steam/steamapps")
diff --git a/cmd/cli/windows.go b/cmd/cli/windows.go
new file mode 100644
index 0000000..2effa08
--- /dev/null
+++ b/cmd/cli/windows.go
@@ -0,0 +1,5 @@
+// +build windows
+
+package main
+
+var DefaultLib string = `C:\Program Files (x86)\Steam\steamapps`