diff options
Diffstat (limited to 'internal/cli/generate.go')
| -rw-r--r-- | internal/cli/generate.go | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/internal/cli/generate.go b/internal/cli/generate.go index 352b7b4..3e7db04 100644 --- a/internal/cli/generate.go +++ b/internal/cli/generate.go @@ -67,25 +67,34 @@ func generateWorker(cfg *config.Config, ch chan<- tea.Msg) { client := modrinth.NewClient() downloaded, failed := 0, 0 - for _, slug := range cfg.ModrinthMods { - versions, err := client.GetVersions(slug) + for _, mod := range cfg.ModrinthMods { + versions, err := client.GetVersions(mod.Slug) if err != nil { failed++ - emit(" " + errorStyle.Render("✗ ") + slug + mutedStyle.Render(" — "+err.Error())) + emit(" " + errorStyle.Render("✗ ") + mod.Slug + mutedStyle.Render(" — "+err.Error())) continue } - match := modrinth.CompatibleVersion(versions, cfg.MinecraftVersion, "fabric") + var match *modrinth.Version + if mod.Pinned() { + match = modrinth.FindVersion(versions, mod.Version) + } else { + match = modrinth.CompatibleVersion(versions, cfg.MinecraftVersion, "fabric") + } if match == nil || len(match.Files) == 0 { failed++ - emit(" " + errorStyle.Render("✗ ") + slug + mutedStyle.Render(" — no fabric build for MC "+cfg.MinecraftVersion)) + reason := "no fabric build for MC " + cfg.MinecraftVersion + if mod.Pinned() { + reason = "version " + mod.Version + " not found" + } + emit(" " + errorStyle.Render("✗ ") + mod.Slug + mutedStyle.Render(" — "+reason)) continue } file := match.Files[0] if err := client.Download(file.URL, filepath.Join(modsDir, file.Filename)); err != nil { failed++ - emit(" " + errorStyle.Render("✗ ") + slug + mutedStyle.Render(" — "+err.Error())) + emit(" " + errorStyle.Render("✗ ") + mod.Slug + mutedStyle.Render(" — "+err.Error())) continue } |
