From 3fb350f2445d46853c092367ab5f590b22360550 Mon Sep 17 00:00:00 2001 From: comp500 Date: Mon, 7 Mar 2022 18:22:29 +0000 Subject: [PATCH] Pass through optional-disabled on CF import (fixes #93) --- core/mod.go | 13 ++++++++----- curseforge/curseforge.go | 11 ++++++++++- curseforge/detect.go | 2 +- curseforge/import.go | 2 +- curseforge/install.go | 4 ++-- 5 files changed, 22 insertions(+), 10 deletions(-) diff --git a/core/mod.go b/core/mod.go index 22d25de..9afa4e3 100644 --- a/core/mod.go +++ b/core/mod.go @@ -23,11 +23,7 @@ type Mod struct { Update map[string]map[string]interface{} `toml:"update"` updateData map[string]interface{} - Option *struct { - Optional bool `toml:"optional"` - Description string `toml:"description,omitempty"` - Default bool `toml:"default,omitempty"` - } `toml:"option,omitempty"` + Option *ModOption `toml:"option,omitempty"` } // ModDownload specifies how to download the mod file @@ -37,6 +33,13 @@ type ModDownload struct { Hash string `toml:"hash"` } +// ModOption specifies optional metadata for this mod file +type ModOption struct { + Optional bool `toml:"optional"` + Description string `toml:"description,omitempty"` + Default bool `toml:"default,omitempty"` +} + // The three possible values of Side (the side that the mod is on) are "server", "client", and "both". //noinspection GoUnusedConst const ( diff --git a/curseforge/curseforge.go b/curseforge/curseforge.go index d5fc01f..f43a09d 100644 --- a/curseforge/curseforge.go +++ b/curseforge/curseforge.go @@ -162,7 +162,7 @@ func getModIDFromString(mod string) (bool, int, error) { return false, 0, nil } -func createModFile(modInfo modInfo, fileInfo modFileInfo, index *core.Index) error { +func createModFile(modInfo modInfo, fileInfo modFileInfo, index *core.Index, optionalDisabled bool) error { updateMap := make(map[string]map[string]interface{}) var err error @@ -181,6 +181,14 @@ func createModFile(modInfo modInfo, fileInfo modFileInfo, index *core.Index) err hash, hashFormat := fileInfo.getBestHash() + var optional *core.ModOption + if optionalDisabled { + optional = &core.ModOption{ + Optional: true, + Default: false, + } + } + modMeta := core.Mod{ Name: modInfo.Name, FileName: fileInfo.FileName, @@ -190,6 +198,7 @@ func createModFile(modInfo modInfo, fileInfo modFileInfo, index *core.Index) err HashFormat: hashFormat, Hash: hash, }, + Option: optional, Update: updateMap, } path := modMeta.SetMetaName(modInfo.Slug, *index) diff --git a/curseforge/detect.go b/curseforge/detect.go index 037f948..977d542 100644 --- a/curseforge/detect.go +++ b/curseforge/detect.go @@ -88,7 +88,7 @@ var detectCmd = &cobra.Command{ os.Exit(1) } - err = createModFile(modInfoData, v.File, &index) + err = createModFile(modInfoData, v.File, &index, false) if err != nil { fmt.Println(err) os.Exit(1) diff --git a/curseforge/import.go b/curseforge/import.go index 40f904d..3076e82 100644 --- a/curseforge/import.go +++ b/curseforge/import.go @@ -262,7 +262,7 @@ var importCmd = &cobra.Command{ continue } - err = createModFile(modInfoValue, modFileInfoValue, &index) + err = createModFile(modInfoValue, modFileInfoValue, &index, v.OptionalDisabled) if err != nil { fmt.Printf("Failed to save mod \"%s\": %s\n", modInfoValue.Name, err) os.Exit(1) diff --git a/curseforge/install.go b/curseforge/install.go index 515d654..b25dc80 100644 --- a/curseforge/install.go +++ b/curseforge/install.go @@ -215,7 +215,7 @@ var installCmd = &cobra.Command{ ansNormal := strings.ToLower(strings.TrimSpace(answer)) if !(len(ansNormal) > 0 && ansNormal[0] == 'n') { for _, v := range depsInstallable { - err = createModFile(v.modInfo, v.fileInfo, &index) + err = createModFile(v.modInfo, v.fileInfo, &index, false) if err != nil { fmt.Println(err) os.Exit(1) @@ -229,7 +229,7 @@ var installCmd = &cobra.Command{ } } - err = createModFile(modInfoData, fileInfoData, &index) + err = createModFile(modInfoData, fileInfoData, &index, false) if err != nil { fmt.Println(err) os.Exit(1)