Manually replace FLK deps with QKL when using Quilt >=1.19.2 (fixes #212)

This commit is contained in:
comp500 2023-04-13 17:12:44 +01:00
parent bd71ad5679
commit e966eaffc0
4 changed files with 31 additions and 7 deletions

View File

@ -4,6 +4,7 @@ import (
"errors" "errors"
"fmt" "fmt"
"github.com/spf13/viper" "github.com/spf13/viper"
"github.com/unascribed/FlexVer/go/flexver"
"golang.org/x/exp/slices" "golang.org/x/exp/slices"
"io" "io"
"path/filepath" "path/filepath"
@ -590,10 +591,17 @@ func (m *cfDownloadMetadata) DownloadFile() (io.ReadCloser, error) {
return resp.Body, nil return resp.Body, nil
} }
func mapDepOverride(depID uint32, isQuilt bool) uint32 { // mapDepOverride transforms manual dependency overrides (which will likely be removed when packwiz is able to determine provided mods)
func mapDepOverride(depID uint32, isQuilt bool, mcVersion string) uint32 {
if isQuilt && depID == 306612 { if isQuilt && depID == 306612 {
// Transform FAPI dependencies to QFAPI/QSL dependencies when using Quilt // Transform FAPI dependencies to QFAPI/QSL dependencies when using Quilt
return 634179 return 634179
} }
if isQuilt && depID == 308769 {
// Transform FLK dependencies to QKL dependencies when using Quilt >=1.19.2 non-snapshot
if flexver.Less("1.19.1", mcVersion) && flexver.Less(mcVersion, "2.0.0") {
return 720410
}
}
return depID return depID
} }

View File

@ -44,6 +44,11 @@ var installCmd = &cobra.Command{
fmt.Println(err) fmt.Println(err)
os.Exit(1) os.Exit(1)
} }
primaryMCVersion, err := pack.GetMCVersion()
if err != nil {
fmt.Println(err)
os.Exit(1)
}
game := gameFlag game := gameFlag
category := categoryFlag category := categoryFlag
@ -128,7 +133,7 @@ var installCmd = &cobra.Command{
var depIDPendingQueue []uint32 var depIDPendingQueue []uint32
for _, dep := range fileInfoData.Dependencies { for _, dep := range fileInfoData.Dependencies {
if dep.Type == dependencyTypeRequired { if dep.Type == dependencyTypeRequired {
depIDPendingQueue = append(depIDPendingQueue, mapDepOverride(dep.ModID, isQuilt)) depIDPendingQueue = append(depIDPendingQueue, mapDepOverride(dep.ModID, isQuilt, primaryMCVersion))
} }
} }
@ -192,7 +197,7 @@ var installCmd = &cobra.Command{
for _, dep := range depFileInfo.Dependencies { for _, dep := range depFileInfo.Dependencies {
if dep.Type == dependencyTypeRequired { if dep.Type == dependencyTypeRequired {
depIDPendingQueue = append(depIDPendingQueue, mapDepOverride(dep.ModID, isQuilt)) depIDPendingQueue = append(depIDPendingQueue, mapDepOverride(dep.ModID, isQuilt, primaryMCVersion))
} }
} }

View File

@ -228,6 +228,10 @@ func installVersion(project *modrinthApi.Project, version *modrinthApi.Version,
// TODO: could get installed version IDs, and compare to install the newest - i.e. preferring pinned versions over getting absolute latest? // TODO: could get installed version IDs, and compare to install the newest - i.e. preferring pinned versions over getting absolute latest?
installedProjects := getInstalledProjectIDs(index) installedProjects := getInstalledProjectIDs(index)
isQuilt := slices.Contains(pack.GetLoaders(), "quilt") isQuilt := slices.Contains(pack.GetLoaders(), "quilt")
mcVersion, err := pack.GetMCVersion()
if err != nil {
return err
}
var depMetadata []depMetadataStore var depMetadata []depMetadataStore
var depProjectIDPendingQueue []string var depProjectIDPendingQueue []string
@ -237,7 +241,7 @@ func installVersion(project *modrinthApi.Project, version *modrinthApi.Version,
// TODO: recommend optional dependencies? // TODO: recommend optional dependencies?
if dep.DependencyType != nil && *dep.DependencyType == "required" { if dep.DependencyType != nil && *dep.DependencyType == "required" {
if dep.ProjectID != nil { if dep.ProjectID != nil {
depProjectIDPendingQueue = append(depProjectIDPendingQueue, mapDepOverride(*dep.ProjectID, isQuilt)) depProjectIDPendingQueue = append(depProjectIDPendingQueue, mapDepOverride(*dep.ProjectID, isQuilt, mcVersion))
} }
if dep.VersionID != nil { if dep.VersionID != nil {
depVersionIDPendingQueue = append(depVersionIDPendingQueue, *dep.VersionID) depVersionIDPendingQueue = append(depVersionIDPendingQueue, *dep.VersionID)
@ -256,7 +260,7 @@ func installVersion(project *modrinthApi.Project, version *modrinthApi.Version,
if err == nil { if err == nil {
for _, v := range depVersions { for _, v := range depVersions {
// Add project ID to queue // Add project ID to queue
depProjectIDPendingQueue = append(depProjectIDPendingQueue, mapDepOverride(*v.ProjectID, isQuilt)) depProjectIDPendingQueue = append(depProjectIDPendingQueue, mapDepOverride(*v.ProjectID, isQuilt, mcVersion))
} }
} else { } else {
fmt.Printf("Error retrieving dependency data: %s\n", err.Error()) fmt.Printf("Error retrieving dependency data: %s\n", err.Error())
@ -305,7 +309,7 @@ func installVersion(project *modrinthApi.Project, version *modrinthApi.Version,
// TODO: recommend optional dependencies? // TODO: recommend optional dependencies?
if dep.DependencyType != nil && *dep.DependencyType == "required" { if dep.DependencyType != nil && *dep.DependencyType == "required" {
if dep.ProjectID != nil { if dep.ProjectID != nil {
depProjectIDPendingQueue = append(depProjectIDPendingQueue, mapDepOverride(*dep.ProjectID, isQuilt)) depProjectIDPendingQueue = append(depProjectIDPendingQueue, mapDepOverride(*dep.ProjectID, isQuilt, mcVersion))
} }
if dep.VersionID != nil { if dep.VersionID != nil {
depVersionIDPendingQueue = append(depVersionIDPendingQueue, *dep.VersionID) depVersionIDPendingQueue = append(depVersionIDPendingQueue, *dep.VersionID)

View File

@ -427,10 +427,17 @@ func resolveVersion(project *modrinthApi.Project, version string) (*modrinthApi.
return nil, fmt.Errorf("unable to find version %s", version) return nil, fmt.Errorf("unable to find version %s", version)
} }
func mapDepOverride(depID string, isQuilt bool) string { // mapDepOverride transforms manual dependency overrides (which will likely be removed when packwiz is able to determine provided mods)
func mapDepOverride(depID string, isQuilt bool, mcVersion string) string {
if isQuilt && (depID == "P7dR8mSH" || depID == "fabric-api") { if isQuilt && (depID == "P7dR8mSH" || depID == "fabric-api") {
// Transform FAPI dependencies to QFAPI/QSL dependencies when using Quilt // Transform FAPI dependencies to QFAPI/QSL dependencies when using Quilt
return "qvIfYCYJ" return "qvIfYCYJ"
} }
if isQuilt && (depID == "Ha28R6CL" || depID == "fabric-language-kotlin") {
// Transform FLK dependencies to QKL dependencies when using Quilt >=1.19.2 non-snapshot
if flexver.Less("1.19.1", mcVersion) && flexver.Less(mcVersion, "2.0.0") {
return "lwVhp9o5"
}
}
return depID return depID
} }