mirror of
https://github.com/packwiz/packwiz.git
synced 2025-04-19 13:06:30 +02:00
Update loader/mc versions from imported CF packs (fixes #70)
also refactored internal modloader handling!
This commit is contained in:
parent
b628e2762c
commit
96a2d5fdf6
51
cmd/init.go
51
cmd/init.go
@ -87,36 +87,22 @@ var initCmd = &cobra.Command{
|
|||||||
if len(modLoaderName) == 0 {
|
if len(modLoaderName) == 0 {
|
||||||
modLoaderName = strings.ToLower(initReadValue("Mod loader [fabric]: ", "fabric"))
|
modLoaderName = strings.ToLower(initReadValue("Mod loader [fabric]: ", "fabric"))
|
||||||
}
|
}
|
||||||
_, ok := core.ModLoaders[modLoaderName]
|
|
||||||
if modLoaderName != "none" && !ok {
|
|
||||||
fmt.Println("Given mod loader is not supported! Use \"none\" to specify no modloader, or to configure one manually.")
|
|
||||||
fmt.Print("The following mod loaders are supported: ")
|
|
||||||
keys := make([]string, len(core.ModLoaders))
|
|
||||||
i := 0
|
|
||||||
for k := range core.ModLoaders {
|
|
||||||
keys[i] = k
|
|
||||||
i++
|
|
||||||
}
|
|
||||||
fmt.Println(strings.Join(keys, ", "))
|
|
||||||
os.Exit(1)
|
|
||||||
}
|
|
||||||
|
|
||||||
|
loader, ok := core.ModLoaders[modLoaderName]
|
||||||
modLoaderVersions := make(map[string]string)
|
modLoaderVersions := make(map[string]string)
|
||||||
if modLoaderName != "none" {
|
if modLoaderName != "none" {
|
||||||
components := core.ModLoaders[modLoaderName]
|
if ok {
|
||||||
|
versions, latestVersion, err := loader.VersionListGetter(mcVersion)
|
||||||
for _, component := range components {
|
|
||||||
versions, latestVersion, err := component.VersionListGetter(mcVersion)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Printf("Error loading versions: %s\n", err)
|
fmt.Printf("Error loading versions: %s\n", err)
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
componentVersion := viper.GetString("init." + component.Name + "-version")
|
componentVersion := viper.GetString("init." + loader.Name + "-version")
|
||||||
if len(componentVersion) == 0 {
|
if len(componentVersion) == 0 {
|
||||||
if viper.GetBool("init." + component.Name + "-latest") {
|
if viper.GetBool("init." + loader.Name + "-latest") {
|
||||||
componentVersion = latestVersion
|
componentVersion = latestVersion
|
||||||
} else {
|
} else {
|
||||||
componentVersion = initReadValue(component.FriendlyName+" version ["+latestVersion+"]: ", latestVersion)
|
componentVersion = initReadValue(loader.FriendlyName+" version ["+latestVersion+"]: ", latestVersion)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
found := false
|
found := false
|
||||||
@ -127,10 +113,21 @@ var initCmd = &cobra.Command{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if !found {
|
if !found {
|
||||||
fmt.Println("Given " + component.FriendlyName + " version cannot be found!")
|
fmt.Println("Given " + loader.FriendlyName + " version cannot be found!")
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
modLoaderVersions[component.Name] = componentVersion
|
modLoaderVersions[loader.Name] = componentVersion
|
||||||
|
} else {
|
||||||
|
fmt.Println("Given mod loader is not supported! Use \"none\" to specify no modloader, or to configure one manually.")
|
||||||
|
fmt.Print("The following mod loaders are supported: ")
|
||||||
|
keys := make([]string, len(core.ModLoaders))
|
||||||
|
i := 0
|
||||||
|
for k := range core.ModLoaders {
|
||||||
|
keys[i] = k
|
||||||
|
i++
|
||||||
|
}
|
||||||
|
fmt.Println(strings.Join(keys, ", "))
|
||||||
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -223,12 +220,10 @@ func init() {
|
|||||||
|
|
||||||
// ok this is epic
|
// ok this is epic
|
||||||
for _, loader := range core.ModLoaders {
|
for _, loader := range core.ModLoaders {
|
||||||
for _, component := range loader {
|
initCmd.Flags().String(loader.Name+"-version", "", "The "+loader.FriendlyName+" version to use (omit to define interactively)")
|
||||||
initCmd.Flags().String(component.Name+"-version", "", "The "+component.FriendlyName+" version to use (omit to define interactively)")
|
_ = viper.BindPFlag("init."+loader.Name+"-version", initCmd.Flags().Lookup(loader.Name+"-version"))
|
||||||
_ = viper.BindPFlag("init."+component.Name+"-version", initCmd.Flags().Lookup(component.Name+"-version"))
|
initCmd.Flags().Bool(loader.Name+"-latest", false, "Automatically select the latest version of "+loader.FriendlyName)
|
||||||
initCmd.Flags().Bool(component.Name+"-latest", false, "Automatically select the latest version of "+component.FriendlyName)
|
_ = viper.BindPFlag("init."+loader.Name+"-latest", initCmd.Flags().Lookup(loader.Name+"-latest"))
|
||||||
_ = viper.BindPFlag("init."+component.Name+"-latest", initCmd.Flags().Lookup(component.Name+"-latest"))
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -27,33 +27,22 @@ type ModLoaderComponent struct {
|
|||||||
VersionListGetter func(mcVersion string) ([]string, string, error)
|
VersionListGetter func(mcVersion string) ([]string, string, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
var ModLoaders = map[string][]ModLoaderComponent{
|
var ModLoaders = map[string]ModLoaderComponent{
|
||||||
"fabric": {
|
"fabric": {
|
||||||
{
|
|
||||||
Name: "fabric",
|
|
||||||
FriendlyName: "Fabric loader",
|
|
||||||
VersionListGetter: FetchMavenVersionList("https://maven.fabricmc.net/net/fabricmc/fabric-loader/maven-metadata.xml"),
|
|
||||||
},
|
|
||||||
// There's no need to specify yarn version - yarn isn't used outside a dev environment, and intermediary corresponds to game version anyway
|
// There's no need to specify yarn version - yarn isn't used outside a dev environment, and intermediary corresponds to game version anyway
|
||||||
//{
|
Name: "fabric",
|
||||||
// Name: "yarn",
|
FriendlyName: "Fabric loader",
|
||||||
// FriendlyName: "Yarn (mappings)",
|
VersionListGetter: FetchMavenVersionList("https://maven.fabricmc.net/net/fabricmc/fabric-loader/maven-metadata.xml"),
|
||||||
// VersionListGetter: fetchMavenVersionPrefixedList("https://maven.fabricmc.net/net/fabricmc/yarn/maven-metadata.xml", "Yarn"),
|
|
||||||
//},
|
|
||||||
},
|
},
|
||||||
"forge": {
|
"forge": {
|
||||||
{
|
Name: "forge",
|
||||||
Name: "forge",
|
FriendlyName: "Forge",
|
||||||
FriendlyName: "Forge",
|
VersionListGetter: FetchMavenVersionPrefixedListStrip("https://files.minecraftforge.net/maven/net/minecraftforge/forge/maven-metadata.xml", "Forge"),
|
||||||
VersionListGetter: FetchMavenVersionPrefixedListStrip("https://files.minecraftforge.net/maven/net/minecraftforge/forge/maven-metadata.xml", "Forge"),
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
"liteloader": {
|
"liteloader": {
|
||||||
{
|
Name: "liteloader",
|
||||||
Name: "liteloader",
|
FriendlyName: "LiteLoader",
|
||||||
FriendlyName: "LiteLoader",
|
VersionListGetter: FetchMavenVersionPrefixedList("http://repo.mumfrey.com/content/repositories/snapshots/com/mumfrey/liteloader/maven-metadata.xml", "LiteLoader"),
|
||||||
VersionListGetter: FetchMavenVersionPrefixedList("http://repo.mumfrey.com/content/repositories/snapshots/com/mumfrey/liteloader/maven-metadata.xml", "LiteLoader"),
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -137,3 +126,15 @@ func hasPrefixSplitDash(str string, prefix string) bool {
|
|||||||
}
|
}
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func ComponentToFriendlyName(component string) string {
|
||||||
|
if component == "minecraft" {
|
||||||
|
return "Minecraft"
|
||||||
|
}
|
||||||
|
loader, ok := ModLoaders[component]
|
||||||
|
if ok {
|
||||||
|
return loader.FriendlyName
|
||||||
|
} else {
|
||||||
|
return component
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -166,6 +166,16 @@ var importCmd = &cobra.Command{
|
|||||||
},
|
},
|
||||||
Versions: packImport.Versions(),
|
Versions: packImport.Versions(),
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
for component, version := range packImport.Versions() {
|
||||||
|
packVersion, ok := pack.Versions[component]
|
||||||
|
if !ok {
|
||||||
|
fmt.Println("Set " + core.ComponentToFriendlyName(component) + " version to " + version)
|
||||||
|
} else if packVersion != version {
|
||||||
|
fmt.Println("Set " + core.ComponentToFriendlyName(component) + " version to " + version + " (previously " + version + ")")
|
||||||
|
}
|
||||||
|
pack.Versions[component] = version
|
||||||
|
}
|
||||||
}
|
}
|
||||||
index, err := pack.LoadIndex()
|
index, err := pack.LoadIndex()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user