mirror of
https://github.com/packwiz/packwiz.git
synced 2025-04-19 21:16:30 +02:00
It Actually Works!!!
This commit is contained in:
parent
fa2f7e499e
commit
25747ad8bd
@ -89,14 +89,13 @@ func getModIDFromString(mod string) (bool, int, error) {
|
|||||||
return false, 0, nil
|
return false, 0, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func createModFile(flags core.Flags, modID int, fileID int, modInfo modInfo) error {
|
func createModFile(flags core.Flags, modInfo modInfo, fileInfo modFileInfo) error {
|
||||||
fileInfo, err := getFileInfo(modID, fileID)
|
|
||||||
|
|
||||||
updateMap := make(map[string]map[string]interface{})
|
updateMap := make(map[string]map[string]interface{})
|
||||||
|
var err error
|
||||||
|
|
||||||
updateMap["curseforge"], err = cfUpdater{
|
updateMap["curseforge"], err = cfUpdater{
|
||||||
ProjectID: modID,
|
ProjectID: modInfo.ID,
|
||||||
FileID: fileID,
|
FileID: fileInfo.ID,
|
||||||
// TODO: determine update channel
|
// TODO: determine update channel
|
||||||
ReleaseChannel: "release",
|
ReleaseChannel: "release",
|
||||||
}.ToMap()
|
}.ToMap()
|
||||||
@ -121,6 +120,7 @@ func createModFile(flags core.Flags, modID int, fileID int, modInfo modInfo) err
|
|||||||
fmt.Printf("%#v\n", modMeta)
|
fmt.Printf("%#v\n", modMeta)
|
||||||
|
|
||||||
// TODO: what to do if it already exists?
|
// TODO: what to do if it already exists?
|
||||||
|
// TODO: add to index
|
||||||
return modMeta.Write()
|
return modMeta.Write()
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -172,15 +172,29 @@ func cmdInstall(flags core.Flags, mod string, modArgsTail []string) error {
|
|||||||
|
|
||||||
fmt.Println(mcVersion)
|
fmt.Println(mcVersion)
|
||||||
modInfo, err := getModInfo(modID)
|
modInfo, err := getModInfo(modID)
|
||||||
fmt.Println(err)
|
if err != nil {
|
||||||
|
return cli.NewExitError(err, 1)
|
||||||
|
}
|
||||||
|
|
||||||
fmt.Println(modInfo)
|
fmt.Println(modInfo)
|
||||||
_ = index
|
_ = index
|
||||||
|
|
||||||
if fileID == 0 {
|
if fileID == 0 {
|
||||||
|
fmt.Println("WIP: get an actual file ID!!!")
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
return createModFile(flags, modID, fileID, modInfo)
|
fileInfo, err := getFileInfo(modID, fileID)
|
||||||
|
if err != nil {
|
||||||
|
return cli.NewExitError(err, 1)
|
||||||
|
}
|
||||||
|
|
||||||
|
err = createModFile(flags, modInfo, fileInfo)
|
||||||
|
if err != nil {
|
||||||
|
return cli.NewExitError(err, 1)
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
type cfUpdateParser struct{}
|
type cfUpdateParser struct{}
|
||||||
|
@ -1,5 +1,12 @@
|
|||||||
package curseforge
|
package curseforge
|
||||||
import "github.com/comp500/packwiz/core"
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
|
|
||||||
|
"github.com/comp500/packwiz/core"
|
||||||
|
"github.com/urfave/cli"
|
||||||
|
)
|
||||||
|
|
||||||
type twitchPackMeta struct {
|
type twitchPackMeta struct {
|
||||||
Name string `json:"name"`
|
Name string `json:"name"`
|
||||||
@ -14,14 +21,59 @@ type twitchPackMeta struct {
|
|||||||
Mods []struct {
|
Mods []struct {
|
||||||
ID int `json:"addonID"`
|
ID int `json:"addonID"`
|
||||||
File struct {
|
File struct {
|
||||||
// TODO: this is exactly the same as fileInfo, but with capitalised
|
// This is exactly the same as modFileInfo, but with capitalised
|
||||||
// FileNameOnDisk. Move requesting stuff out of createModFile?
|
// FileNameOnDisk.
|
||||||
|
ID int `json:"id"`
|
||||||
|
FileName string `json:"FileNameOnDisk"`
|
||||||
|
FriendlyName string `json:"fileName"`
|
||||||
|
Date cfDateFormat `json:"fileDate"`
|
||||||
|
Length int `json:"fileLength"`
|
||||||
|
FileType int `json:"releaseType"`
|
||||||
|
// fileStatus? means latest/preferred?
|
||||||
|
DownloadURL string `json:"downloadUrl"`
|
||||||
|
GameVersions []string `json:"gameVersion"`
|
||||||
|
Fingerprint int `json:"packageFingerprint"`
|
||||||
|
Dependencies []struct {
|
||||||
|
ModID int `json:"addonId"`
|
||||||
|
Type int `json:"type"`
|
||||||
|
} `json:"dependencies"`
|
||||||
} `json:"installedFile"`
|
} `json:"installedFile"`
|
||||||
} `json:"installedAddons"`
|
} `json:"installedAddons"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func cmdImport(flags core.Flags, file string) error {
|
func cmdImport(flags core.Flags, file string) error {
|
||||||
// TODO: implement
|
// TODO: implement
|
||||||
|
var packMeta twitchPackMeta
|
||||||
|
// TODO: is this relative to something?
|
||||||
|
f, err := os.Open(file)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
err = json.NewDecoder(f).Decode(&packMeta)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: magic involving existing files
|
||||||
|
|
||||||
|
for _, v := range packMeta.Mods {
|
||||||
|
// TODO: progress bar?
|
||||||
|
|
||||||
|
// TODO: batch requests?
|
||||||
|
modInfo, err := getModInfo(v.ID)
|
||||||
|
if err != nil {
|
||||||
|
// TODO: Fail more quietly?
|
||||||
|
return cli.NewExitError(err, 1)
|
||||||
|
}
|
||||||
|
fmt.Println(v)
|
||||||
|
fmt.Println(modFileInfo(v.File))
|
||||||
|
|
||||||
|
err = createModFile(flags, modInfo, modFileInfo(v.File))
|
||||||
|
if err != nil {
|
||||||
|
return cli.NewExitError(err, 1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -153,14 +153,18 @@ type cfDateFormat struct {
|
|||||||
time.Time
|
time.Time
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Curse switched to proper RFC3339, but previously downloaded metadata still uses the old format :(
|
||||||
func (f *cfDateFormat) UnmarshalJSON(input []byte) error {
|
func (f *cfDateFormat) UnmarshalJSON(input []byte) error {
|
||||||
trimmed := strings.Trim(string(input), `"`)
|
trimmed := strings.Trim(string(input), `"`)
|
||||||
time, err := time.Parse(cfDateFormatString, trimmed)
|
timeValue, err := time.Parse(time.RFC3339Nano, trimmed)
|
||||||
|
if err != nil {
|
||||||
|
timeValue, err = time.Parse(cfDateFormatString, trimmed)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
f.Time = time
|
f.Time = timeValue
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user