diff --git a/config.yml b/config.yml index 82215c5..329bac6 100644 --- a/config.yml +++ b/config.yml @@ -9,5 +9,5 @@ factoryman: screen: True screenName: "Factorio" backupDir: "factorio/backups" - username: "" - apitoken: "" \ No newline at end of file + username: "Raum0x2A" + apitoken: "dab754bd9c1672301f0a83e9bad5a3" \ No newline at end of file diff --git a/factoryman b/factoryman index 80bf748..3ce285e 100755 Binary files a/factoryman and b/factoryman differ diff --git a/go.mod b/go.mod index e2ef12e..04db81c 100644 --- a/go.mod +++ b/go.mod @@ -4,4 +4,14 @@ go 1.24.0 toolchain go1.24.4 -require gopkg.in/yaml.v3 v3.0.1 +require ( + github.com/saracen/fastzip v0.2.0 + gopkg.in/yaml.v3 v3.0.1 +) + +require ( + github.com/klauspost/compress v1.18.0 // indirect + github.com/saracen/zipextra v0.0.0-20250129175152-f1aa42d25216 // indirect + golang.org/x/sync v0.11.0 // indirect + golang.org/x/sys v0.30.0 // indirect +) diff --git a/go.sum b/go.sum index a62c313..0e3e5f7 100644 --- a/go.sum +++ b/go.sum @@ -1,3 +1,19 @@ +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= +github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/saracen/fastzip v0.2.0 h1:896eirt4TCjUQj/mMKIvh/HoJkUXDRljMmv1SYeuUNE= +github.com/saracen/fastzip v0.2.0/go.mod h1:s0X80kMEaqaZsYrsT4aUz7fTHBTVyS9lU8AzLJ/yC3U= +github.com/saracen/zipextra v0.0.0-20250129175152-f1aa42d25216 h1:8zyjtFyKi5NJySVOJRiHmSN1vl6qugQ5n9C4X7WyY3U= +github.com/saracen/zipextra v0.0.0-20250129175152-f1aa42d25216/go.mod h1:hnzuad9d2wdd3z8fC6UouHQK5qZxqv3F/E6MMzXc7q0= +github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= +github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +golang.org/x/sync v0.11.0 h1:GGz8+XQP4FvTTrjZPzNKTMFtSXH80RAzG+5ghFPgK9w= +golang.org/x/sync v0.11.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= +golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= diff --git a/mods.go b/mods.go index 41a18bb..c988642 100644 --- a/mods.go +++ b/mods.go @@ -7,6 +7,7 @@ import ( "log" "net/http" "os" + "os/exec" ) func findmodlist(modlist string) bool { @@ -42,6 +43,12 @@ func downloadMods(modlist string) { log.Fatalf("Error reading modlist: %v", err) } defer file.Close() + // create temp directory + tempDir, err := os.MkdirTemp("", "factoryman-*") + if err != nil { + log.Fatalln("Failed to create temporary directory") + } + defer os.RemoveAll(tempDir) var modList ModList decoder := json.NewDecoder(file) if err := decoder.Decode(&modList); err != nil { @@ -71,16 +78,28 @@ func downloadMods(modlist string) { log.Fatalf("Error reading JSON: %v", err) } - fmt.Printf("Mod: %s, Ver: %s, Enabled: %t\n", mod.Name, mod.Version, mod.Enabled) + //fmt.Printf("Mod: %s, Ver: %s, Enabled: %t\n", mod.Name, mod.Version, mod.Enabled) accessToken := fmt.Sprintf("?username=%s&token=%s", c.Factoryman.UserName, c.Factoryman.ApiToken) modDownloadUrl := fmt.Sprintf("https://mods.factorio.com%s%s", moddata.Releases[len(moddata.Releases)-1].DownloadUrl, accessToken) - fmt.Println(modDownloadUrl) - downloadErr := download(string(c.Server.ServDir+"/mods/"+moddata.Releases[len(moddata.Releases)-1].Filename), modDownloadUrl) + //fmt.Println(modDownloadUrl) + fileName := string(tempDir + "/" + moddata.Releases[len(moddata.Releases)-1].Filename) + downloadErr := download(fileName, modDownloadUrl) if downloadErr != nil { log.Fatalf("Error downloading: %v", downloadErr) } - fmt.Printf("Downloaded: %s\n", moddata.Releases[len(moddata.Releases)-1].Filename) + fmt.Printf("Downloaded: %s\n", fileName) + fmt.Println("extracting files...") + + /*cmd := exec.Command("unzip", fileName, "-d", c.Server.ServDir+"/mods/") + out, err := cmd.Output() + if err != nil { + log.Fatalf("%v\n", err) + }*/ + + exec.Command("unzip", fileName, "-d", c.Server.ServDir+"/mods/") + //fmt.Printf("%s\ndone\n", out) + } }