mirror of
https://github.com/packwiz/packwiz.git
synced 2025-10-14 15:04:32 +02:00
Added author + pack version (#6)
* Added author + pack version * Remove unnecessary binary * Apply suggestions, clean up somewhat Co-authored-by: comp500 <comp500@users.noreply.github.com>
This commit is contained in:
@@ -346,3 +346,19 @@ func (u cfUpdater) DoUpdate(mods []*core.Mod, cachedState []interface{}) error {
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
type cfExportData struct {
|
||||
ProjectID int `mapstructure:"project-id"`
|
||||
}
|
||||
|
||||
func (e cfExportData) ToMap() (map[string]interface{}, error) {
|
||||
newMap := make(map[string]interface{})
|
||||
err := mapstructure.Decode(e, &newMap)
|
||||
return newMap, err
|
||||
}
|
||||
|
||||
func parseExportData(from map[string]interface{}) (cfExportData, error) {
|
||||
var exportData cfExportData
|
||||
err := mapstructure.Decode(from, &exportData)
|
||||
return exportData, err
|
||||
}
|
||||
|
@@ -19,8 +19,7 @@ import (
|
||||
var exportCmd = &cobra.Command{
|
||||
Use: "export",
|
||||
Short: "Export the current modpack into a .zip for curseforge",
|
||||
// TODO: arguments for file name, author? projectID?
|
||||
Args: cobra.NoArgs,
|
||||
Args: cobra.NoArgs,
|
||||
Run: func(cmd *cobra.Command, args []string) {
|
||||
side := viper.GetString("curseforge.export.side")
|
||||
if len(side) == 0 || (side != core.UniversalSide && side != core.ServerSide && side != core.ClientSide) {
|
||||
@@ -78,7 +77,19 @@ var exportCmd = &cobra.Command{
|
||||
}
|
||||
mods = mods[:i]
|
||||
|
||||
expFile, err := os.Create("export.zip")
|
||||
var exportData cfExportData
|
||||
exportDataUnparsed, ok := pack.Export["curseforge"]
|
||||
if ok {
|
||||
exportData, err = parseExportData(exportDataUnparsed)
|
||||
if err != nil {
|
||||
fmt.Printf("Failed to parse export metadata: %s\n", err.Error())
|
||||
os.Exit(1)
|
||||
}
|
||||
}
|
||||
|
||||
var fileName = pack.GetPackName() + ".zip"
|
||||
|
||||
expFile, err := os.Create(fileName)
|
||||
if err != nil {
|
||||
fmt.Printf("Failed to create zip: %s\n", err.Error())
|
||||
os.Exit(1)
|
||||
@@ -135,7 +146,7 @@ var exportCmd = &cobra.Command{
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
err = packinterop.WriteManifestFromPack(pack, cfFileRefs, manifestFile)
|
||||
err = packinterop.WriteManifestFromPack(pack, cfFileRefs, exportData.ProjectID, manifestFile)
|
||||
if err != nil {
|
||||
_ = exp.Close()
|
||||
_ = expFile.Close()
|
||||
@@ -188,7 +199,8 @@ var exportCmd = &cobra.Command{
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
fmt.Println("Modpack exported to export.zip!")
|
||||
fmt.Println("Modpack exported to " + fileName)
|
||||
fmt.Println("Make sure you remove this file before running packwiz refresh, or add it to .packwizignore")
|
||||
},
|
||||
}
|
||||
|
||||
|
@@ -69,7 +69,7 @@ type AddonFileReference struct {
|
||||
OptionalDisabled bool
|
||||
}
|
||||
|
||||
func WriteManifestFromPack(pack core.Pack, fileRefs []AddonFileReference, out io.Writer) error {
|
||||
func WriteManifestFromPack(pack core.Pack, fileRefs []AddonFileReference, projectID int, out io.Writer) error {
|
||||
files := make([]struct {
|
||||
ProjectID int `json:"projectID"`
|
||||
FileID int `json:"fileID"`
|
||||
@@ -103,9 +103,9 @@ func WriteManifestFromPack(pack core.Pack, fileRefs []AddonFileReference, out io
|
||||
ManifestType: "minecraftModpack",
|
||||
ManifestVersion: 1,
|
||||
NameInternal: pack.Name,
|
||||
Version: "", // TODO: store or take this?
|
||||
Author: "", // TODO: store or take this?
|
||||
ProjectID: 0, // TODO: store or take this?
|
||||
Version: pack.Version,
|
||||
Author: pack.Author,
|
||||
ProjectID: projectID,
|
||||
Files: files,
|
||||
Overrides: "overrides",
|
||||
}
|
||||
|
Reference in New Issue
Block a user