From bf9b0cd1f136b6ad43a5b977c97dbdb1effa3964 Mon Sep 17 00:00:00 2001 From: Paul Hendryx Date: Mon, 15 May 2023 22:10:45 -0400 Subject: [PATCH] go mod repo updates, new/modified build scripts, misc fixes --- .circleci/config.yml | 105 ------------------ .github/FUNDING.yml | 8 -- .github/windowsbuild.yaml | 22 ++++ .github/workflows/main.yml | 68 +++++++++++- .github/workflows/test-build.yml | 75 ++++++++++++- .github/workflows/windowsbuild.yml | 33 ++++++ albiondata-client.go | 13 ++- client/albion_state.go | 6 +- client/albion_watcher.go | 2 +- client/client.go | 2 +- client/config.go | 11 +- client/decode.go | 4 +- client/dispatcher.go | 4 +- client/event_player_online_status.go | 4 +- client/event_skill_data.go | 4 +- client/listener.go | 4 +- client/offline.go | 2 +- ...peration_auction_get_item_average_stats.go | 4 +- client/operation_auction_get_offers.go | 4 +- client/operation_auction_get_requests.go | 4 +- client/operation_get_cluster_map_info.go | 4 +- .../operation_get_game_server_by_cluster.go | 2 +- client/operation_get_mail_infos.go | 2 +- .../operation_gold_market_get_average_info.go | 4 +- client/operation_join.go | 4 +- client/operation_read_mail.go | 4 +- .../operation_real_estate_bid_on_auction.go | 2 +- .../operation_real_estate_get_auction_data.go | 2 +- client/router.go | 4 +- client/uploader_http.go | 2 +- client/uploader_http_pow.go | 2 +- client/uploader_nats.go | 2 +- go.mod | 9 +- go.sum | 69 +++++------- icon/albiondata-client.png | Bin 0 -> 57703 bytes notification/notification_win.go | 2 +- pkg/nsis/Makefile | 2 +- scripts/build-linux.sh | 8 +- scripts/build-windows.sh | 51 ++++----- systray/systray_win.go | 4 +- winres/winres.json | 61 ++++++++++ 41 files changed, 377 insertions(+), 242 deletions(-) delete mode 100644 .circleci/config.yml delete mode 100644 .github/FUNDING.yml create mode 100644 .github/windowsbuild.yaml create mode 100644 .github/workflows/windowsbuild.yml create mode 100644 icon/albiondata-client.png create mode 100644 winres/winres.json diff --git a/.circleci/config.yml b/.circleci/config.yml deleted file mode 100644 index a0aa2ad..0000000 --- a/.circleci/config.yml +++ /dev/null @@ -1,105 +0,0 @@ -version: 2 -jobs: - test: - working_directory: /go/src/github.com/broderickhyman/albiondata-client - docker: - - image: circleci/golang:1.16 - steps: - - checkout - - run: go get golang.org/x/tools/cmd/goimports - - run: make validate-fmt - build_windows: - working_directory: /go/src/github.com/broderickhyman/albiondata-client - docker: - - image: broderickhyman/mingw-golang - steps: - - checkout - - run: make build-windows - - store_artifacts: - path: /go/src/github.com/broderickhyman/albiondata-client/update-windows-amd64.exe.gz - destination: update-windows-amd64.exe.gz - - store_artifacts: - path: /go/src/github.com/broderickhyman/albiondata-client/albiondata-client-amd64-installer.exe - destination: albiondata-client-amd64-installer.exe - - persist_to_workspace: - root: /go/src/github.com/broderickhyman/albiondata-client - paths: - - update-windows-amd64.exe.gz - - albiondata-client-amd64-installer.exe - build_linux: - working_directory: /go/src/github.com/broderickhyman/albiondata-client - docker: - - image: circleci/golang:1.16 - steps: - - checkout - - run: make build-linux - - store_artifacts: - path: /go/src/github.com/broderickhyman/albiondata-client/update-linux-amd64.gz - destination: update-linux-amd64.gz - - persist_to_workspace: - root: /go/src/github.com/broderickhyman/albiondata-client - paths: - - update-linux-amd64.gz - build_darwin: - working_directory: /go/src/github.com/broderickhyman/albiondata-client - docker: - - image: broderickhyman/crossbuild-golang - steps: - - checkout - - run: make build-darwin - - store_artifacts: - path: /go/src/github.com/broderickhyman/albiondata-client/update-darwin-amd64.gz - destination: update-darwin-amd64.gz - - store_artifacts: - path: /go/src/github.com/broderickhyman/albiondata-client/albiondata-client-amd64-mac.zip - destination: albiondata-client-amd64-mac.zip - - persist_to_workspace: - root: /go/src/github.com/broderickhyman/albiondata-client - paths: - - update-darwin-amd64.gz - - albiondata-client-amd64-mac.zip - deploy: - working_directory: /tmp/workspace - docker: - - image: circleci/golang:1.17 - steps: - - attach_workspace: - at: /tmp/workspace - - run: go get github.com/tcnksm/ghr - - run: ghr -t $GITHUB_TOKEN -u broderickhyman -r albiondata-client $CIRCLE_TAG /tmp/workspace -workflows: - version: 2 - test_build_release: - jobs: - - test: - filters: - tags: - only: /.*/ - - build_windows: - requires: - - test - filters: - tags: - only: /.*/ - - build_linux: - requires: - - test - filters: - tags: - only: /.*/ - - build_darwin: - requires: - - test - filters: - tags: - only: /.*/ - - deploy: - requires: - - build_windows - - build_linux - - build_darwin - filters: - tags: - only: /^\d+\.\d+\.\d+$/ - branches: - ignore: /.*/ diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml deleted file mode 100644 index 974605f..0000000 --- a/.github/FUNDING.yml +++ /dev/null @@ -1,8 +0,0 @@ -# These are supported funding model platforms - -github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] -patreon: broderickhyman -open_collective: # Replace with a single Open Collective username -ko_fi: broderickhyman -tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel -custom: # Replace with a single custom sponsorship URL diff --git a/.github/windowsbuild.yaml b/.github/windowsbuild.yaml new file mode 100644 index 0000000..7befcff --- /dev/null +++ b/.github/windowsbuild.yaml @@ -0,0 +1,22 @@ +on: + workflow_dispatch: + +jobs: + build-windows: + name: Build Windows Client + runs-on: windows-latest + steps: + - uses: actions/checkout@v3 + - name: Set up Go + uses: actions/setup-go@v3 + with: + go-version: 1.16 + + # - uses: shogo82148/actions-upload-release-asset@v1 + # with: + # upload_url: ${{ github.event.release.upload_url }} + # asset_path: update-linux-amd64.gz + - name: Create installer + uses: joncloud/makensis-action@v4 + # with: + # arguments: "/V3" diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index f32e995..64494ec 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -20,6 +20,7 @@ jobs: with: upload_url: ${{ github.event.release.upload_url }} asset_path: update-linux-amd64.gz + build-windows: name: Build Windows Client runs-on: ubuntu-latest @@ -29,23 +30,84 @@ jobs: uses: actions/setup-go@v3 with: go-version: 1.16 - - name: Build + + - name: install nsis + run: sudo apt-get update; sudo apt-get -y install nsis + + - name: Make run: make build-windows + + - uses: actions/upload-artifact@v3 + if: ${{ env.ACT }} + with: + name: files + path: albiondata-client.exe + + - uses: actions/upload-artifact@v3 + if: ${{ env.ACT }} + with: + name: files + path: update-windows-amd64.exe.gz + + - uses: actions/upload-artifact@v3 + if: ${{ env.ACT }} + with: + name: files + path: albiondata-client-amd64-installer.exe + - uses: shogo82148/actions-upload-release-asset@v1 + if: ${{ !env.ACT }} with: upload_url: ${{ github.event.release.upload_url }} asset_path: update-windows-amd64.exe.gz + - uses: shogo82148/actions-upload-release-asset@v1 + if: ${{ !env.ACT }} with: upload_url: ${{ github.event.release.upload_url }} asset_path: albiondata-client-amd64-installer.exe + build-darwin: name: Build MacOS Client - runs-on: ubuntu-latest + runs-on: macos-13 steps: - uses: actions/checkout@v3 + + - name: Set up Go + uses: actions/setup-go@v3 + with: + go-version: 1.19 + - name: Build - run: ./scripts/build-and-copy-darwin.sh + run: go build -ldflags "-s -w -X main.version=$GITHUB_REF_NAME" albiondata-client.go + + - name: ls + run: ls -la + + - name: gzip + run: gzip -k9 albiondata-client + + - name: mv + run: mv albiondata-client.gz update-darwin-amd64.gz + + - name: package + run: | + TEMP="albiondata-client" + ZIPNAME="albiondata-client-amd64-mac.zip" + rm -rfv ./scripts/$TEMP + rm -rfv ./$ZIPNAME + rm -rfv ./scripts/update-darwin-amd64.zip + mkdir -v ./scripts/$TEMP + cp -v albiondata-client ./scripts/$TEMP/albiondata-client-executable + cd scripts + cp -v run.command ./$TEMP/run.command + # chown -Rv ${USER}:${USER} ./$TEMP + chmod -v 777 ./$TEMP/* + zip -v ../$ZIPNAME -r ./"$TEMP" + + - name: ls + run: ls -la + - uses: shogo82148/actions-upload-release-asset@v1 with: upload_url: ${{ github.event.release.upload_url }} diff --git a/.github/workflows/test-build.yml b/.github/workflows/test-build.yml index 6cfe4c9..9836588 100644 --- a/.github/workflows/test-build.yml +++ b/.github/workflows/test-build.yml @@ -14,6 +14,19 @@ jobs: go-version: 1.16 - name: Build run: make build-linux + + - uses: actions/upload-artifact@v3 + if: ${{ env.ACT }} + with: + name: files + path: albiondata-client + + - uses: actions/upload-artifact@v3 + if: ${{ env.ACT }} + with: + name: files + path: update-linux-amd64.gz + build-windows: name: Build Windows Client runs-on: ubuntu-latest @@ -23,12 +36,68 @@ jobs: uses: actions/setup-go@v3 with: go-version: 1.16 - - name: Build + + - name: install nsis + run: sudo apt-get update; sudo apt-get -y install nsis + + - name: Make run: make build-windows + + - uses: actions/upload-artifact@v3 + if: ${{ env.ACT }} + with: + name: files + path: albiondata-client.exe + + - uses: actions/upload-artifact@v3 + if: ${{ env.ACT }} + with: + name: files + path: update-windows-amd64.exe.gz + + - uses: actions/upload-artifact@v3 + if: ${{ env.ACT }} + with: + name: files + path: albiondata-client-amd64-installer.exe + build-darwin: name: Build MacOS Client - runs-on: ubuntu-latest + runs-on: macos-13 steps: - uses: actions/checkout@v3 + + - name: Set up Go + uses: actions/setup-go@v3 + with: + go-version: 1.19 + - name: Build - run: ./scripts/build-and-copy-darwin.sh + run: go build -ldflags "-s -w -X main.version=$GITHUB_REF_NAME" albiondata-client.go + + - name: ls + run: ls -la + + - name: gzip + run: gzip -k9 albiondata-client + + - name: mv + run: mv albiondata-client.gz update-darwin-amd64.gz + + - name: package + run: | + TEMP="albiondata-client" + ZIPNAME="albiondata-client-amd64-mac.zip" + rm -rfv ./scripts/$TEMP + rm -rfv ./$ZIPNAME + rm -rfv ./scripts/update-darwin-amd64.zip + mkdir -v ./scripts/$TEMP + cp -v albiondata-client ./scripts/$TEMP/albiondata-client-executable + cd scripts + cp -v run.command ./$TEMP/run.command + # chown -Rv ${USER}:${USER} ./$TEMP + chmod -v 777 ./$TEMP/* + zip -v ../$ZIPNAME -r ./"$TEMP" + + - name: ls + run: ls -la diff --git a/.github/workflows/windowsbuild.yml b/.github/workflows/windowsbuild.yml new file mode 100644 index 0000000..dfe9ea9 --- /dev/null +++ b/.github/workflows/windowsbuild.yml @@ -0,0 +1,33 @@ +name: Test Build +on: + workflow_dispatch: + inputs: + noop: + description: 'Dry run? true/false' +jobs: + build-windows: + name: Build Windows Client + # runs-on: windows-latest + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Set up Go + uses: actions/setup-go@v3 + with: + go-version: 1.16 + + # - uses: shogo82148/actions-upload-release-asset@v1 + # with: + # upload_url: ${{ github.event.release.upload_url }} + # asset_path: update-linux-amd64.gz + # - name: Create installer + # uses: joncloud/makensis-action@v4 + # with: + # # arguments: "script-file" + # script-file: "pkg/nsis/albiondata-client.nsi" + - name: Install nsis + run: sudo apt-get -y install nsis + - name: Make Installer + run: cd pkg/nsis;make nsis + + \ No newline at end of file diff --git a/albiondata-client.go b/albiondata-client.go index 77ceeab..04cce6a 100644 --- a/albiondata-client.go +++ b/albiondata-client.go @@ -5,11 +5,11 @@ import ( "strings" "time" - "github.com/broderickhyman/albiondata-client/client" - "github.com/broderickhyman/albiondata-client/log" - "github.com/broderickhyman/albiondata-client/systray" + "github.com/ao-data/albiondata-client/client" + "github.com/ao-data/albiondata-client/log" + "github.com/ao-data/albiondata-client/systray" - "github.com/broderickhyman/go-githubupdate/updater" + "github.com/ao-data/go-githubupdate/updater" ) var version string @@ -19,6 +19,11 @@ func init() { } func main() { + if client.ConfigGlobal.PrintVersion { + log.Infof("Albion Data Client, version: %s", version) + return + } + startUpdater() go systray.Run() diff --git a/client/albion_state.go b/client/albion_state.go index cdad7b2..7f847ba 100644 --- a/client/albion_state.go +++ b/client/albion_state.go @@ -1,9 +1,9 @@ package client import ( - "github.com/broderickhyman/albiondata-client/lib" - "github.com/broderickhyman/albiondata-client/log" - "github.com/broderickhyman/albiondata-client/notification" + "github.com/ao-data/albiondata-client/lib" + "github.com/ao-data/albiondata-client/log" + "github.com/ao-data/albiondata-client/notification" "strings" ) diff --git a/client/albion_watcher.go b/client/albion_watcher.go index 02b93f8..0386c29 100644 --- a/client/albion_watcher.go +++ b/client/albion_watcher.go @@ -3,7 +3,7 @@ package client import ( "time" - "github.com/broderickhyman/albiondata-client/log" + "github.com/ao-data/albiondata-client/log" ) type albionProcessWatcher struct { diff --git a/client/client.go b/client/client.go index 3e23a29..2871d93 100644 --- a/client/client.go +++ b/client/client.go @@ -1,7 +1,7 @@ package client import ( - "github.com/broderickhyman/albiondata-client/log" + "github.com/ao-data/albiondata-client/log" ) var version string diff --git a/client/config.go b/client/config.go index 7a48e1d..6575078 100644 --- a/client/config.go +++ b/client/config.go @@ -7,7 +7,7 @@ import ( "strconv" "strings" - "github.com/broderickhyman/albiondata-client/log" + "github.com/ao-data/albiondata-client/log" "github.com/mattn/go-colorable" "github.com/sirupsen/logrus" @@ -37,6 +37,7 @@ type config struct { PrivateIngestBaseUrls string PublicIngestBaseUrls string NoCPULimit bool + PrintVersion bool } //config global config data @@ -59,6 +60,7 @@ func (config *config) SetupFlags() { if config.DisableUpload { log.Info("Upload is disabled.") } + config.setupLogs() } @@ -78,6 +80,13 @@ func (config *config) setupWebsocketFlags() { } func (config *config) setupDebugFlags() { + flag.BoolVar( + &config.PrintVersion, + "version", + false, + "Print version, then close.", + ) + flag.BoolVar( &config.Debug, "debug", diff --git a/client/decode.go b/client/decode.go index 8db98f6..6f2d02a 100644 --- a/client/decode.go +++ b/client/decode.go @@ -5,8 +5,8 @@ import ( "reflect" "strconv" - "github.com/broderickhyman/albiondata-client/lib" - "github.com/broderickhyman/albiondata-client/log" + "github.com/ao-data/albiondata-client/lib" + "github.com/ao-data/albiondata-client/log" "github.com/mitchellh/mapstructure" ) diff --git a/client/dispatcher.go b/client/dispatcher.go index e54f7d4..2a744e9 100644 --- a/client/dispatcher.go +++ b/client/dispatcher.go @@ -6,8 +6,8 @@ import ( "strings" - "github.com/broderickhyman/albiondata-client/lib" - "github.com/broderickhyman/albiondata-client/log" + "github.com/ao-data/albiondata-client/lib" + "github.com/ao-data/albiondata-client/log" ) type dispatcher struct {} diff --git a/client/event_player_online_status.go b/client/event_player_online_status.go index 5a06629..c162ac6 100644 --- a/client/event_player_online_status.go +++ b/client/event_player_online_status.go @@ -1,8 +1,8 @@ package client import ( - "github.com/broderickhyman/albiondata-client/lib" - "github.com/broderickhyman/albiondata-client/log" + "github.com/ao-data/albiondata-client/lib" + "github.com/ao-data/albiondata-client/log" ) type eventPlayerOnlineStatus struct { diff --git a/client/event_skill_data.go b/client/event_skill_data.go index 6c2cd0d..d4825b4 100644 --- a/client/event_skill_data.go +++ b/client/event_skill_data.go @@ -3,8 +3,8 @@ package client import ( "strconv" - "github.com/broderickhyman/albiondata-client/lib" - "github.com/broderickhyman/albiondata-client/log" + "github.com/ao-data/albiondata-client/lib" + "github.com/ao-data/albiondata-client/log" ) type eventSkillData struct { diff --git a/client/listener.go b/client/listener.go index 3547ac9..19e4f65 100644 --- a/client/listener.go +++ b/client/listener.go @@ -7,8 +7,8 @@ import ( "io" "os" - "github.com/broderickhyman/albiondata-client/log" - photon "github.com/broderickhyman/photon_spectator" + "github.com/ao-data/albiondata-client/log" + photon "github.com/ao-data/photon_spectator" "github.com/google/gopacket" "github.com/google/gopacket/layers" "github.com/google/gopacket/pcap" diff --git a/client/offline.go b/client/offline.go index 8aae2a0..5bd0749 100644 --- a/client/offline.go +++ b/client/offline.go @@ -4,7 +4,7 @@ import ( "os" "path/filepath" - "github.com/broderickhyman/albiondata-client/log" + "github.com/ao-data/albiondata-client/log" ) func processOffline(path string) { diff --git a/client/operation_auction_get_item_average_stats.go b/client/operation_auction_get_item_average_stats.go index 2403d73..bc67031 100644 --- a/client/operation_auction_get_item_average_stats.go +++ b/client/operation_auction_get_item_average_stats.go @@ -3,8 +3,8 @@ package client import ( "sort" - "github.com/broderickhyman/albiondata-client/lib" - "github.com/broderickhyman/albiondata-client/log" + "github.com/ao-data/albiondata-client/lib" + "github.com/ao-data/albiondata-client/log" ) type operationAuctionGetItemAverageStats struct { diff --git a/client/operation_auction_get_offers.go b/client/operation_auction_get_offers.go index 8bf4ac1..eae142a 100644 --- a/client/operation_auction_get_offers.go +++ b/client/operation_auction_get_offers.go @@ -3,8 +3,8 @@ package client import ( "encoding/json" - "github.com/broderickhyman/albiondata-client/lib" - "github.com/broderickhyman/albiondata-client/log" + "github.com/ao-data/albiondata-client/lib" + "github.com/ao-data/albiondata-client/log" ) type operationAuctionGetOffers struct { diff --git a/client/operation_auction_get_requests.go b/client/operation_auction_get_requests.go index ed1755c..af102cc 100644 --- a/client/operation_auction_get_requests.go +++ b/client/operation_auction_get_requests.go @@ -3,8 +3,8 @@ package client import ( "encoding/json" - "github.com/broderickhyman/albiondata-client/lib" - "github.com/broderickhyman/albiondata-client/log" + "github.com/ao-data/albiondata-client/lib" + "github.com/ao-data/albiondata-client/log" ) type operationAuctionGetRequestsResponse struct { diff --git a/client/operation_get_cluster_map_info.go b/client/operation_get_cluster_map_info.go index 9191bcf..f05adf5 100644 --- a/client/operation_get_cluster_map_info.go +++ b/client/operation_get_cluster_map_info.go @@ -3,8 +3,8 @@ package client import ( "strconv" - "github.com/broderickhyman/albiondata-client/lib" - "github.com/broderickhyman/albiondata-client/log" + "github.com/ao-data/albiondata-client/lib" + "github.com/ao-data/albiondata-client/log" ) type operationGetClusterMapInfo struct { diff --git a/client/operation_get_game_server_by_cluster.go b/client/operation_get_game_server_by_cluster.go index 360c466..1c60041 100644 --- a/client/operation_get_game_server_by_cluster.go +++ b/client/operation_get_game_server_by_cluster.go @@ -4,7 +4,7 @@ import ( "strconv" "strings" - "github.com/broderickhyman/albiondata-client/log" + "github.com/ao-data/albiondata-client/log" ) type operationGetGameServerByCluster struct { diff --git a/client/operation_get_mail_infos.go b/client/operation_get_mail_infos.go index 4c1c4d1..ac192ea 100644 --- a/client/operation_get_mail_infos.go +++ b/client/operation_get_mail_infos.go @@ -4,7 +4,7 @@ import ( "fmt" "time" - "github.com/broderickhyman/albiondata-client/log" + "github.com/ao-data/albiondata-client/log" ) var MailInfos MailInfosLookup diff --git a/client/operation_gold_market_get_average_info.go b/client/operation_gold_market_get_average_info.go index 3048695..5f41c7f 100644 --- a/client/operation_gold_market_get_average_info.go +++ b/client/operation_gold_market_get_average_info.go @@ -1,8 +1,8 @@ package client import ( - "github.com/broderickhyman/albiondata-client/lib" - "github.com/broderickhyman/albiondata-client/log" + "github.com/ao-data/albiondata-client/lib" + "github.com/ao-data/albiondata-client/log" ) type operationGoldMarketGetAverageInfo struct { diff --git a/client/operation_join.go b/client/operation_join.go index 4d4ba3a..c23ee73 100644 --- a/client/operation_join.go +++ b/client/operation_join.go @@ -4,8 +4,8 @@ import ( "strconv" "strings" - "github.com/broderickhyman/albiondata-client/lib" - "github.com/broderickhyman/albiondata-client/log" + "github.com/ao-data/albiondata-client/lib" + "github.com/ao-data/albiondata-client/log" ) type operationJoinResponse struct { diff --git a/client/operation_read_mail.go b/client/operation_read_mail.go index e25074e..f69bb8a 100644 --- a/client/operation_read_mail.go +++ b/client/operation_read_mail.go @@ -4,8 +4,8 @@ import ( "strconv" "strings" - "github.com/broderickhyman/albiondata-client/lib" - "github.com/broderickhyman/albiondata-client/log" + "github.com/ao-data/albiondata-client/lib" + "github.com/ao-data/albiondata-client/log" ) type operationReadMail struct { diff --git a/client/operation_real_estate_bid_on_auction.go b/client/operation_real_estate_bid_on_auction.go index 7af2d2d..bed76c8 100644 --- a/client/operation_real_estate_bid_on_auction.go +++ b/client/operation_real_estate_bid_on_auction.go @@ -1,7 +1,7 @@ package client import ( - "github.com/broderickhyman/albiondata-client/log" + "github.com/ao-data/albiondata-client/log" ) type operationRealEstateBidOnAuction struct { diff --git a/client/operation_real_estate_get_auction_data.go b/client/operation_real_estate_get_auction_data.go index a01a8c0..b0d6902 100644 --- a/client/operation_real_estate_get_auction_data.go +++ b/client/operation_real_estate_get_auction_data.go @@ -1,7 +1,7 @@ package client import ( - "github.com/broderickhyman/albiondata-client/log" + "github.com/ao-data/albiondata-client/log" ) type operationRealEstateGetAuctionData struct { diff --git a/client/router.go b/client/router.go index 5b82a67..ee7cc2f 100644 --- a/client/router.go +++ b/client/router.go @@ -4,8 +4,8 @@ import ( "encoding/gob" "os" - "github.com/broderickhyman/albiondata-client/log" - photon "github.com/broderickhyman/photon_spectator" + "github.com/ao-data/albiondata-client/log" + photon "github.com/ao-data/photon_spectator" ) //Router struct definitions diff --git a/client/uploader_http.go b/client/uploader_http.go index 67246fd..c332442 100644 --- a/client/uploader_http.go +++ b/client/uploader_http.go @@ -6,7 +6,7 @@ import ( "io/ioutil" "net/http" - "github.com/broderickhyman/albiondata-client/log" + "github.com/ao-data/albiondata-client/log" ) type httpUploader struct { diff --git a/client/uploader_http_pow.go b/client/uploader_http_pow.go index 8db09b4..d5d5d41 100644 --- a/client/uploader_http_pow.go +++ b/client/uploader_http_pow.go @@ -14,7 +14,7 @@ import ( "io/ioutil" "strconv" - "github.com/broderickhyman/albiondata-client/log" + "github.com/ao-data/albiondata-client/log" ) type httpUploaderPow struct { diff --git a/client/uploader_nats.go b/client/uploader_nats.go index 9eb741e..090b9ff 100644 --- a/client/uploader_nats.go +++ b/client/uploader_nats.go @@ -1,7 +1,7 @@ package client import ( - "github.com/broderickhyman/albiondata-client/log" + "github.com/ao-data/albiondata-client/log" nats "github.com/nats-io/go-nats" ) diff --git a/go.mod b/go.mod index 54d79e6..44dc571 100644 --- a/go.mod +++ b/go.mod @@ -1,10 +1,10 @@ -module github.com/broderickhyman/albiondata-client +module github.com/ao-data/albiondata-client go 1.16 require ( - github.com/broderickhyman/go-githubupdate v0.0.0-20210616044731-0a6ee555c7dd - github.com/broderickhyman/photon_spectator v0.0.0-20201019232055-713aea094aa8 + github.com/ao-data/go-githubupdate v0.0.0-20230216133638-c4accecc2f64 + github.com/ao-data/photon_spectator v0.0.0-20201019232055-713aea094aa8 github.com/ctcpip/notifize v1.0.0 github.com/fsnotify/fsnotify v1.4.9 // indirect github.com/getlantern/golog v0.0.0-20201022140317-a8d13dc71777 // indirect @@ -29,8 +29,9 @@ require ( github.com/spf13/jwalterweatherman v1.1.0 // indirect github.com/spf13/pflag v1.0.5 // indirect github.com/spf13/viper v1.7.1 + github.com/tc-hib/go-winres v0.3.1 // indirect + golang.org/x/net v0.6.0 // indirect golang.org/x/sys v0.5.0 - golang.org/x/tools v0.6.0 // indirect gopkg.in/ini.v1 v1.62.0 // indirect gopkg.in/toast.v1 v1.0.0-20180812000517-0a84660828b2 gopkg.in/yaml.v2 v2.3.0 // indirect diff --git a/go.sum b/go.sum index 57ae2ec..58c4bb1 100644 --- a/go.sum +++ b/go.sum @@ -14,8 +14,14 @@ dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7 github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= +github.com/akavel/rsrc v0.10.2 h1:Zxm8V5eI1hW4gGaYsJQUhxpjkENuG91ki8B4zCrvEsw= +github.com/akavel/rsrc v0.10.2/go.mod h1:uLoCtb9J+EyAqh+26kdrTgmzRBFPGOolLWKpdxkKq+c= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/ao-data/go-githubupdate v0.0.0-20230216133638-c4accecc2f64 h1:yNUKYRe3bU1XMZxcsOgbwqj6L7tYb4SaVAAPP5qvKrw= +github.com/ao-data/go-githubupdate v0.0.0-20230216133638-c4accecc2f64/go.mod h1:nCSCu7m3B57YgiBPxHM6wXq5UWlcFkFeIDNGeBePh/4= +github.com/ao-data/photon_spectator v0.0.0-20201019232055-713aea094aa8 h1:ANJqs3GIJrueorjac0ic5BJZnaEeviHtDtf6kbuZ+Tg= +github.com/ao-data/photon_spectator v0.0.0-20201019232055-713aea094aa8/go.mod h1:JQ7Dc1beNHTGTPnmGw52CwMaXBzmFwe6sToBjuz6quE= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= @@ -25,10 +31,6 @@ github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kB github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ= github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= -github.com/broderickhyman/go-githubupdate v0.0.0-20210616044731-0a6ee555c7dd h1:524TgVkQ/45BwVq5TBEK93rXL8iYOTByCm3Q0Z7Nz/Q= -github.com/broderickhyman/go-githubupdate v0.0.0-20210616044731-0a6ee555c7dd/go.mod h1:1lB7TDteSwAagH6ymKeBmY3+GCv6XWdqG+WsGSGc/oI= -github.com/broderickhyman/photon_spectator v0.0.0-20201019232055-713aea094aa8 h1:BeS4MGsEebX9dV4Ujd2WNuhFw5hvK+31UmdwsMrZwTw= -github.com/broderickhyman/photon_spectator v0.0.0-20201019232055-713aea094aa8/go.mod h1:TAk3d2f92vDWcUt8ptoQHfGDrbfaogdolag1Ma2F7eY= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= @@ -36,6 +38,9 @@ github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/cpuguy83/go-md2man/v2 v2.0.0 h1:EoUDS0afbrsXAZ9YQ9jdu/mZ2sXgT1/2yyNng4PGlyM= +github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/ctcpip/notifize v1.0.0 h1:pC1fq9jaQN4/h5RV7n/Rum4hUNLzMhDl40kfR/NuGzA= github.com/ctcpip/notifize v1.0.0/go.mod h1:s22nV/32b1qZqd69j+JTo9d8rZUKjNTBNmmvZ9nEOJ4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -131,6 +136,8 @@ github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0m github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= +github.com/josephspurrier/goversioninfo v1.4.0 h1:Puhl12NSHUSALHSuzYwPYQkqa2E1+7SrtAPJorKK0C8= +github.com/josephspurrier/goversioninfo v1.4.0/go.mod h1:JWzv5rKQr+MmW+LvM412ToT/IkYDZjaclF2pKDss8IY= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= @@ -180,6 +187,8 @@ github.com/nats-io/nkeys v0.2.0 h1:WXKF7diOaPU9cJdLD7nuzwasQy9vT1tBqzXZZf3AMJM= github.com/nats-io/nkeys v0.2.0/go.mod h1:XdZpAbhgyyODYqjTawOnIOI7VlbKSarI9Gfy1tqEu/s= github.com/nats-io/nuid v1.0.1 h1:5iA8DT8V7q8WK2EScv2padNa/rTESc1KdnPw4TC2paw= github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= +github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646 h1:zYyBkD/k9seD2A7fsi6Oo2LfFZAehjjQMERAvZLEDnQ= +github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646/go.mod h1:jpp1/29i3P1S/RLdc7JQKbRpFeM1dOBd8T9ki5s+AY8= github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d h1:VhgPp6v9qf9Agr/56bj7Y/xa04UccTW04VP0Qed4vnQ= github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d/go.mod h1:YUTz3bUH2ZwIWBy3CJBeOBEugqcmXREj14T+iG/4k4U= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= @@ -206,8 +215,12 @@ github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7z github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= +github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= +github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.7.0 h1:ShrD1U9pZB12TX0cVy0DtePoCH97K8EtX+mg7ZARUtM= github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= @@ -237,9 +250,17 @@ github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXf github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= +github.com/tc-hib/go-winres v0.3.1 h1:9r67V7Ep34yyx8SL716BzcKePRvEBOjan47SmMnxEdE= +github.com/tc-hib/go-winres v0.3.1/go.mod h1:lTPf0MW3eu6rmvMyLrPXSy6xsSz4t5dRxB7dc5YFP6k= +github.com/tc-hib/winres v0.1.6 h1:qgsYHze+BxQPEYilxIz/KCQGaClvI2+yLBAZs+3+0B8= +github.com/tc-hib/winres v0.1.6/go.mod h1:pe6dOR40VOrGz8PkzreVKNvEKnlE8t4yR8A8naL+t7A= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/urfave/cli/v2 v2.3.0 h1:qph92Y649prgesehzOrQjdWyxFOp/QVM+6imKHad91M= +github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= @@ -255,8 +276,6 @@ golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200323165209-0ec3e9974c59/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20201016220609-9e8e0b390897 h1:pLI5jrR7OSLijeIDcmRxNmw2api+jEfxLoykJVice/E= -golang.org/x/crypto v0.0.0-20201016220609-9e8e0b390897/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519 h1:7I4JAnoQBe7ZtJcBaYHi5UtiO8tQHbUSXxL+pnGRANg= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -266,6 +285,9 @@ golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm0 golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20201208152932-35266b937fa6/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20210220032944-ac19c3e999fb h1:fqpd0EBDzlHRCjiphRR5Zo/RSWWQlWv34418dnEixWk= +golang.org/x/image v0.0.0-20210220032944-ac19c3e999fb/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -278,8 +300,6 @@ golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCc golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.8.0 h1:LUYupSeNrTNCGzR/hVBk2NHZO4hXcVaW1k4Qx7rjPx8= -golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -293,7 +313,6 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859 h1:R/3boaszxrf1GEUWTVDzSKVwLmSJpwZ1yqXm8j0v2QI= 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= @@ -308,34 +327,8 @@ golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 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= -golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201101102859-da207088b7d1 h1:a/mKvvZr9Jcc8oKfcmgzyp7OwF73JPWsQLvH1z2Kxck= -golang.org/x/sys v0.0.0-20201101102859-da207088b7d1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab h1:2QkjZIsXupsJbJIdSjjUOgWK3aEtzyuh2mPt3l/CkeU= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU= -golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 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.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= @@ -343,8 +336,6 @@ golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/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.4 h1:0YWbFKbhXG/wIiuHDSKpS0Iy7FSA+u45VtBMfQcFTTc= -golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.7.0 h1:4BRB4x83lYWy72KwLD/qYDuTu7q9PjSagHvijDw7cLo= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= @@ -369,8 +360,6 @@ golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.6.0 h1:BOw41kyTf3PuCW1pVQf8+Cyg8pMlkYB1oo9iJ6D/lKM= -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/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= @@ -410,9 +399,11 @@ gopkg.in/toast.v1 v1.0.0-20180812000517-0a84660828b2/go.mod h1:s1Sn2yZos05Qfs7NK gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/icon/albiondata-client.png b/icon/albiondata-client.png new file mode 100644 index 0000000000000000000000000000000000000000..3f32ad3b90be6be9b3d7cbf415142d390df4a836 GIT binary patch literal 57703 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 TzCCTX00000NkvXXu0mjfrM0sW literal 0 HcmV?d00001 diff --git a/notification/notification_win.go b/notification/notification_win.go index c92e42a..2e67cd0 100644 --- a/notification/notification_win.go +++ b/notification/notification_win.go @@ -3,7 +3,7 @@ package notification import ( - "github.com/broderickhyman/albiondata-client/log" + "github.com/ao-data/albiondata-client/log" toast "gopkg.in/toast.v1" ) diff --git a/pkg/nsis/Makefile b/pkg/nsis/Makefile index af32dea..e27ec4e 100644 --- a/pkg/nsis/Makefile +++ b/pkg/nsis/Makefile @@ -1,7 +1,7 @@ TOP_SRCDIR = ../.. PACKAGE = albiondata-client PACKAGE_NAME = Albion Data Client -PACKAGE_BUGREPORT = https://github.com/broderickhyman/albiondata-client/issues +PACKAGE_BUGREPORT = https://github.com/ao-data/albiondata-client/issues INSTALLER_COMPRESSION = lzma PACKAGE_EXE = albiondata-client.exe diff --git a/scripts/build-linux.sh b/scripts/build-linux.sh index 2444db3..82b737e 100755 --- a/scripts/build-linux.sh +++ b/scripts/build-linux.sh @@ -4,9 +4,13 @@ set -eo pipefail sudo apt-get update && sudo apt-get install -y libpcap-dev +env | sort + go build -ldflags "-s -w -X main.version=$GITHUB_REF_NAME" albiondata-client.go -ls -la +./albiondata-client -version + +cp albiondata-client albiondata-client.old gzip -9 albiondata-client mv albiondata-client.gz update-linux-amd64.gz -ls -la \ No newline at end of file +mv albiondata-client.old albiondata-client diff --git a/scripts/build-windows.sh b/scripts/build-windows.sh index 21daa64..87dbcab 100755 --- a/scripts/build-windows.sh +++ b/scripts/build-windows.sh @@ -2,39 +2,30 @@ set -eo pipefail -# sudo apt update && sudo apt install -y nsis nsis-pluginapi wine wine32 - -sudo dpkg --add-architecture i386 && sudo apt-get update && sudo apt-get install -y --no-install-recommends \ - g++ \ - gcc \ - libc6-dev \ - make \ - pkg-config \ - ca-certificates \ - wget \ - git \ - ssh \ - mingw-w64 \ - nsis \ - wine-stable \ - wine32 - -export CGO_CPPFLAGS="-I $GOPATH/src/github.com/broderickhyman/albiondata-client/thirdparty/WpdPack/Include/" -export CGO_LDFLAGS="-L $GOPATH/src/github.com/broderickhyman/albiondata-client/thirdparty/WpdPack/Lib/x64/" -export GOOS=windows -export GOARCH=amd64 -export CGO_ENABLED=1 -export CXX=x86_64-w64-mingw32-g++ -export CC=x86_64-w64-mingw32-gcc -go build -ldflags "-s -w -X main.version=$GITHUB_REF_NAME" -o albiondata-client.exe -v -x albiondata-client.go - -# Add icon to the .exe -wine thirdparty/rcedit/rcedit.exe albiondata-client.exe --set-icon icon/albiondata-client.ico - -# Make the NSIS Installer +rm -f rsrc_windows_* +rm -f albiondata-client.exe +rm -f albiondata-client.*.bak +rm -f .albiondata-client.*.old + +rm -f albiondata-client-amd64-installer.exe + +go install github.com/tc-hib/go-winres@latest + +export PATH="$PATH:/root/go/bin" + +go-winres make + +env GOOS=windows GOARCH=amd64 go build -ldflags "-s -w -X main.version=$GITHUB_REF_NAME" -o albiondata-client.exe -v -x albiondata-client.go + +go-winres patch albiondata-client.exe + cd pkg/nsis make nsis + cd ../.. +ls -la albiondata-client* +cp albiondata-client.exe albiondata-client.exe.copy gzip -9 albiondata-client.exe mv albiondata-client.exe.gz update-windows-amd64.exe.gz +mv albiondata-client.exe.copy albiondata-client.exe diff --git a/systray/systray_win.go b/systray/systray_win.go index aa6f05d..f07920e 100644 --- a/systray/systray_win.go +++ b/systray/systray_win.go @@ -6,9 +6,9 @@ import ( "fmt" "os" - "github.com/broderickhyman/albiondata-client/client" + "github.com/ao-data/albiondata-client/client" - "github.com/broderickhyman/albiondata-client/icon" + "github.com/ao-data/albiondata-client/icon" "github.com/getlantern/systray" "github.com/gonutz/w32" ) diff --git a/winres/winres.json b/winres/winres.json new file mode 100644 index 0000000..2d4cf7e --- /dev/null +++ b/winres/winres.json @@ -0,0 +1,61 @@ +{ + "RT_GROUP_ICON": { + "APP": { + "0000": [ + "../icon/albiondata-client.png", + "../icon/albiondata-client.png" + ] + } + }, + "RT_MANIFEST": { + "#1": { + "0409": { + "identity": { + "name": "", + "version": "" + }, + "description": "", + "minimum-os": "win7", + "execution-level": "as invoker", + "ui-access": false, + "auto-elevate": false, + "dpi-awareness": "system", + "disable-theming": false, + "disable-window-filtering": false, + "high-resolution-scrolling-aware": false, + "ultra-high-resolution-scrolling-aware": false, + "long-path-aware": false, + "printer-driver-isolation": false, + "gdi-scaling": false, + "segment-heap": false, + "use-common-controls-v6": false + } + } + }, + "RT_VERSION": { + "#1": { + "0000": { + "fixed": { + "file_version": "0.0.0.0", + "product_version": "0.0.0.0" + }, + "info": { + "0409": { + "Comments": "", + "CompanyName": "", + "FileDescription": "", + "FileVersion": "", + "InternalName": "", + "LegalCopyright": "", + "LegalTrademarks": "", + "OriginalFilename": "", + "PrivateBuild": "", + "ProductName": "", + "ProductVersion": "", + "SpecialBuild": "" + } + } + } + } + } +} \ No newline at end of file