diff --git a/.github/workflows/spotube-nightly.yml b/.github/workflows/spotube-nightly.yml
deleted file mode 100644
index fbb857ec..00000000
--- a/.github/workflows/spotube-nightly.yml
+++ /dev/null
@@ -1,204 +0,0 @@
-name: Spotube Nightly
-on:
- push:
- branches:
- - build
- workflow_dispatch:
-
-jobs:
- build_ubuntu:
- runs-on: ubuntu-22.04
- steps:
- - uses: actions/checkout@v3
- - uses: subosito/flutter-action@v2.8.0
- with:
- cache: true
-
- - name: Getting current date
- id: date
- run: echo "::set-output name=date::$(date +'%Y-%m-%d')"
-
- - name: Installing dependencies and configuring version
- run: |
- sudo apt-get update -y
- sudo apt-get install -y tar clang cmake ninja-build pkg-config libgtk-3-dev make python3-pip python3-setuptools desktop-file-utils libgdk-pixbuf2.0-dev fakeroot strace fuse libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev locate patchelf libunwind-dev
- curl -sS https://webi.sh/yq | sh
- yq -i '.version |= sub("\+\d+", "+nightly.")' pubspec.yaml
- yq -i '.version += strenv(GITHUB_RUN_NUMBER)' pubspec.yaml
- flutter config --enable-linux-desktop
- flutter pub get
-
- - name: Installing appimagetool
- run: |
- wget -O appimagetool "https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage"
- chmod +x appimagetool
- mv appimagetool /usr/local/bin/
-
- - name: Generating Secrets
- run: |
- echo '${{ secrets.DOTENV_NIGHTLY }}' > .env
- dart bin/create-secrets.dart '${{ secrets.LYRICS_SECRET }}' '${{ secrets.SPOTIFY_SECRET }}'
-
- - name: Building Linux application
- # dart pub global activate flutter_distributor
- run: |
- git clone https://github.com/KRTirtho/flutter_distributor.git flutter_distributor
- flutter pub global activate melos
- cd flutter_distributor
- melos bootstrap
- cd ..
- dart flutter_distributor/packages/flutter_distributor/bin/main.dart package --platform=linux --targets=deb,appimage,rpm --skip-clean
- make tar
- mv build/Spotube-linux-x86_64.tar.xz dist/Spotube-linux-x86_64-nightly.tar.xz
- mv dist/**/spotube-*-linux.deb dist/Spotube-linux-x86_64-nightly.deb
- mv dist/**/spotube-*-linux.rpm dist/Spotube-linux-x86_64-nightly.rpm
- mv dist/**/spotube-*-linux.AppImage dist/Spotube-linux-x86_64-nightly.AppImage
-
- - name: Uploading binaries to release
- uses: svenstaro/upload-release-action@v2
- with:
- repo_token: ${{ secrets.GITHUB_TOKEN }}
- file_glob: true
- file: dist/*
- tag: refs/tags/nightly
- body: |
- ## nightly-${{ github.run_number }}
- Nightly build no. ${{ github.run_number }} of Spotube
- overwrite: true
-
- - name: Setting up upterm session
- if: ${{ failure() }}
- uses: lhotari/action-upterm@v1
- with:
- limit-access-to-actor: true
-
- build_android:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v3
- - uses: subosito/flutter-action@v2.8.0
- with:
- cache: true
-
- - name: Installing dependencies and configuring version
- run: |
- sudo apt-get update -y
- sudo apt-get install -y clang cmake ninja-build pkg-config libgtk-3-dev make python3-pip python3-setuptools desktop-file-utils libgdk-pixbuf2.0-dev fakeroot strace fuse
- curl -sS https://webi.sh/yq | sh
- yq -i '.version |= sub("\+\d+", "+nightly.")' pubspec.yaml
- yq -i '.version += strenv(GITHUB_RUN_NUMBER)' pubspec.yaml
- flutter pub get
-
- - name: Generating Secrets and key store
- run: |
- echo '${{ secrets.DOTENV_NIGHTLY }}' > .env
- dart bin/create-secrets.dart '${{ secrets.LYRICS_SECRET }}' '${{ secrets.SPOTIFY_SECRET }}'
- echo '${{ secrets.KEYSTORE }}' | base64 --decode > android/app/upload-keystore.jks
- echo '${{ secrets.KEY_PROPERTIES }}' > android/key.properties
-
- - name: Building Android apk
- run: |
- flutter build apk
- mv build/app/outputs/apk/release/app-release.apk build/Spotube-android-all-arch-nightly.apk
-
- - name: Uploading binaries to release
- uses: svenstaro/upload-release-action@v2
- with:
- repo_token: ${{ secrets.GITHUB_TOKEN }}
- file: build/Spotube-android-all-arch-nightly.apk
- tag: refs/tags/nightly
- body: |
- ## nightly-${{ github.run_number }}
- Nightly build no. ${{ github.run_number }} of Spotube
- overwrite: true
-
- - name: Setting up upterm session
- if: ${{ failure() }}
- uses: lhotari/action-upterm@v1
- with:
- limit-access-to-actor: true
-
- build_windows:
- runs-on: windows-latest
- steps:
- - uses: actions/checkout@v3
- - uses: subosito/flutter-action@v2.8.0
- with:
- cache: true
-
- - name: Installing dependencies and configuring versions
- run: |
- choco install sed make yq -y
- yq -i '.version |= sub("\+\d+", "+nightly.")' pubspec.yaml
- yq -i '.version += strenv(GITHUB_RUN_NUMBER)' pubspec.yaml
- sed -i "s/%{{SPOTUBE_VERSION}}%/${{ github.run_number }}/" windows/runner/Runner.rc
- flutter config --enable-windows-desktop
- flutter pub get
-
- - name: Generating Secrets
- run: |
- echo '${{ secrets.DOTENV_NIGHTLY }}' > .env
- dart bin/create-secrets.dart '${{ secrets.LYRICS_SECRET }}' '${{ secrets.SPOTIFY_SECRET }}'
-
- - name: Building for Windows x64
- run: |
- dart pub global activate flutter_distributor
- make innoinstall
- flutter_distributor package --platform=windows --targets=exe --skip-clean
- mv dist/**/spotube-*-windows-setup.exe dist/Spotube-windows-x86_64-setup-nightly.exe
-
- - name: Uploading binaries to release
- uses: svenstaro/upload-release-action@v2
- with:
- repo_token: ${{ secrets.GITHUB_TOKEN }}
- file_glob: true
- file: dist/*
- tag: refs/tags/nightly
- body: |
- ## nightly-${{ github.run_number }}
- Nightly build no. ${{ github.run_number }} of Spotube
- overwrite: true
-
- build_macos:
- runs-on: macos-11
- steps:
- - uses: actions/checkout@v3
- - uses: subosito/flutter-action@v2.8.0
- with:
- cache: true
-
- - name: Installing dependencies and configuring versions
- run: |
- brew install yq
- yq -i '.version |= sub("\+\d+", "+nightly.")' pubspec.yaml
- yq -i '.version += strenv(GITHUB_RUN_NUMBER)' pubspec.yaml
- flutter config --enable-macos-desktop
- flutter pub get
-
- - name: Generating Secrets
- run: |
- echo '${{ secrets.DOTENV_NIGHTLY }}' > .env
- dart bin/create-secrets.dart '${{ secrets.LYRICS_SECRET }}' '${{ secrets.SPOTIFY_SECRET }}'
-
- - name: Building for MacOS
- run: |
- flutter build macos
- npm install -g appdmg
- appdmg appdmg.json build/Spotube-macos-x86_64-nightly.dmg
-
- - name: Uploading binaries to release
- uses: svenstaro/upload-release-action@v2
- with:
- repo_token: ${{ secrets.GITHUB_TOKEN }}
- file: build/Spotube-macos-x86_64-nightly.dmg
- tag: refs/tags/nightly
- body: |
- ## nightly-${{ github.run_number }}
- Nightly build no. ${{ github.run_number }} of Spotube
- overwrite: true
-
- - name: Setting up upterm session
- if: ${{ failure() }}
- uses: lhotari/action-upterm@v1
- with:
- limit-access-to-actor: true
diff --git a/.github/workflows/spotube-publish-binary.yml b/.github/workflows/spotube-publish-binary.yml
new file mode 100644
index 00000000..94150a3e
--- /dev/null
+++ b/.github/workflows/spotube-publish-binary.yml
@@ -0,0 +1,97 @@
+name: Spotube Publish Binary
+on:
+ workflow_dispatch:
+ inputs:
+ version:
+ description: Version to release (x.x.x)
+ default: 2.7.0
+ required: true
+ dry_run:
+ description: Dry run
+ required: true
+ type: boolean
+ default: true
+
+jobs:
+ flathub:
+ runs-on: ubuntu-22.04
+ steps:
+ - uses: actions/checkout@v3
+ with:
+ repository: KRTirtho/com.github.KRTirtho.Spotube
+ token: ${{ secrets.FLATHUB_TOKEN }}
+
+ - uses: actions/checkout@v3
+ with:
+ path: spotube
+
+ - name: Update flathub version
+ run: |
+ python3 spotube/scripts/update_flathub_version.py ${{ inputs.version }}
+ rm -rf spotube
+ git config --global user.email "krtirtho@gmail.com"
+ git config --global user.name "Kingkor Roy Tirtho"
+ git add .
+ git commit -m "v${{ inputs.version }} Update"
+ git branch update-${{ inputs.version }}
+ git switch update-${{ inputs.version }}
+
+ - name: Push to flathub
+ if: ${{ !inputs.dry_run }}
+ run: git push -u origin update-${{ inputs.version }}
+
+ aur:
+ runs-on: ubuntu-22.04
+ steps:
+ - uses: actions/checkout@v3
+
+ - uses: dsaltares/fetch-gh-release-asset@master
+ with:
+ version: tags/v${{ inputs.version }} # mind the "v" prefix
+ file: Spotube-linux-x86_64.tar.xz
+ token: ${{ secrets.GITHUB_TOKEN }}
+
+ - name: Update PKGBUILD versions
+ run: |
+ sed -i "s/%{{SPOTUBE_VERSION}}%/${{ inputs.version }}/" aur-struct/PKGBUILD
+ sed -i "s/%{{PKGREL}}%/1/" aur-struct/PKGBUILD
+ sed -i "s/%{{LINUX_MD5}}%/`md5sum Spotube-linux-x86_64.tar.xz | awk '{print $1}'`/" aur-struct/PKGBUILD
+
+ - name: Release to AUR
+ if: ${{ !inputs.dry_run }}
+ uses: KSXGitHub/github-actions-deploy-aur@v2.6.0
+ with:
+ pkgname: spotube-bin
+ pkgbuild: aur-struct/PKGBUILD
+ commit_username: ${{ secrets.AUR_USERNAME }}
+ commit_email: ${{ secrets.AUR_EMAIL }}
+ ssh_private_key: ${{ secrets.AUR_SSH_PRIVATE_KEY }}
+ commit_message: Updated to v${{ inputs.version }}
+
+ winget:
+ runs-on: windows-latest
+ steps:
+ - name: Release winget package
+ if: ${{ !inputs.dry_run }}
+ uses: vedantmgoyal2009/winget-releaser@v2
+ with:
+ version: ${{ inputs.version }}
+ release-tag: v${{ inputs.version }}
+ identifier: KRTirtho.Spotube
+ token: ${{ secrets.WINGET_TOKEN }}
+
+ chocolatey:
+ runs-on: windows-latest
+ steps:
+ - uses: dsaltares/fetch-gh-release-asset@master
+ with:
+ version: tags/v${{ inputs.version }} # mind the "v" prefix
+ file: Spotube-windows-x86_64.nupkg
+ token: ${{ secrets.GITHUB_TOKEN }}
+
+ - name: Set up Chocolatey
+ run: choco apikey -k ${{ secrets.CHOCO_API_KEY }} -s https://push.chocolatey.org/
+
+ - name: Publish to Chocolatey Repository
+ if: ${{ !inputs.dry_run }}
+ run: choco push Spotube-windows-x86_64.nupkg
diff --git a/.github/workflows/spotube-release-binary.yml b/.github/workflows/spotube-release-binary.yml
new file mode 100644
index 00000000..9a89e0f0
--- /dev/null
+++ b/.github/workflows/spotube-release-binary.yml
@@ -0,0 +1,318 @@
+name: Spotube Release Binary
+on:
+ workflow_dispatch:
+ inputs:
+ version:
+ description: Version to release (x.x.x)
+ default: 2.7.0
+ required: true
+ channel:
+ type: choice
+ description: Release Channel
+ required: true
+ options:
+ - stable
+ - nightly
+ default: nightly
+ dry_run:
+ description: Dry run
+ required: true
+ type: boolean
+ default: true
+
+jobs:
+ windows:
+ runs-on: windows-latest
+ steps:
+ - uses: actions/checkout@v3
+ - uses: subosito/flutter-action@v2.8.0
+ with:
+ cache: true
+
+ - name: Replace pubspec version (nightly)
+ if: ${{ inputs.channel == 'nightly' }}
+ run: |
+ choco install sed make yq -y
+ yq -i '.version |= sub("\+\d+", "+${{ inputs.channel }}.")' pubspec.yaml
+ yq -i '.version += strenv(GITHUB_RUN_NUMBER)' pubspec.yaml
+ "BUILD_VERSION=${{ inputs.version }}+${{ inputs.channel }}.${{ github.run_number }}" >> $env:GITHUB_ENV
+
+ - name: Replace pubspec version (stable)
+ if: ${{ inputs.channel == 'stable' }}
+ run: |
+ "BUILD_VERSION=${{ inputs.version }}" >> $env:GITHUB_ENV
+
+ - name: Replace version in files
+ run: |
+ choco install sed make -y
+ sed -i "s/%{{SPOTUBE_VERSION}}%/${{ env.BUILD_VERSION }}/" windows/runner/Runner.rc
+ sed -i "s/%{{SPOTUBE_VERSION}}%/${{ env.BUILD_VERSION }}/" choco-struct/tools/VERIFICATION.txt
+ sed -i "s/%{{SPOTUBE_VERSION}}%/${{ env.BUILD_VERSION }}/" choco-struct/spotube.nuspec
+
+ - name: Create Stable .env
+ if: ${{ inputs.channel == 'stable' }}
+ run: echo '${{ secrets.DOTENV_RELEASE }}' > .env
+
+ - name: Create Nightly .env
+ if: ${{ inputs.channel == 'nightly' }}
+ run: echo '${{ secrets.DOTENV_NIGHTLY }}' > .env
+
+ - name: Generating Secrets
+ run: |
+ flutter config --enable-windows-desktop
+ flutter pub get
+ dart bin/create-secrets.dart '${{ secrets.LYRICS_SECRET }}' '${{ secrets.SPOTIFY_SECRET }}'
+
+ - name: Build Windows Executable
+ run: |
+ dart pub global activate flutter_distributor
+ make innoinstall
+ flutter_distributor package --platform=windows --targets=exe --skip-clean
+ mv dist/**/spotube-*-windows.exe dist/Spotube-windows-x86_64-setup.exe
+
+ - name: Create Chocolatey Package and set hash
+ if: ${{ inputs.channel == 'stable' }}
+ run: |
+ Set-Variable -Name HASH -Value (Get-FileHash dist\Spotube-windows-x86_64-setup.exe).Hash
+ sed -i "s/%{{WIN_SHA256}}%/$HASH/" choco-struct/tools/VERIFICATION.txt
+ make choco
+ mv dist/spotube.*.nupkg dist/Spotube-windows-x86_64.nupkg
+
+ - name: Upload Artifact
+ uses: actions/upload-artifact@v3
+ with:
+ name: Spotube-Release-Binaries
+ path: dist/
+
+ linux:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+ - uses: subosito/flutter-action@v2.8.0
+ with:
+ cache: true
+
+ - name: Get current date
+ id: date
+ run: echo "::set-output name=date::$(date +'%Y-%m-%d')"
+
+ - name: Install Dependencies
+ run: |
+ sudo apt-get update -y
+ sudo apt-get install -y tar clang cmake ninja-build pkg-config libgtk-3-dev make python3-pip python3-setuptools patchelf desktop-file-utils libgdk-pixbuf2.0-dev fakeroot strace fuse libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libunwind-dev locate patchelf
+
+ - name: Install AppImage Tool
+ run: |
+ wget -O appimagetool "https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage"
+ chmod +x appimagetool
+ mv appimagetool /usr/local/bin/
+
+ - name: Replace pubspec version (nightly)
+ if: ${{ inputs.channel == 'nightly' }}
+ run: |
+ curl -sS https://webi.sh/yq | sh
+ yq -i '.version |= sub("\+\d+", "+${{ inputs.channel }}.")' pubspec.yaml
+ yq -i '.version += strenv(GITHUB_RUN_NUMBER)' pubspec.yaml
+ echo "BUILD_VERSION=${{ inputs.version }}+${{ inputs.channel }}.${{ github.run_number }}" >> $GITHUB_ENV
+
+ - name: Replace pubspec version (stable)
+ if: ${{ inputs.channel == 'stable' }}
+ run: |
+ echo "BUILD_VERSION=${{ inputs.version }}" >> $GITHUB_ENV
+
+ - name: Create Stable .env
+ if: ${{ inputs.channel == 'stable' }}
+ run: echo '${{ secrets.DOTENV_RELEASE }}' > .env
+
+ - name: Create Nightly .env
+ if: ${{ inputs.channel == 'nightly' }}
+ run: echo '${{ secrets.DOTENV_NIGHTLY }}' > .env
+
+ - name: Replace Version in files
+ run: |
+ sed -i 's|%{{APPDATA_RELEASE}}%||' linux/com.github.KRTirtho.Spotube.appdata.xml
+
+ - name: Generate Secrets
+ run: |
+ flutter config --enable-linux-desktop
+ flutter pub get
+ dart bin/create-secrets.dart '${{ secrets.LYRICS_SECRET }}' '${{ secrets.SPOTIFY_SECRET }}'
+
+ - name: Build Linux Packages
+ run: |
+ dart pub global activate flutter_distributor
+ flutter_distributor package --platform=linux --targets=deb,appimage,rpm --skip-clean
+ make tar
+
+ - name: Move Files to dist
+ run: |
+ mv build/Spotube-linux-x86_64.tar.xz dist/
+ mv dist/**/spotube-*-linux.deb dist/Spotube-linux-x86_64.deb
+ mv dist/**/spotube-*-linux.rpm dist/Spotube-linux-x86_64.rpm
+ mv dist/**/spotube-*-linux.AppImage dist/Spotube-linux-x86_64.AppImage
+
+ - uses: actions/upload-artifact@v3
+ with:
+ name: Spotube-Release-Binaries
+ path: dist/
+
+ android:
+ runs-on: ubuntu-22.04
+ steps:
+ - uses: actions/checkout@v3
+ - uses: subosito/flutter-action@v2.8.0
+ with:
+ cache: true
+
+ - name: Install Dependencies
+ run: |
+ sudo apt-get update -y
+ sudo apt-get install -y clang cmake ninja-build pkg-config libgtk-3-dev make python3-pip python3-setuptools patchelf desktop-file-utils libgdk-pixbuf2.0-dev fakeroot strace fuse
+
+ - name: Replace pubspec version (nightly)
+ if: ${{ inputs.channel == 'nightly' }}
+ run: |
+ curl -sS https://webi.sh/yq | sh
+ yq -i '.version |= sub("\+\d+", "+${{ inputs.channel }}.")' pubspec.yaml
+ yq -i '.version += strenv(GITHUB_RUN_NUMBER)' pubspec.yaml
+ echo "BUILD_VERSION=${{ inputs.version }}+${{ inputs.channel }}.${{ github.run_number }}" >> $GITHUB_ENV
+
+ - name: Replace pubspec version (stable)
+ if: ${{ inputs.channel == 'stable' }}
+ run: |
+ echo "BUILD_VERSION=${{ inputs.version }}" >> $GITHUB_ENV
+
+ - name: Create Stable .env
+ if: ${{ inputs.channel == 'stable' }}
+ run: echo '${{ secrets.DOTENV_RELEASE }}' > .env
+
+ - name: Create Nightly .env
+ if: ${{ inputs.channel == 'nightly' }}
+ run: echo '${{ secrets.DOTENV_NIGHTLY }}' > .env
+
+ - name: Generate Secrets and Build apk
+ run: |
+ flutter pub get
+ dart bin/create-secrets.dart '${{ secrets.LYRICS_SECRET }}' '${{ secrets.SPOTIFY_SECRET }}'
+
+ - name: Sign Apk
+ run: |
+ echo '${{ secrets.KEYSTORE }}' | base64 --decode > android/app/upload-keystore.jks
+ echo '${{ secrets.KEY_PROPERTIES }}' > android/key.properties
+
+ - name: Build Apk
+ run: |
+ flutter build apk
+ mv build/app/outputs/apk/release/app-release.apk build/Spotube-android-all-arch.apk
+
+ - uses: actions/upload-artifact@v3
+ with:
+ name: Spotube-Release-Binaries
+ path: |
+ build/Spotube-android-all-arch.apk
+
+ macos:
+ runs-on: macos-12
+ steps:
+ - uses: actions/checkout@v3
+ - uses: subosito/flutter-action@v2.8.0
+ with:
+ cache: true
+
+ - name: Replace pubspec version (nightly)
+ if: ${{ inputs.channel == 'nightly' }}
+ run: |
+ brew install yq
+ yq -i '.version |= sub("\+\d+", "+${{ inputs.channel }}.")' pubspec.yaml
+ yq -i '.version += strenv(GITHUB_RUN_NUMBER)' pubspec.yaml
+ echo "BUILD_VERSION=${{ inputs.version }}+${{ inputs.channel }}.${{ github.run_number }}" >> $GITHUB_ENV
+
+ - name: Replace pubspec version (stable)
+ if: ${{ inputs.channel == 'stable' }}
+ run: |
+ echo "BUILD_VERSION=${{ inputs.version }}" >> $GITHUB_ENV
+
+ - name: Create Stable .env
+ if: ${{ inputs.channel == 'stable' }}
+ run: echo '${{ secrets.DOTENV_RELEASE }}' > .env
+
+ - name: Create Nightly .env
+ if: ${{ inputs.channel == 'nightly' }}
+ run: echo '${{ secrets.DOTENV_NIGHTLY }}' > .env
+
+ - name: Generate Secrets
+ run: |
+ flutter pub get
+ dart bin/create-secrets.dart '${{ secrets.LYRICS_SECRET }}' '${{ secrets.SPOTIFY_SECRET }}'
+
+ - name: Build Macos App
+ run: |
+ flutter config --enable-macos-desktop
+ flutter build macos
+ du -sh build/macos/Build/Products/Release/spotube.app
+
+ - name: Package Macos App
+ run: |
+ npm install -g appdmg
+ mkdir -p build/${{ env.BUILD_VERSION }}
+ appdmg appdmg.json build/Spotube-macos-x86_64.dmg
+
+ - uses: actions/upload-artifact@v3
+ with:
+ name: Spotube-Release-Binaries
+ path: |
+ build/Spotube-macos-x86_64.dmg
+
+ upload:
+ runs-on: ubuntu-22.04
+ needs:
+ - windows
+ - linux
+ - android
+ - macos
+ steps:
+ - uses: actions/download-artifact@v3
+ with:
+ name: Spotube-Release-Binaries
+ path: ./Spotube-Release-Binaries
+
+ - name: Install dependencies
+ run: sudo apt-get install tree -y
+
+ - name: Generate Checksums
+ run: |
+ tree .
+ md5sum ./Spotube-Release-Binaries/* >> RELEASE.md5sum
+ sha256sum ./Spotube-Release-Binaries/* >> RELEASE.sha256sum
+ sed -i 's|./Spotube-Release-Binaries/||' RELEASE.sha256sum RELEASE.md5sum
+
+ - uses: actions/upload-artifact@v3
+ with:
+ name: Spotube-Release-Binaries
+ path: |
+ RELEASE.md5sum
+ RELEASE.sha256sum
+
+ - name: Upload Release Binaries (stable)
+ if: ${{ !inputs.dry_run && inputs.channel == 'stable' }}
+ uses: ncipollo/release-action@v1
+ with:
+ token: ${{ secrets.GITHUB_TOKEN }}
+ tag: v${{ inputs.version }} # mind the "v" prefix
+ omitBodyDuringUpdate: true
+ omitNameDuringUpdate: true
+ omitPrereleaseDuringUpdate: true
+ allowUpdates: true
+ artifacts: Spotube-Release-Binaries/*,RELEASE.sha256sum,RELEASE.md5sum
+
+ - name: Upload Release Binaries (nightly)
+ if: ${{ !inputs.dry_run && inputs.channel == 'nightly' }}
+ uses: ncipollo/release-action@v1
+ with:
+ token: ${{ secrets.GITHUB_TOKEN }}
+ tag: nightly
+ omitBodyDuringUpdate: true
+ omitNameDuringUpdate: true
+ omitPrereleaseDuringUpdate: true
+ allowUpdates: true
+ artifacts: Spotube-Release-Binaries/*,RELEASE.sha256sum,RELEASE.md5sum
diff --git a/.github/workflows/spotube-release.yml b/.github/workflows/spotube-release.yml
deleted file mode 100644
index 04542b7f..00000000
--- a/.github/workflows/spotube-release.yml
+++ /dev/null
@@ -1,311 +0,0 @@
-name: Spotube Release
-on:
- workflow_dispatch:
- inputs:
- version:
- description: "Version to release (x.x.x)"
- required: true
- default: "69.420.303"
- dry_run:
- description: "Dry run"
- required: true
- type: boolean
- default: false
-
-jobs:
- publish_chocolatey:
- runs-on: windows-latest
- steps:
- - uses: actions/checkout@v3
- - uses: actions/checkout@v3
- with:
- repository: KRTirtho/flutter_distributor
- ref: deb-implementation
- path: build/flutter_distributor
-
- - name: Replace version in files
- run: |
- choco install sed make -y
- sed -i "s/%{{SPOTUBE_VERSION}}%/${{ inputs.version }}/" windows/runner/Runner.rc
- sed -i "s/%{{SPOTUBE_VERSION}}%/${{ inputs.version }}/" choco-struct/tools/VERIFICATION.txt
- sed -i "s/%{{SPOTUBE_VERSION}}%/${{ inputs.version }}/" choco-struct/spotube.nuspec
-
- - uses: subosito/flutter-action@v2.8.0
- with:
- cache: true
-
- - name: Generating Secrets
- run: |
- echo '${{ secrets.DOTENV_RELEASE }}' > .env
- flutter config --enable-windows-desktop
- flutter pub get
- dart bin/create-secrets.dart '${{ secrets.LYRICS_SECRET }}' '${{ secrets.SPOTIFY_SECRET }}'
-
- - name: Build Windows Executable
- run: |
- dart pub global activate flutter_distributor
- make innoinstall
- flutter_distributor package --platform=windows --targets=exe --skip-clean
-
- - name: Create Chocolatey Package and set hash
- run: |
- mv dist/**/spotube-*-windows.exe dist/Spotube-windows-x86_64-setup.exe
- Set-Variable -Name HASH -Value (Get-FileHash dist\Spotube-windows-x86_64-setup.exe).Hash
- sed -i "s/%{{WIN_SHA256}}%/$HASH/" choco-struct/tools/VERIFICATION.txt
- make choco
-
- - run: mv dist/spotube.*.nupkg dist/Spotube-windows-x86_64.nupkg
-
- - name: Publish to Chocolatey Repository
- if: ${{ !inputs.dry_run }}
- run: |
- choco apikey -k ${{ secrets.CHOCO_API_KEY }} -s https://push.chocolatey.org/
- choco push dist/Spotube-windows-x86_64.nupkg
- echo 'published to community.chocolatey.org'
-
- - name: Upload Artifact
- uses: actions/upload-artifact@v3
- with:
- name: Spotube-Windows-Bundle
- path: dist/
-
- - name: Connect via SSH on failure
- if: ${{ failure() }}
- uses: mxschmitt/action-tmate@v3
- with:
- limit-access-to-actor: true
- timeout-minutes: 15
-
- publish_macos:
- runs-on: macos-11
- steps:
- - uses: actions/checkout@v3
- - uses: subosito/flutter-action@v2.8.0
- with:
- cache: true
- - run: echo '${{ secrets.DOTENV_RELEASE }}' > .env
- - run: flutter config --enable-macos-desktop
- - run: flutter pub get
- - run: dart bin/create-secrets.dart '${{ secrets.LYRICS_SECRET }}' '${{ secrets.SPOTIFY_SECRET }}'
- - run: flutter build macos
- - run: du -sh build/macos/Build/Products/Release/spotube.app
- - run: npm install -g appdmg
- - run: mkdir -p build/${{ inputs.version }}
- - run: appdmg appdmg.json build/${{ inputs.version }}/Spotube-macos-x86_64.dmg
- - uses: actions/upload-artifact@v3
- with:
- name: Spotube-Macos-Bundle
- path: |
- build/${{ inputs.version }}/Spotube-macos-x86_64.dmg
-
- publish_linux:
- runs-on: ubuntu-22.04
- steps:
- - uses: actions/checkout@v3
- - uses: subosito/flutter-action@v2.8.0
- with:
- cache: true
-
- - name: Get current date
- id: date
- run: echo "::set-output name=date::$(date +'%Y-%m-%d')"
-
- - name: Install Dependencies
- run: |
- sudo apt-get update -y
- sudo apt-get install -y tar clang cmake ninja-build pkg-config libgtk-3-dev make python3-pip python3-setuptools patchelf desktop-file-utils libgdk-pixbuf2.0-dev fakeroot strace fuse libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libunwind-dev locate patchelf
-
- - name: Install AppImage Tool
- run: |
- wget -O appimagetool "https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage"
- chmod +x appimagetool
- mv appimagetool /usr/local/bin/
-
- - name: Replace Version in files
- run: |
- sed -i 's|%{{APPDATA_RELEASE}}%||' linux/com.github.KRTirtho.Spotube.appdata.xml
- echo '${{ secrets.DOTENV_RELEASE }}' > .env
-
- - name: Generate Secrets
- run: |
- flutter config --enable-linux-desktop
- flutter pub get
- dart bin/create-secrets.dart '${{ secrets.LYRICS_SECRET }}' '${{ secrets.SPOTIFY_SECRET }}'
-
- - name: Build Linux Packages
- run: |
- dart pub global activate flutter_distributor
- flutter_distributor package --platform=linux --targets=deb,appimage,rpm --skip-clean
- make tar
-
- - name: Move Files to dist
- run: |
- mv build/Spotube-linux-x86_64.tar.xz dist/
- mv dist/**/spotube-*-linux.deb dist/Spotube-linux-x86_64.deb
- mv dist/**/spotube-*-linux.rpm dist/Spotube-linux-x86_64.rpm
- mv dist/**/spotube-*-linux.AppImage dist/Spotube-linux-x86_64.AppImage
-
- - uses: actions/upload-artifact@v3
- with:
- name: Spotube-Linux-Bundle
- path: dist/
-
- publish_android:
- runs-on: ubuntu-22.04
- steps:
- - uses: actions/checkout@v3
- - uses: subosito/flutter-action@v2.8.0
- with:
- cache: true
-
- - name: Install Dependencies
- run: |
- sudo apt-get update -y
- sudo apt-get install -y clang cmake ninja-build pkg-config libgtk-3-dev make python3-pip python3-setuptools patchelf desktop-file-utils libgdk-pixbuf2.0-dev fakeroot strace fuse
-
- - name: Generate Secrets and Build apk
- run: |
- echo '${{ secrets.DOTENV_RELEASE }}' > .env
- flutter pub get
- dart bin/create-secrets.dart '${{ secrets.LYRICS_SECRET }}' '${{ secrets.SPOTIFY_SECRET }}'
- echo '${{ secrets.KEYSTORE }}' | base64 --decode > android/app/upload-keystore.jks
- echo '${{ secrets.KEY_PROPERTIES }}' > android/key.properties
- flutter build apk
- make apk
-
- - uses: actions/upload-artifact@v3
- with:
- name: Spotube-Android-Bundle
- path: |
- build/Spotube-android-all-arch.apk
-
- update_release:
- needs:
- - publish_chocolatey
- - publish_macos
- - publish_linux
- - publish_android
- runs-on: ubuntu-22.04
- permissions:
- contents: write
- steps:
- - uses: actions/download-artifact@v3
- with:
- name: Spotube-Windows-Bundle
- path: ./Spotube-Windows-Bundle
- - uses: actions/download-artifact@v3
- with:
- name: Spotube-Macos-Bundle
- path: ./Spotube-Macos-Bundle
- - uses: actions/download-artifact@v3
- with:
- name: Spotube-Linux-Bundle
- path: ./Spotube-Linux-Bundle
- - uses: actions/download-artifact@v3
- with:
- name: Spotube-Android-Bundle
- path: ./Spotube-Android-Bundle
-
- - name: Install dependencies
- run: sudo apt-get install tree -y
-
- - name: Generate Checksums
- run: |
- tree .
- md5sum ./Spotube-Windows-Bundle/*.{exe,nupkg} >> RELEASE.md5sum
- md5sum ./Spotube-Macos-Bundle/*.dmg >> RELEASE.md5sum
- md5sum ./Spotube-Linux-Bundle/*.{AppImage,tar.xz,deb,rpm} >> RELEASE.md5sum
- md5sum ./Spotube-Android-Bundle/*.apk >> RELEASE.md5sum
- sha256sum ./Spotube-Macos-Bundle/*.dmg >> RELEASE.sha256sum
- sha256sum ./Spotube-Windows-Bundle/*.{exe,nupkg} >> RELEASE.sha256sum
- sha256sum ./Spotube-Linux-Bundle/*.{AppImage,tar.xz,deb,rpm} >> RELEASE.sha256sum
- sha256sum ./Spotube-Android-Bundle/*.apk >> RELEASE.sha256sum
- sed -i 's|Spotube-.*-Bundle/||' RELEASE.sha256sum RELEASE.md5sum
-
- - uses: actions/upload-artifact@v3
- with:
- name: Spotube-Sums-Bundle
- path: |
- RELEASE.md5sum
- RELEASE.sha256sum
-
- - name: Upload Release Binaries
- if: ${{ !inputs.dry_run }}
- uses: ncipollo/release-action@v1
- with:
- token: ${{ secrets.GITHUB_TOKEN }}
- tag: v${{ inputs.version }}
- omitBodyDuringUpdate: true
- omitNameDuringUpdate: true
- omitPrereleaseDuringUpdate: true
- allowUpdates: true
- artifacts: Spotube-Windows-Bundle/*,Spotube-Macos-Bundle/*,Spotube-Linux-Bundle/*,Spotube-Android-Bundle/*,RELEASE.sha256sum,RELEASE.md5sum
-
- publish_winget:
- needs: update_release
- runs-on: windows-latest
- if: ${{ !inputs.dry_run }}
- steps:
- - name: Release winget package
- uses: vedantmgoyal2009/winget-releaser@v2
- with:
- version: ${{ inputs.version }}
- release-tag: v${{ inputs.version }}
- identifier: KRTirtho.Spotube
- token: ${{ secrets.WINGET_TOKEN }}
-
- publish_flathub:
- needs: update_release
- runs-on: ubuntu-22.04
- steps:
- - uses: actions/checkout@v3
- with:
- repository: flathub/com.github.KRTirtho.Spotube
- token: ${{ secrets.FLATHUB_TOKEN }}
- - uses: actions/checkout@v3
- with:
- path: spotube
-
- - name: Update flathub version
- run: |
- python3 spotube/scripts/update_flathub_version.py ${{ inputs.version }}
- rm -rf spotube
- git config --global user.email "krtirtho@gmail.com"
- git config --global user.name "Kingkor Roy Tirtho"
- git add .
- git commit -m "v${{ inputs.version }} Update"
- git branch update-${{ inputs.version }}
- git switch update-${{ inputs.version }}
-
- - name: Push to flathub
- if: ${{ !inputs.dry_run }}
- run: git push -u origin update-${{ inputs.version }}
-
- publish_aur:
- needs: update_release
- runs-on: ubuntu-22.04
- steps:
- - uses: actions/checkout@v3
-
- - name: Download Linux artifacts
- uses: actions/download-artifact@v3
- with:
- name: Spotube-Linux-Bundle
- path: ./Spotube-Linux-Bundle
-
- - name: Update PKGBUILD versions
- run: |
- sed -i "s/%{{SPOTUBE_VERSION}}%/${{ inputs.version }}/" aur-struct/PKGBUILD
- sed -i "s/%{{PKGREL}}%/1/" aur-struct/PKGBUILD
- sed -i "s/%{{LINUX_MD5}}%/`md5sum Spotube-Linux-Bundle/Spotube-linux-x86_64.tar.xz | awk '{print $1}'`/" aur-struct/PKGBUILD
-
- - name: Release to AUR
- if: ${{ !inputs.dry_run }}
- uses: KSXGitHub/github-actions-deploy-aur@v2.6.0
- with:
- pkgname: spotube-bin
- pkgbuild: aur-struct/PKGBUILD
- commit_username: ${{ secrets.AUR_USERNAME }}
- commit_email: ${{ secrets.AUR_EMAIL }}
- ssh_private_key: ${{ secrets.AUR_SSH_PRIVATE_KEY }}
- commit_message: Updated to v${{ inputs.version }}
diff --git a/.vscode/settings.json b/.vscode/settings.json
index 9f4bfc59..1b5691af 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -2,6 +2,7 @@
"cmake.configureOnOpen": false,
"cSpell.words": [
"Mpris",
- "Spotube"
+ "Spotube",
+ "winget"
]
}
diff --git a/lib/services/mobile_audio_service.dart b/lib/services/mobile_audio_service.dart
index 713ddb51..c21f0c0b 100644
--- a/lib/services/mobile_audio_service.dart
+++ b/lib/services/mobile_audio_service.dart
@@ -30,16 +30,6 @@ class MobileAudioService extends BaseAudioHandler {
audioPlayer.onPositionChanged.listen((pos) async {
playbackState.add(await _transformEvent());
});
-
- audioPlayer.onPlayerComplete.listen((_) {
- if (playlist == null) {
- playbackState.add(
- PlaybackState(
- processingState: AudioProcessingState.completed,
- ),
- );
- }
- });
}
void addItem(MediaItem item) {