diff options
| author | hachem <im@hachem.wtf> | 2026-08-29 18:24:42 +0200 |
|---|---|---|
| committer | hachem <im@hachem.wtf> | 2026-08-29 18:24:42 +0200 |
| commit | fcbbeccaa80c7e120933682b330272a1490c1cf5 (patch) | |
| tree | 11de4610f01a3861f7bbea94da63dd2d070f420a /internal/cli/generate.go | |
| parent | 4806ee7ef95f0f04079856f7753399b7b7aa6330 (diff) | |
refactor: unify mods command with the search
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 } |
