hachem.wtf
aboutsummaryrefslogtreecommitdiff
path: root/internal/cli/generate.go
diff options
context:
space:
mode:
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
}