diff --git a/.github/workflows/flutter-build.yml b/.github/workflows/flutter-build.yml deleted file mode 100644 index 42fba506..00000000 --- a/.github/workflows/flutter-build.yml +++ /dev/null @@ -1,85 +0,0 @@ -name: Flutter Cross Build -on: - push: - branches: - - build - workflow_dispatch: - -jobs: - build_ubuntu: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - uses: subosito/flutter-action@v2.2.0 - with: - cache: true - - run: | - sudo apt-get update -y - sudo apt-get install -y tar clang cmake ninja-build pkg-config libgtk-3-dev make libwebkit2gtk-4.0-dev keybinder-3.0 python3-pip python3-setuptools patchelf desktop-file-utils libgdk-pixbuf2.0-dev fakeroot strace fuse - - run: flutter config --enable-linux-desktop - - run: flutter pub get - - run: dart bin/create-secrets.dart '${{ secrets.LYRICS_SECRET }}' '${{ secrets.SPOTIFY_SECRET }}' - - run: flutter clean - - run: flutter build linux - - run: make deb - - run: make tar - - run: wget https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage -O /usr/local/bin/appimagetool - - run: chmod +x /usr/local/bin/appimagetool - - run: pip3 install appimage-builder - - run: make appimage - - uses: actions/upload-artifact@v2 - with: - name: Spotube-Linux-Bundle - path: | - build/Spotube-linux-x86_64.deb - build/Spotube-linux-x86_64.tar.xz - build/Spotube-*-x86_64.AppImage - # Building Android Application - - run: echo '${{ secrets.KEYSTORE }}' | base64 --decode > android/app/upload-keystore.jks - - run: echo '${{ secrets.KEY_PROPERTIES }}' > android/key.properties - - run: flutter build apk - - run: make apk - - uses: actions/upload-artifact@v2 - with: - name: Spotube-Android-Bundle - path: | - build/Spotube-android-all-arch.apk - build_windows: - runs-on: windows-latest - steps: - - uses: actions/checkout@v2 - - uses: subosito/flutter-action@v2.2.0 - with: - cache: true - - run: flutter config --enable-windows-desktop - - run: flutter pub get - - run: dart bin/create-secrets.dart '${{ secrets.LYRICS_SECRET }}' '${{ secrets.SPOTIFY_SECRET }}' - - run: flutter build windows - - run: ls build/windows/runner/Release - - run: choco install make -y - - run: make innoinstall - - run: make inno - - uses: actions/upload-artifact@v2 - with: - name: Spotube-Windows-Bundle - path: | - build/installer/Spotube-windows-x86_64-setup.exe - build_macos: - runs-on: macos-11 - steps: - - uses: actions/checkout@v2 - - uses: subosito/flutter-action@v2 - with: - cache: true - - 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: appdmg appdmg.json build/Spotube-macos-x86_64.dmg - - uses: actions/upload-artifact@v2 - with: - name: Spotube-Macos-Bundle - path: | - build/Spotube-macos-x86_64.dmg diff --git a/.github/workflows/spotube-nightly.yml b/.github/workflows/spotube-nightly.yml new file mode 100644 index 00000000..5600ab46 --- /dev/null +++ b/.github/workflows/spotube-nightly.yml @@ -0,0 +1,134 @@ +name: Spotube Nightly +on: + push: + branches: + - build + workflow_dispatch: + +jobs: + build_ubuntu: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Get latest tag + id: tag + uses: dawidd6/action-get-tag@v1 + with: + strip_v: true + - uses: subosito/flutter-action@v2 + with: + cache: true + - name: Get current date + id: date + run: echo "::set-output name=date::$(date +'%Y-%m-%d')" + - 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 + - run: | + wget -O appimage-builder-x86_64.AppImage https://github.com/AppImageCrafters/appimage-builder/releases/download/v1.0.0-beta.1/appimage-builder-1.0.0-677acbd-x86_64.AppImage + chmod +x appimage-builder-x86_64.AppImage + mv appimage-builder-x86_64.AppImage /usr/local/bin/appimage-builder + # replacing & adding new release version with older version + - run: | + sed -i 's|%{{APPDATA_RELEASE}}%||' linux/com.github.KRTirtho.Spotube.appdata.xml + + - run: | + flutter config --enable-linux-desktop + flutter pub get + dart bin/create-secrets.dart '${{ secrets.LYRICS_SECRET }}' '${{ secrets.SPOTIFY_SECRET }}' + dart pub global activate flutter_distributor + flutter_distributor package --platform=linux --targets=deb,appimage --skip-clean + make tar + - 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.AppImage dist/Spotube-linux-x86_64.AppImage + - uses: actions/upload-artifact@v3 + with: + name: Spotube-Linux-Bundle + path: dist/ + + build_android: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Get latest tag + id: tag + uses: dawidd6/action-get-tag@v1 + with: + strip_v: true + - uses: subosito/flutter-action@v2 + with: + cache: true + - 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 + - run: | + flutter pub get + dart bin/create-secrets.dart '${{ secrets.LYRICS_SECRET }}' '${{ secrets.SPOTIFY_SECRET }}' + dart pub global activate flutter_distributor + flutter_distributor package --platform=android --targets=apk --skip-clean + - run: | + mv dist/**/spotube-*-android.apk dist/Spotube-android-all-arch.apk + - uses: actions/upload-artifact@v3 + with: + name: Spotube-Android-Bundle + path: dist/ + + build_windows: + runs-on: windows-latest + steps: + - uses: actions/checkout@v3 + - name: Get latest tag + id: tag + uses: dawidd6/action-get-tag@v1 + with: + # Optionally strip `v` prefix + strip_v: true + # Replace Version in files + - run: | + choco install sed make -y + sed -i "s/%{{SPOTUBE_VERSION}}%/${{ steps.tag.outputs.tag }}/" windows/runner/Runner.rc + + # Build Windows Executable + - uses: subosito/flutter-action@v2.2.0 + with: + cache: true + - run: | + flutter config --enable-windows-desktop + flutter pub get + dart bin/create-secrets.dart '${{ secrets.LYRICS_SECRET }}' '${{ secrets.SPOTIFY_SECRET }}' + dart pub global activate flutter_distributor + make innoinstall + flutter_distributor package --platform=windows --targets=exe --skip-clean + + # Create Chocolatey Package + # setting the sha256 hash for new bundle + - run: mv dist/**/spotube-*-windows-setup.exe dist/Spotube-windows-x86_64-setup.exe + + # Upload artifacts + - uses: actions/upload-artifact@v3 + with: + name: Spotube-Windows-Bundle + path: dist/ + + + build_macos: + runs-on: macos-11 + steps: + - uses: actions/checkout@v2 + - uses: subosito/flutter-action@v2 + with: + cache: true + - 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: appdmg appdmg.json build/Spotube-macos-x86_64.dmg + - uses: actions/upload-artifact@v2 + with: + name: Spotube-Macos-Bundle + path: | + build/Spotube-macos-x86_64.dmg \ No newline at end of file diff --git a/.github/workflows/release-build.yml b/.github/workflows/spotube-release.yml similarity index 87% rename from .github/workflows/release-build.yml rename to .github/workflows/spotube-release.yml index becf00bf..1951583c 100644 --- a/.github/workflows/release-build.yml +++ b/.github/workflows/spotube-release.yml @@ -1,4 +1,4 @@ -name: Spotube Build & Release +name: Spotube Release on: release: types: @@ -36,9 +36,8 @@ jobs: flutter pub get dart bin/create-secrets.dart '${{ secrets.LYRICS_SECRET }}' '${{ secrets.SPOTIFY_SECRET }}' dart pub global activate melos - cd build/flutter_distributor && melos bootstrap && cd ../.. make innoinstall - dart build/flutter_distributor/packages/flutter_distributor/bin/main.dart package --platform=windows --targets=exe --skip-clean + flutter_distributor package --platform=windows --targets=exe --skip-clean # Create Chocolatey Package # setting the sha256 hash for new bundle @@ -93,11 +92,6 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - - uses: actions/checkout@v3 - with: - repository: KRTirtho/flutter_distributor - ref: deb-implementation - path: build/flutter_distributor - name: Get latest tag id: tag uses: dawidd6/action-get-tag@v1 @@ -111,7 +105,7 @@ jobs: run: echo "::set-output name=date::$(date +'%Y-%m-%d')" - run: | sudo apt-get update -y - sudo apt-get install -y tar clang cmake ninja-build pkg-config libgtk-3-dev make libwebkit2gtk-4.0-dev keybinder-3.0 python3-pip python3-setuptools patchelf desktop-file-utils libgdk-pixbuf2.0-dev fakeroot strace fuse + 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 - run: | wget -O appimage-builder-x86_64.AppImage https://github.com/AppImageCrafters/appimage-builder/releases/download/v1.0.0-beta.1/appimage-builder-1.0.0-677acbd-x86_64.AppImage chmod +x appimage-builder-x86_64.AppImage @@ -124,9 +118,8 @@ jobs: flutter config --enable-linux-desktop flutter pub get dart bin/create-secrets.dart '${{ secrets.LYRICS_SECRET }}' '${{ secrets.SPOTIFY_SECRET }}' - dart pub global activate melos - cd build/flutter_distributor && melos bootstrap && cd ../.. - dart build/flutter_distributor/packages/flutter_distributor/bin/main.dart package --platform=linux --targets=deb,appimage --skip-clean + dart pub global activate flutter_distributor + flutter_distributor package --platform=linux --targets=deb,appimage --skip-clean make tar - run: | mv build/Spotube-linux-x86_64.tar.xz dist/ @@ -141,11 +134,6 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - - uses: actions/checkout@v3 - with: - repository: KRTirtho/flutter_distributor - ref: deb-implementation - path: build/flutter_distributor - name: Get latest tag id: tag uses: dawidd6/action-get-tag@v1 @@ -156,13 +144,12 @@ jobs: cache: true - run: | sudo apt-get update -y - sudo apt-get install -y clang cmake ninja-build pkg-config libgtk-3-dev make libwebkit2gtk-4.0-dev keybinder-3.0 python3-pip python3-setuptools patchelf desktop-file-utils libgdk-pixbuf2.0-dev fakeroot strace fuse + 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 - run: | flutter pub get dart bin/create-secrets.dart '${{ secrets.LYRICS_SECRET }}' '${{ secrets.SPOTIFY_SECRET }}' - dart pub global activate melos - cd build/flutter_distributor && melos bootstrap && cd ../.. - dart build/flutter_distributor/packages/flutter_distributor/bin/main.dart package --platform=android --targets=apk --skip-clean + dart pub global activate flutter_distributor + flutter_distributor package --platform=android --targets=apk --skip-clean - run: | mv dist/**/spotube-*-android.apk dist/Spotube-android-all-arch.apk - uses: actions/upload-artifact@v3 diff --git a/CONTRIBUTION.md b/CONTRIBUTION.md index 2d1db363..db5423a8 100644 --- a/CONTRIBUTION.md +++ b/CONTRIBUTION.md @@ -114,13 +114,11 @@ Enhancement suggestions are tracked as [GitHub issues](https://github.com/KRTirt ### Your First Code Contribution -audioplayers requirement https://github.com/bluefireteam/audioplayers/blob/main/packages/audioplayers_linux/requirements.md - Do the following: - Download the latest Flutter SDK (>=2.15.1) & enable desktop support - Install Development dependencies in linux - - `libwebkit2gtk-4.0-dev`, `libkeybinder-3.0-0` & `libkeybinder-3.0-dev` (for Debian/Ubuntu) - - `webkit2gtk` & `libkeybinder3` (for Arch/Manjaro) + - `libgstreamer1.0-dev` & `libgstreamer-plugins-base1.0-dev` (for Debian/Ubuntu) + - `gstreamer`, `gst-libav`, `gst-plugins-base` & `gst-plugins-good` (for Arch/Manjaro) - Clone the Repo & Run `flutter pub get` in the Terminal - Create a `secrets.json` in root of the project. The structure should be similar to the following example: ```jsoc name="secrets.json" @@ -144,7 +142,7 @@ Do the following: > You can add more clientId/clientSecret/genius-access-token if you want. The credentials used in the example are dummy (fake). You've to use your own secrets - Finally run these following commands in the root of the project to start the Spotube Locally ```bash - $ dart create-secrets.dart --local + $ dart bin/create-secrets.dart --local $ flutter run -d )> ``` diff --git a/README.md b/README.md index 1510d89e..807516d8 100644 --- a/README.md +++ b/README.md @@ -127,8 +127,7 @@ Bu why? You can learn about it [here](https://dev.to/krtirtho/choosing-open-sour - [AUR](https://aur.archlinux.org/) - AUR stands for Arch User Repository. It is a community-driven repository for Arch-based Linux distributions users - [Flatpak](https://flatpak.org/) - Flatpak is a utility for software deployment and package management for Linux - [spotify (dart)](https://github.com/rinukkusu/spotify-dart) - A dart library for interfacing with the Spotify API -- [just_audio](https://github.com/ryanheise/just_audio/tree/master/just_audio) - A feature-rich cross-platform audio player for Flutter that supports network audio streams too -- [libwinmedia](https://github.com/harmonoid/libwinmedia) - A cross-platform media playback library for C/C++ with good number of features (only Windows & Linux) +- [audioplayers](https://github.com/bluefireteam/audioplayers) - A Flutter plugin to play multiple audio files simultaneously (Android/iOS) - [youtube_explode_dart](https://github.com/Hexer10/youtube_explode_dart) - YoutubeExplode is a library that provides an interface to query metadata of YouTube videos, playlists and channels, as well as to resolve and download video streams and closed caption tracks - [infinite_scroll_pagination](https://github.com/EdsonBueno/infinite_scroll_pagination) - Flutter package to help you lazily load and display pages of items as the user scrolls down your screen - [bitsdojo_window](https://github.com/bitsdojo/bitsdojo_window) - A Flutter package that makes it easy to customize and work with your Flutter desktop app window on Windows, macOS and Linux