Skip to content

Commit

Permalink
Clean up code, filter version numbers for NeoForge as well as Forge
Browse files Browse the repository at this point in the history
NeoForge doesn't seem to have an update checker JSON yet, so we can't determine
the recommended version
  • Loading branch information
comp500 committed Jul 30, 2023
1 parent 234f927 commit 4c23e26
Show file tree
Hide file tree
Showing 7 changed files with 29 additions and 23 deletions.
2 changes: 1 addition & 1 deletion cmd/init.go
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ var initCmd = &cobra.Command{
}
}
v := componentVersion
if loader.Name == "forge" {
if loader.Name == "forge" || loader.Name == "neoforge" {
v = cmdshared.GetRawForgeVersion(componentVersion)
}
if !slices.Contains(versions, v) {
Expand Down
18 changes: 17 additions & 1 deletion core/pack.go
Original file line number Diff line number Diff line change
Expand Up @@ -191,7 +191,7 @@ func (pack Pack) GetPackName() string {
}
}

func (pack Pack) GetLoaders() (loaders []string) {
func (pack Pack) GetCompatibleLoaders() (loaders []string) {
if _, hasQuilt := pack.Versions["quilt"]; hasQuilt {
loaders = append(loaders, "quilt")
loaders = append(loaders, "fabric") // Backwards-compatible; for now (could be configurable later)
Expand All @@ -206,3 +206,19 @@ func (pack Pack) GetLoaders() (loaders []string) {
}
return
}

func (pack Pack) GetLoaders() (loaders []string) {
if _, hasQuilt := pack.Versions["quilt"]; hasQuilt {
loaders = append(loaders, "quilt")
}
if _, hasFabric := pack.Versions["fabric"]; hasFabric {
loaders = append(loaders, "fabric")
}
if _, hasNeoForge := pack.Versions["neoforge"]; hasNeoForge {
loaders = append(loaders, "neoforge")
}
if _, hasForge := pack.Versions["forge"]; hasForge {
loaders = append(loaders, "forge")
}
return
}
2 changes: 1 addition & 1 deletion curseforge/curseforge.go
Original file line number Diff line number Diff line change
Expand Up @@ -414,7 +414,7 @@ func (u cfUpdater) CheckUpdate(mods []*core.Mod, pack core.Pack) ([]core.UpdateC
}
}

packLoaders := pack.GetLoaders()
packLoaders := pack.GetCompatibleLoaders()

for i, v := range mods {
projectRaw, ok := v.GetParsedUpdateData("curseforge")
Expand Down
6 changes: 3 additions & 3 deletions curseforge/install.go
Original file line number Diff line number Diff line change
Expand Up @@ -120,14 +120,14 @@ var installCmd = &cobra.Command{
}

var fileInfoData modFileInfo
fileInfoData, err = getLatestFile(modInfoData, mcVersions, fileID, pack.GetLoaders())
fileInfoData, err = getLatestFile(modInfoData, mcVersions, fileID, pack.GetCompatibleLoaders())
if err != nil {
fmt.Printf("Failed to get file for project: %v\n", err)
os.Exit(1)
}

if len(fileInfoData.Dependencies) > 0 {
isQuilt := slices.Contains(pack.GetLoaders(), "quilt")
isQuilt := slices.Contains(pack.GetCompatibleLoaders(), "quilt")

var depsInstallable []installableDep
var depIDPendingQueue []uint32
Expand Down Expand Up @@ -191,7 +191,7 @@ var installCmd = &cobra.Command{
depIDPendingQueue = depIDPendingQueue[:0]

for _, currData := range depInfoData {
depFileInfo, err := getLatestFile(currData, mcVersions, 0, pack.GetLoaders())
depFileInfo, err := getLatestFile(currData, mcVersions, 0, pack.GetCompatibleLoaders())
if err != nil {
fmt.Printf("Error retrieving dependency data: %s\n", err.Error())
continue
Expand Down
16 changes: 3 additions & 13 deletions migrate/loader.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,17 +24,7 @@ var loaderCommand = &cobra.Command{
fmt.Printf("Error loading pack: %s\n", err)
os.Exit(1)
}
// Get our current loader, would use the modpack.GetLoaders function
// but, it supplements Quilt with Fabric, which isn't needed for this
var currentLoaders []string
// Add all the keys from modpack.Versions
for key := range modpack.Versions {
// If it ain't in core.ModLoaders, we don't want it
if _, ok := core.ModLoaders[key]; !ok {
continue
}
currentLoaders = append(currentLoaders, key)
}
var currentLoaders = modpack.GetLoaders()
// Do some sanity checks on the current loader slice
if len(currentLoaders) == 0 {
fmt.Println("No loader is currently set in your pack.toml!")
Expand Down Expand Up @@ -90,8 +80,8 @@ var loaderCommand = &cobra.Command{
fmt.Println("Updating to explicit loader version")
// This one is easy :D
versions, _, loader := getVersionsForLoader(currentLoaders[0], mcVersion)
// Check if the loader happens to be Forge, since there's two version formats
if loader.Name == "forge" {
// Check if the loader happens to be Forge/NeoForge, since there's two version formats
if loader.Name == "forge" || loader.Name == "neoforge" {
wantedVersion := cmdshared.GetRawForgeVersion(args[0])
validateVersion(versions, wantedVersion, loader)
_ = updatePackToVersion(wantedVersion, modpack, loader)
Expand Down
4 changes: 2 additions & 2 deletions modrinth/install.go
Original file line number Diff line number Diff line change
Expand Up @@ -227,7 +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")
isQuilt := slices.Contains(pack.GetCompatibleLoaders(), "quilt")
mcVersion, err := pack.GetMCVersion()
if err != nil {
return err
Expand Down Expand Up @@ -432,7 +432,7 @@ func createFileMeta(project *modrinthApi.Project, version *modrinthApi.Version,
var path string
folder := viper.GetString("meta-folder")
if folder == "" {
folder, err = getProjectTypeFolder(*project.ProjectType, version.Loaders, pack.GetLoaders())
folder, err = getProjectTypeFolder(*project.ProjectType, version.Loaders, pack.GetCompatibleLoaders())
if err != nil {
return err
}
Expand Down
4 changes: 2 additions & 2 deletions modrinth/modrinth.go
Original file line number Diff line number Diff line change
Expand Up @@ -313,9 +313,9 @@ func getLatestVersion(projectID string, name string, pack core.Pack) (*modrinthA
}
var loaders []string
if viper.GetString("datapack-folder") != "" {
loaders = append(pack.GetLoaders(), withDatapackPathMRLoaders...)
loaders = append(pack.GetCompatibleLoaders(), withDatapackPathMRLoaders...)
} else {
loaders = append(pack.GetLoaders(), defaultMRLoaders...)
loaders = append(pack.GetCompatibleLoaders(), defaultMRLoaders...)
}

result, err := mrDefaultClient.Versions.ListVersions(projectID, modrinthApi.ListVersionsOptions{
Expand Down

0 comments on commit 4c23e26

Please sign in to comment.