From d2b2f2d09fd8cbe3f188c79a435f000722b69a0d Mon Sep 17 00:00:00 2001 From: torkus <48141663+ogri-la@users.noreply.github.com> Date: Tue, 7 May 2024 15:31:52 +0930 Subject: [PATCH] deps updated. adds cata support. linted. synchronises manage.sh --- .gitignore | 1 + go.mod | 18 +++++++--------- go.sum | 35 ++++++++++-------------------- main.go | 9 ++++---- main_test.go | 9 ++++---- manage.sh | 60 ++++++++++++++++++++++++++++++++++++++++++++-------- 6 files changed, 80 insertions(+), 52 deletions(-) diff --git a/.gitignore b/.gitignore index 52b25bf..52a9b7c 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,4 @@ linux-amd64.sha256 /*.zip tukui-mirror github-token +linux-* diff --git a/go.mod b/go.mod index cb0a48d..be426ab 100644 --- a/go.mod +++ b/go.mod @@ -1,20 +1,18 @@ module tukui-mirror -go 1.20 +go 1.21 + +toolchain go1.21.6 require ( github.com/google/go-github/v52 v52.0.0 - golang.org/x/oauth2 v0.8.0 + golang.org/x/oauth2 v0.20.0 ) require ( - github.com/ProtonMail/go-crypto v0.0.0-20230528122434-6f98819771a1 // indirect - github.com/cloudflare/circl v1.3.3 // indirect - github.com/golang/protobuf v1.5.3 // indirect + github.com/ProtonMail/go-crypto v1.0.0 // indirect + github.com/cloudflare/circl v1.3.8 // indirect github.com/google/go-querystring v1.1.0 // indirect - golang.org/x/crypto v0.9.0 // indirect - golang.org/x/net v0.10.0 // indirect - golang.org/x/sys v0.8.0 // indirect - google.golang.org/appengine v1.6.7 // indirect - google.golang.org/protobuf v1.30.0 // indirect + golang.org/x/crypto v0.23.0 // indirect + golang.org/x/sys v0.20.0 // indirect ) diff --git a/go.sum b/go.sum index 61e8fb6..01bf4b3 100644 --- a/go.sum +++ b/go.sum @@ -1,15 +1,12 @@ -github.com/ProtonMail/go-crypto v0.0.0-20230528122434-6f98819771a1 h1:JMDGhoQvXNTqH6Y3MC0IUw6tcZvaUdujNqzK2HYWZc8= -github.com/ProtonMail/go-crypto v0.0.0-20230528122434-6f98819771a1/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0= +github.com/ProtonMail/go-crypto v1.0.0 h1:LRuvITjQWX+WIfr930YHG2HNfjR1uOfyf5vE0kC2U78= +github.com/ProtonMail/go-crypto v1.0.0/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0= github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= -github.com/cloudflare/circl v1.3.3 h1:fE/Qz0QdIGqeWfnwq0RE0R7MI51s0M2E4Ga9kq5AEMs= github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA= -github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= -github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/cloudflare/circl v1.3.8 h1:j+V8jJt09PoeMFIu2uh5JUyEaIHTXVOHslFoLNAKqwI= +github.com/cloudflare/circl v1.3.8/go.mod h1:PDRU+oXvdD7KCtgKxW95M5Z8BpSCJXQORiZFnBQS5QU= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-github/v52 v52.0.0 h1:uyGWOY+jMQ8GVGSX8dkSwCzlehU3WfdxQ7GweO/JP7M= github.com/google/go-github/v52 v52.0.0/go.mod h1:WJV6VEEUPuMo5pXqqa2ZCZEdbQqua4zAk2MZTIo+m+4= github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= @@ -19,21 +16,18 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= -golang.org/x/crypto v0.9.0 h1:LF6fAI+IutBocDJ2OT0Q1g8plpYljMZ4+lty+dsqw3g= -golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0= +golang.org/x/crypto v0.23.0 h1:dIJU/v2J8Mdglj/8rJ6UUOM3Zc9zLZxVZwwxMooUSAI= +golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= -golang.org/x/net v0.10.0 h1:X2//UzNDwYmtCLn7To6G58Wr6f5ahEAQgKNzv9Y951M= -golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= -golang.org/x/oauth2 v0.8.0 h1:6dkIjl3j3LtZ/O3sTgZTMsLKSftL/B8Zgq4huOIIUu8= -golang.org/x/oauth2 v0.8.0/go.mod h1:yr7u4HXZRm1R1kBWqr/xKNqewf0plRYoB7sla+BCIXE= +golang.org/x/oauth2 v0.20.0 h1:4mQdhULixXKP1rwYBW0vAijoXnkTG0BLCDRzfe1idMo= +golang.org/x/oauth2 v0.20.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -46,15 +40,14 @@ golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.8.0 h1:EBmGv8NaZBZTWvrbjNoL6HVt+IVy3QDQpJs7VRIw3tU= -golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y= +golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= @@ -66,9 +59,3 @@ golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= -google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= -google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.30.0 h1:kPPoIgf3TsEvrm0PFe15JQ+570QVxYzEvvHqChK+cng= -google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= diff --git a/main.go b/main.go index dab7877..dd2e642 100644 --- a/main.go +++ b/main.go @@ -22,7 +22,7 @@ import ( "encoding/json" "errors" "fmt" - "io/ioutil" + "io" "net/http" "os" "os/exec" @@ -90,6 +90,7 @@ func patch_to_flavour(patch string) string { "1.": "classic", "2.": "bcc", "3.": "wrath", + "4.": "cata", }[patch[:2]] // "1.14.3" => "1." if !present { return "mainline" @@ -149,7 +150,7 @@ func (i TukuiMirror) fetch_addon_list() []Addon { panicOnErr(err, "fetching addon list") defer resp.Body.Close() - body_bytes, err := ioutil.ReadAll(resp.Body) + body_bytes, err := io.ReadAll(resp.Body) panicOnErr(err, "reading response body into a byte array") ensure(resp.StatusCode == 200, fmt.Sprintf("non-200 response fetching addon list (%d): %s", resp.StatusCode, string(body_bytes))) addon_list := []Addon{} @@ -176,9 +177,9 @@ func (app TukuiMirror) download_addon(addon Addon, output_path string) string { defer resp.Body.Close() ensure(resp.StatusCode == 200, "non-200 response downloading zip file") - zip_bytes, err := ioutil.ReadAll(resp.Body) + zip_bytes, err := io.ReadAll(resp.Body) panicOnErr(err, "reading bytes from response body") - err = ioutil.WriteFile(zip_output_path, zip_bytes, os.FileMode(int(0644))) + err = os.WriteFile(zip_output_path, zip_bytes, os.FileMode(int(0644))) panicOnErr(err, "writing bytes to zip file") stderr("wrote: " + zip_output_path) return zip_output_path diff --git a/main_test.go b/main_test.go index 88b0838..00a4d68 100644 --- a/main_test.go +++ b/main_test.go @@ -21,7 +21,6 @@ import ( "context" "encoding/json" "fmt" - "io/ioutil" "os" "golang.org/x/oauth2" @@ -40,7 +39,7 @@ type DummyMirror2 struct { } func _fetch_addon_list(fixture_path string) []Addon { - fixture, err := ioutil.ReadFile(fixture_path) + fixture, err := os.ReadFile(fixture_path) panicOnErr(err, "loading test fixture") var addon_list []Addon err = json.Unmarshal(fixture, &addon_list) @@ -80,8 +79,8 @@ func reset(token string) { script_path, err := os.Getwd() panicOnErr(err, "fetching the current working directory") addon_list := []Addon{ - Addon{Slug: "tukui-dummy"}, - Addon{Slug: "elvui-dummy"}, + {Slug: "tukui-dummy"}, + {Slug: "elvui-dummy"}, } for _, addon := range addon_list { // delete any Github releases. @@ -101,7 +100,7 @@ func reset(token string) { } // reset remote repository to initial commit, delete any local and remote tags - revision, _ := map[string]string{ + revision := map[string]string{ "tukui-dummy": "b0492cc", "elvui-dummy": "dc06d5f", }[addon.Slug] diff --git a/manage.sh b/manage.sh index 55779c4..6be2f32 100755 --- a/manage.sh +++ b/manage.sh @@ -2,13 +2,17 @@ set -e cmd="$1" +app="tukui-mirror" if test ! "$cmd"; then echo "command required." echo echo "available commands:" - echo " build build project" - echo " release build project for distribution" + # alphabetical order + echo " build build project" + echo " build.all build project, ignore cache" + echo " build.release build project for distribution" + echo " clean deletes all generated files" echo " test run project tests" echo " update-deps update project dependencies" exit 1 @@ -18,13 +22,25 @@ shift rest=$* if test "$cmd" = "build"; then + ./manage.sh clean # CGO_ENABLED=0 skips CGO and linking against glibc to build static binaries. # -v 'verbose' CGO_ENABLED=0 go build \ -v + echo "wrote $app" exit 0 -elif test "$cmd" = "release"; then +elif test "$cmd" = "build.all"; then + # CGO_ENABLED=0 skips CGO and linking against glibc to build static binaries. + # -a 'build all' + # -v 'verbose' + ./manage.sh clean + CGO_ENABLED=0 go build \ + -a \ + -v + exit 0 + +elif test "$cmd" = "build.release"; then # GOOS is 'Go OS' and is being explicit in which OS to build for. # CGO_ENABLED=0 skips CGO and linking against glibc to build static binaries. # ld -s is 'disable symbol table' @@ -32,18 +48,44 @@ elif test "$cmd" = "release"; then # -trimpath removes leading paths to source files # -v 'verbose' # -o 'output' - GOOS=linux CGO_ENABLED=0 go build \ - -ldflags="-s -w" \ + set -u + version="$1" # 1.0.0 + GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build \ + -ldflags "-s -w -X main.APP_VERSION=$version" \ -trimpath \ -v \ -o linux-amd64 + upx linux-amd64 sha256sum linux-amd64 > linux-amd64.sha256 - echo "---" - echo "wrote linux-amd64" - echo "wrote linux-amd64.sha256" + + GOOS=linux GOARCH=arm64 CGO_ENABLED=0 go build \ + -ldflags "-s -w -X main.APP_VERSION=$version" \ + -trimpath \ + -v \ + -o linux-arm64 + upx linux-arm64 + sha256sum linux-arm64 > linux-arm64.sha256 + echo --- + go version + echo --- + upx --version + echo --- + du -sh linux-a* + echo --- + echo "done" + exit 0 + +elif test "$cmd" = "clean"; then + # -f 'force' don't fail if file doesn't exist. + # -v 'verbose' print the name of the file that was deleted. + tbd=( + "main" "$app" # generated by 'build' + "linux-amd64" "linux-amd64.sha256 linux-arm64" "linux-arm64.sha256" # generated by 'release' + ) + rm -fv ${tbd[@]} exit 0 -elif test "$cmd" = "update-deps"; then +elif test "$cmd" = "deps.update"; then # -u 'update modules [...] to use newer minor or patch releases when available' go get -u go mod tidy