Pocketmine-Cache/main.go
Matheus Sampaio Queiroga adf49b7a95
Some checks failed
Finder / find (push) Failing after 50s
Initial commit
Signed-off-by: Matheus Sampaio Queiroga <srherobrine20@gmail.com>
2024-04-10 22:52:44 -03:00

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)
}
}