hachem.wtf
aboutsummaryrefslogtreecommitdiff
path: root/internal/cli/generate.go
diff options
context:
space:
mode:
authorhachem <im@hachem.wtf>2026-08-29 18:24:42 +0200
committerhachem <im@hachem.wtf>2026-08-29 18:24:42 +0200
commitfcbbeccaa80c7e120933682b330272a1490c1cf5 (patch)
tree11de4610f01a3861f7bbea94da63dd2d070f420a /internal/cli/generate.go
parent4806ee7ef95f0f04079856f7753399b7b7aa6330 (diff)
refactor: unify mods command with the search
Diffstat (limited to 'internal/cli/generate.go')
-rw-r--r--internal/cli/generate.go21
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
}