diff --git a/build.py b/build.py index 3a93ff6..b8c49fc 100644 --- a/build.py +++ b/build.py @@ -26,9 +26,13 @@ PLATFORMS = [ ] platform_filter = "" +arch_filter = "" if len(sys.argv) > 1: platform_filter = sys.argv[1] +if len(sys.argv) > 2: + arch_filter = sys.argv[2] + if os.path.exists("./tmp"): shutil.rmtree("./tmp") os.mkdir("./tmp") @@ -44,6 +48,9 @@ os.mkdir("./updates") for (platform_name, archs, ext) in PLATFORMS: if platform_filter and platform_filter != platform_name: continue + archs = [a for a in archs if arch_filter == "" or a == arch_filter] + if len(archs) == 0: + continue for GUI in [False, True]: print(f"Building {platform_name} gui: {GUI}") SUB1 = '-gui' if GUI else '' diff --git a/utils/updater.go b/utils/updater.go index 5f71f94..64cdd27 100644 --- a/utils/updater.go +++ b/utils/updater.go @@ -1,6 +1,12 @@ package utils import ( + "fmt" + "io" + "net/http" + "os" + "runtime" + "github.com/sanbornm/go-selfupdate/selfupdate" ) @@ -9,10 +15,36 @@ var CmdName = "bedrocktool" const updateServer = "https://updates.yuv.pink/" +type trequester struct { + selfupdate.Requester +} + +func (httpRequester *trequester) Fetch(url string) (io.ReadCloser, error) { + req, err := http.NewRequest("GET", url, nil) + if err != nil { + return nil, err + } + // set user agent to know what versions are run + h, _ := os.Hostname() + req.Header.Add("User-Agent", fmt.Sprintf("%s %s '%s' %d", CmdName, Version, h, runtime.NumCPU())) + + resp, err := http.DefaultClient.Do(req) + if err != nil { + return nil, err + } + + if resp.StatusCode != 200 { + return nil, fmt.Errorf("bad http status from %s: %v", url, resp.Status) + } + + return resp.Body, nil +} + var Updater = &selfupdate.Updater{ CurrentVersion: Version, ApiURL: updateServer, BinURL: updateServer, Dir: "update/", CmdName: CmdName, + Requester: &trequester{}, }