From fb2371f1870943374aa2e019b8ddd275f87478e9 Mon Sep 17 00:00:00 2001 From: "Stanislav N. aka pztrn" Date: Thu, 11 Sep 2025 02:09:18 +0500 Subject: [PATCH] Cross-platform client building implemented. --- .gitignore | 3 ++ FyneApp.toml | 7 ++-- client/cmd/client/Taskfile.yml | 62 ++++++++++++++++++++++++---------- 3 files changed, 51 insertions(+), 21 deletions(-) diff --git a/.gitignore b/.gitignore index aa6edc1..25b41f1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,6 @@ *DS_Store* fyne-cross .build +*.apk +*.app +dist diff --git a/FyneApp.toml b/FyneApp.toml index d92f3ec..49f3299 100644 --- a/FyneApp.toml +++ b/FyneApp.toml @@ -1,6 +1,7 @@ Website = "https://bunker.pztrn.name" [Details] -Icon = "Icon.png" -Name = "pztrn's Bunker" -ID = "name.pztrn.bunker.client" + Icon = "Icon.png" + Name = "pztrn's Bunker" + ID = "name.pztrn.bunker.client" + Build = 1 diff --git a/client/cmd/client/Taskfile.yml b/client/cmd/client/Taskfile.yml index 2034420..da7cac7 100644 --- a/client/cmd/client/Taskfile.yml +++ b/client/cmd/client/Taskfile.yml @@ -41,33 +41,53 @@ tasks: # cmds: # - fyne package -os web --app-id name.pztrn.bunker.client -icon ../../Icon.png --release --name "pztrn's Bunker" --app-version "{{ .CLIENT_VERSION }}" --app-build "{{ .BUILD }}" {{ .MetadataParams }} - build-darwin-amd64: - desc: "Build darwin/arm64 using fyne-cross" + build-dist: + desc: "Builds windows/amd64, linux/amd64, darwin/arm64, android/arm64 distribution archives." cmds: - - task: ::ensure-builddir - - task: cleanup - - fyne-cross darwin -app-version="{{ .CLIENT_VERSION }}" -app-build="{{ .BUILD }}" -arch=amd64 -category=6007 -pull client/cmd/client + - task: build-dist-android-arm64 + - task: build-dist-darwin + - task: build-dist-linux-amd64 + - task: build-dist-windows-amd64 - build-darwin-arm64: - desc: "Build darwin/arm64 using fyne-cross" + build-dist-android-arm64: + desc: "Build android/arm64 APK file." + dir: ./client/cmd/client cmds: - - task: ::ensure-builddir - - task: cleanup - - fyne-cross darwin -app-version="{{ .CLIENT_VERSION }}" -app-build="{{ .BUILD }}" -arch=arm64 -category=6007 -pull client/cmd/client + - task: ensure-dist-dir + #- fyne-cross android -app-version="{{ .CLIENT_VERSION }}" -app-build="{{ .BUILD }}" -arch=arm64 -pull client/cmd/client + - fyne package --release --target=android/arm64 --app-id name.pztrn.bunker.client -icon ../../../Icon.png --name "pztrn's Bunker" --app-version "{{ .CLIENT_VERSION }}" --app-build "{{ .BUILD }}" {{ .MetadataParams }} + - mv pztrn_s_Bunker.apk "../../../dist/pztrn's Bunker-{{ .CLIENT_VERSION }}-{{ .BUILD }}-android-arm64.apk" - build-linux-amd64: + build-dist-darwin: + desc: "Build darwin (macOS) version." + dir: ./client/cmd/client + cmds: + - task: ensure-dist-dir + #- fyne-cross darwin -app-version="{{ .CLIENT_VERSION }}" -app-build="{{ .BUILD }}" -arch=arm64 -category=6007 -pull {{ .MetadataParams }} client/cmd/client + - fyne package --release --target=darwin --app-id name.pztrn.bunker.client -executable name.pztrn.bunker.client -icon ../../../Icon.png --name "pztrn's Bunker" --app-version "{{ .CLIENT_VERSION }}" --app-build "{{ .BUILD }}" {{ .MetadataParams }} + - tar -czf "pztrn's Bunker-{{ .CLIENT_VERSION }}-{{ .BUILD }}-darwin-arm64.tar.gz" *.app + - mv *.tar.gz ../../../dist/ + + build-dist-ios: + desc: "Build iOS version." + dir: ./client/cmd/client + cmds: + - task: ensure-dist-dir + - fyne package --release --target=ios --app-id name.pztrn.bunker.client -icon ../../../Icon.png --name "pztrn's Bunker" --app-version "{{ .CLIENT_VERSION }}" --app-build "{{ .BUILD }}" {{ .MetadataParams }} + + build-dist-linux-amd64: desc: "Build linux/amd64 using fyne-cross" cmds: - - task: ::ensure-builddir - - task: cleanup - - fyne-cross linux -app-id=name.pztrn.bunker.client -app-version="{{ .CLIENT_VERSION }}" -app-build="{{ .BUILD }}" -icon=client/Icon.png -arch=amd64 -name="pztrn's Bunker" -pull client/cmd/client + - task: ensure-dist-dir + - fyne-cross linux -app-version="{{ .CLIENT_VERSION }}" -app-build="{{ .BUILD }}" -arch=amd64 -pull {{ .MetadataParams }} client/cmd/client + - mv "fyne-cross/dist/linux-amd64/pztrn's Bunker.tar.xz" "dist/pztrn's Bunker-{{ .CLIENT_VERSION }}-{{ .BUILD }}-linux-amd64.tar.xz" - build-windows-amd64: + build-dist-windows-amd64: desc: "Build windows/amd64 using fyne-cross" cmds: - - task: ::ensure-builddir - - task: cleanup - - fyne-cross windows -app-id=name.pztrn.bunker.client -app-version="{{ .CLIENT_VERSION }}" -app-build="{{ .BUILD }}" -icon=client/Icon.png -arch=amd64 -name="pztrn's Bunker" -pull client/cmd/client + - task: ensure-dist-dir + - fyne-cross windows -app-version="{{ .CLIENT_VERSION }}" -app-build="{{ .BUILD }}" -arch=amd64 -pull {{ .MetadataParams }} client/cmd/client + - mv "fyne-cross/dist/windows-amd64/pztrn's Bunker.exe.zip" "dist/pztrn's Bunker-{{ .CLIENT_VERSION }}-{{ .BUILD }}-windows-amd64.zip" cleanup: desc: "Cleanup build environment." @@ -75,6 +95,12 @@ tasks: - rm .build/{{ .ClientBinary }} ignore_error: true + ensure-dist-dir: + desc: "Ensures dist directory in repo root exists." + internal: true + cmds: + - mkdir dist || exit 0 + run: desc: "Launch client." cmds: