mirror of
https://github.com/packwiz/packwiz.git
synced 2025-04-18 20:46:30 +02:00
feat: add branch support for github mods
This commit is contained in:
parent
cb9550f4a6
commit
5c07741447
@ -45,7 +45,7 @@ type ModReleases struct {
|
||||
} `json:"author"`
|
||||
NodeID string `json:"node_id"`
|
||||
TagName string `json:"tag_name"`
|
||||
TargetCommitish string `json:"target_commitish"`
|
||||
TargetCommitish string `json:"target_commitish"` // The branch of the release
|
||||
Name string `json:"name"`
|
||||
Draft bool `json:"draft"`
|
||||
Prerelease bool `json:"prerelease"`
|
||||
|
@ -8,7 +8,6 @@ import (
|
||||
"net/http"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"regexp"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
@ -18,9 +17,6 @@ import (
|
||||
"github.com/spf13/viper"
|
||||
)
|
||||
|
||||
var modSiteRegex = regexp.MustCompile("modrinth\\.com/mod/([^/]+)/?$")
|
||||
var versionSiteRegex = regexp.MustCompile("modrinth\\.com/mod/([^/]+)/version/([^/]+)/?$")
|
||||
|
||||
// installCmd represents the install command
|
||||
var installCmd = &cobra.Command{
|
||||
Use: "install [mod]",
|
||||
@ -134,7 +130,7 @@ func fetchMod(slug string) (Mod, error) {
|
||||
func installMod(mod Mod, pack core.Pack) error {
|
||||
fmt.Printf("Found mod %s: '%s'.\n", mod.Title, mod.Description)
|
||||
|
||||
latestVersion, err := getLatestVersion(mod.Slug, pack)
|
||||
latestVersion, err := getLatestVersion(mod.Slug, pack, "")
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to get latest version: %v", err)
|
||||
}
|
||||
@ -145,7 +141,7 @@ func installMod(mod Mod, pack core.Pack) error {
|
||||
return installVersion(mod, latestVersion, pack)
|
||||
}
|
||||
|
||||
func getLatestVersion(slug string, pack core.Pack) (ModReleases, error) {
|
||||
func getLatestVersion(slug string, pack core.Pack, branch string) (ModReleases, error) {
|
||||
var modReleases []ModReleases
|
||||
var release ModReleases
|
||||
|
||||
@ -171,6 +167,11 @@ func getLatestVersion(slug string, pack core.Pack) (ModReleases, error) {
|
||||
if err != nil {
|
||||
return release, err
|
||||
}
|
||||
for _, r := range modReleases {
|
||||
if r.TargetCommitish == branch {
|
||||
return r, nil
|
||||
}
|
||||
}
|
||||
|
||||
return modReleases[0], nil
|
||||
}
|
||||
@ -200,8 +201,9 @@ func installVersion(mod Mod, version ModReleases, pack core.Pack) error {
|
||||
updateMap := make(map[string]map[string]interface{})
|
||||
|
||||
updateMap["github"], err = ghUpdateData{
|
||||
ModID: mod.ID,
|
||||
ModID: mod.Slug,
|
||||
InstalledVersion: version.TagName,
|
||||
Branch: version.TargetCommitish,
|
||||
}.ToMap()
|
||||
if err != nil {
|
||||
return err
|
||||
|
@ -12,6 +12,7 @@ import (
|
||||
type ghUpdateData struct {
|
||||
ModID string `mapstructure:"mod-id"` // The slug of the repo but named modId for consistency reasons
|
||||
InstalledVersion string `mapstructure:"version"`
|
||||
Branch string `mapstructure:"branch"`
|
||||
}
|
||||
|
||||
type ghUpdater struct{}
|
||||
@ -31,7 +32,7 @@ func (u ghUpdater) CheckUpdate(mods []core.Mod, mcVersion string, pack core.Pack
|
||||
results := make([]core.UpdateCheck, len(mods))
|
||||
|
||||
for i, mod := range mods {
|
||||
rawData, ok := mod.GetParsedUpdateData("modrinth")
|
||||
rawData, ok := mod.GetParsedUpdateData("github")
|
||||
if !ok {
|
||||
results[i] = core.UpdateCheck{Error: errors.New("couldn't parse mod data")}
|
||||
continue
|
||||
@ -39,7 +40,7 @@ func (u ghUpdater) CheckUpdate(mods []core.Mod, mcVersion string, pack core.Pack
|
||||
|
||||
data := rawData.(ghUpdateData)
|
||||
|
||||
newVersion, err := getLatestVersion(data.ModID, pack)
|
||||
newVersion, err := getLatestVersion(data.ModID, pack, data.Branch)
|
||||
if err != nil {
|
||||
results[i] = core.UpdateCheck{Error: fmt.Errorf("failed to get latest version: %v", err)}
|
||||
continue
|
||||
@ -90,7 +91,7 @@ func (u ghUpdater) DoUpdate(mods []*core.Mod, cachedState []interface{}) error {
|
||||
HashFormat: "sha256",
|
||||
Hash: hash,
|
||||
}
|
||||
mod.Update["modrinth"]["version"] = version.ID
|
||||
mod.Update["github"]["version"] = version.ID
|
||||
}
|
||||
|
||||
return nil
|
||||
|
Loading…
x
Reference in New Issue
Block a user