Manually replace FAPI deps with QFAPI/QSL when using Quilt (fixes #212)

This commit is contained in:
comp500
2023-04-13 16:45:10 +01:00
parent bfe570a6a2
commit bd71ad5679
4 changed files with 24 additions and 5 deletions

View File

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

View File

@@ -426,3 +426,11 @@ func resolveVersion(project *modrinthApi.Project, version string) (*modrinthApi.
}
return nil, fmt.Errorf("unable to find version %s", version)
}
func mapDepOverride(depID string, isQuilt bool) string {
if isQuilt && (depID == "P7dR8mSH" || depID == "fabric-api") {
// Transform FAPI dependencies to QFAPI/QSL dependencies when using Quilt
return "qvIfYCYJ"
}
return depID
}