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 {
|
||||
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)
|
||||
if modLoaderName != "none" {
|
||||
components := core.ModLoaders[modLoaderName]
|
||||
|
||||
for _, component := range components {
|
||||
versions, latestVersion, err := component.VersionListGetter(mcVersion)
|
||||
if ok {
|
||||
versions, latestVersion, err := loader.VersionListGetter(mcVersion)
|
||||
if err != nil {
|
||||
fmt.Printf("Error loading versions: %s\n", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
componentVersion := viper.GetString("init." + component.Name + "-version")
|
||||
componentVersion := viper.GetString("init." + loader.Name + "-version")
|
||||
if len(componentVersion) == 0 {
|
||||
if viper.GetBool("init." + component.Name + "-latest") {
|
||||
if viper.GetBool("init." + loader.Name + "-latest") {
|
||||
componentVersion = latestVersion
|
||||
} else {
|
||||
componentVersion = initReadValue(component.FriendlyName+" version ["+latestVersion+"]: ", latestVersion)
|
||||
componentVersion = initReadValue(loader.FriendlyName+" version ["+latestVersion+"]: ", latestVersion)
|
||||
}
|
||||
}
|
||||
found := false
|
||||
@ -127,10 +113,21 @@ var initCmd = &cobra.Command{
|
||||
}
|
||||
}
|
||||
if !found {
|
||||
fmt.Println("Given " + component.FriendlyName + " version cannot be found!")
|
||||
fmt.Println("Given " + loader.FriendlyName + " version cannot be found!")
|
||||
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
|
||||
for _, loader := range core.ModLoaders {
|
||||
for _, component := range loader {
|
||||
initCmd.Flags().String(component.Name+"-version", "", "The "+component.FriendlyName+" version to use (omit to define interactively)")
|
||||
_ = viper.BindPFlag("init."+component.Name+"-version", initCmd.Flags().Lookup(component.Name+"-version"))
|
||||
initCmd.Flags().Bool(component.Name+"-latest", false, "Automatically select the latest version of "+component.FriendlyName)
|
||||
_ = viper.BindPFlag("init."+component.Name+"-latest", initCmd.Flags().Lookup(component.Name+"-latest"))
|
||||
}
|
||||
initCmd.Flags().String(loader.Name+"-version", "", "The "+loader.FriendlyName+" version to use (omit to define interactively)")
|
||||
_ = viper.BindPFlag("init."+loader.Name+"-version", initCmd.Flags().Lookup(loader.Name+"-version"))
|
||||
initCmd.Flags().Bool(loader.Name+"-latest", false, "Automatically select the latest version of "+loader.FriendlyName)
|
||||
_ = viper.BindPFlag("init."+loader.Name+"-latest", initCmd.Flags().Lookup(loader.Name+"-latest"))
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -27,33 +27,22 @@ type ModLoaderComponent struct {
|
||||
VersionListGetter func(mcVersion string) ([]string, string, error)
|
||||
}
|
||||
|
||||
var ModLoaders = map[string][]ModLoaderComponent{
|
||||
var ModLoaders = map[string]ModLoaderComponent{
|
||||
"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
|
||||
//{
|
||||
// Name: "yarn",
|
||||
// FriendlyName: "Yarn (mappings)",
|
||||
// VersionListGetter: fetchMavenVersionPrefixedList("https://maven.fabricmc.net/net/fabricmc/yarn/maven-metadata.xml", "Yarn"),
|
||||
//},
|
||||
Name: "fabric",
|
||||
FriendlyName: "Fabric loader",
|
||||
VersionListGetter: FetchMavenVersionList("https://maven.fabricmc.net/net/fabricmc/fabric-loader/maven-metadata.xml"),
|
||||
},
|
||||
"forge": {
|
||||
{
|
||||
Name: "forge",
|
||||
FriendlyName: "Forge",
|
||||
VersionListGetter: FetchMavenVersionPrefixedListStrip("https://files.minecraftforge.net/maven/net/minecraftforge/forge/maven-metadata.xml", "Forge"),
|
||||
},
|
||||
Name: "forge",
|
||||
FriendlyName: "Forge",
|
||||
VersionListGetter: FetchMavenVersionPrefixedListStrip("https://files.minecraftforge.net/maven/net/minecraftforge/forge/maven-metadata.xml", "Forge"),
|
||||
},
|
||||
"liteloader": {
|
||||
{
|
||||
Name: "liteloader",
|
||||
FriendlyName: "LiteLoader",
|
||||
VersionListGetter: FetchMavenVersionPrefixedList("http://repo.mumfrey.com/content/repositories/snapshots/com/mumfrey/liteloader/maven-metadata.xml", "LiteLoader"),
|
||||
},
|
||||
Name: "liteloader",
|
||||
FriendlyName: "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
|
||||
}
|
||||
|
||||
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(),
|
||||
}
|
||||
} 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()
|
||||
if err != nil {
|
||||
|
Loading…
x
Reference in New Issue
Block a user