Matheus Sampaio Queiroga
adf49b7a95
Some checks failed
Finder / find (push) Failing after 50s
Signed-off-by: Matheus Sampaio Queiroga <srherobrine20@gmail.com>
86 lines
1.6 KiB
Go
86 lines
1.6 KiB
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
"encoding/json"
|
|
"fmt"
|
|
"log"
|
|
"os"
|
|
"strings"
|
|
"time"
|
|
|
|
"github.com/google/go-github/v61/github"
|
|
)
|
|
|
|
type PocketVersion struct {
|
|
Version string `json:"version"`
|
|
Release time.Time `json:"releaseTime"`
|
|
Pharfile string `json:"phar"`
|
|
}
|
|
|
|
type ArrayVersion []PocketVersion
|
|
func (w *ArrayVersion) Exist(version string) bool {
|
|
for _, v := range *w {
|
|
if v.Version == version {
|
|
return true
|
|
}
|
|
}
|
|
return false
|
|
}
|
|
|
|
func Finder() error {
|
|
versionsFile, err := os.Open("./versions.json")
|
|
if err != nil {
|
|
log.Fatalln(err)
|
|
}
|
|
|
|
defer versionsFile.Close()
|
|
var versions ArrayVersion
|
|
if err = json.NewDecoder(versionsFile).Decode(&versions); err != nil {
|
|
return err
|
|
}
|
|
versionsFile.Close()
|
|
|
|
list := github.ListOptions{PerPage: 100, Page: 0}
|
|
client := github.NewClient(nil)
|
|
releases, _, err := client.Repositories.ListReleases(context.TODO(), "pmmp", "PocketMine-MP", &list)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
if len(releases) == 0 {
|
|
return nil
|
|
}
|
|
|
|
for _, release := range releases {
|
|
for _, asset := range release.Assets {
|
|
fileUrl := *asset.BrowserDownloadURL
|
|
if strings.HasSuffix(fileUrl, ".phar") && !versions.Exist(*release.TagName) {
|
|
fmt.Println(*release.TagName)
|
|
versions = append(versions, PocketVersion{
|
|
Version: *release.TagName,
|
|
Release: release.CreatedAt.Time,
|
|
Pharfile: fileUrl,
|
|
})
|
|
break
|
|
}
|
|
}
|
|
}
|
|
|
|
versionsFile, err = os.Create("./versions.json")
|
|
if err != nil {
|
|
log.Fatalln(err)
|
|
}
|
|
defer versionsFile.Close()
|
|
js := json.NewEncoder(versionsFile)
|
|
js.SetIndent("", " ")
|
|
return js.Encode(&versions)
|
|
}
|
|
|
|
func main() {
|
|
err := Finder()
|
|
if err != nil {
|
|
log.Fatalln(err)
|
|
}
|
|
}
|