diff --git a/.eslintrc.json b/.eslintrc.json deleted file mode 100644 index b490d764..00000000 --- a/.eslintrc.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "env": { - "browser": true, - "es2021": true - }, - "extends": [ - "eslint:recommended", - "plugin:react/recommended" - ], - "parserOptions": { - "ecmaVersion": "latest", - "sourceType": "module" - }, - "plugins": [ - "react", - "react-refresh" - ], - "rules": { - "no-mixed-spaces-and-tabs": "off", - "react/prop-types": "off", - "react-refresh/only-export-components": "warn" - } -} \ No newline at end of file diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml deleted file mode 100644 index 74e21d11..00000000 --- a/.github/workflows/build.yml +++ /dev/null @@ -1,78 +0,0 @@ -# @format - -name: Release -on: - push: - tags: - - "v*" - workflow_dispatch: - -jobs: - release: - strategy: - fail-fast: false - matrix: - platform: [macos-latest, ubuntu-22.04, windows-latest] - runs-on: ${{ matrix.platform }} - environment: TAURI - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - - name: Install dependencies (ubuntu only) - if: matrix.platform == 'ubuntu-22.04' - # You can remove libayatana-appindicator3-dev if you don't use the system tray feature. - run: | - sudo apt-get update - sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.0-dev librsvg2-dev - - - name: Rust setup - uses: dtolnay/rust-toolchain@stable - - - name: Rust cache - uses: swatinem/rust-cache@v2 - with: - workspaces: "./src-tauri -> target" - - - uses: pnpm/action-setup@v2 - name: Install pnpm - with: - version: 7 - run_install: false - - - name: Get pnpm store directory - shell: bash - run: | - echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV - - - uses: actions/cache@v3 - name: Setup pnpm cache - with: - path: ${{ env.STORE_PATH }} - key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} - restore-keys: | - ${{ runner.os }}-pnpm-store- - - - name: Sync node version and setup cache - uses: actions/setup-node@v4 - with: - node-version: "lts/*" - cache: "pnpm" # Set this to npm, yarn or pnpm. - - - name: Install app dependencies and build web - # Remove `&& yarn build` if you build your frontend in `beforeBuildCommand` - run: pnpm install --no-frozen-lockfile && pnpm run build # Change this to npm, yarn or pnpm. - - - name: Build the app - uses: tauri-apps/tauri-action@dev - - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - TAURI_PRIVATE_KEY: ${{ secrets.TAURI_PRIVATE_KEY }} - TAURI_KEY_PASSWORD: ${{ secrets.TAURI_KEY_PASSWORD }} - with: - tagName: ${{ github.ref_name }} # This only works if your workflow triggers on new tags. - releaseName: "App Name v__VERSION__" # tauri-action replaces \_\_VERSION\_\_ with the app version. - releaseBody: "See the assets to download and install this version." - releaseDraft: true - prerelease: false diff --git a/.github/workflows/continuous-integration.yml b/.github/workflows/continuous-integration.yml new file mode 100644 index 00000000..2f85e952 --- /dev/null +++ b/.github/workflows/continuous-integration.yml @@ -0,0 +1,120 @@ +# @format + +name: Continuous Integration +on: + push: + branches: + - main + pull_request: + types: [opened, synchronize, reopened, ready_for_review] + +jobs: + build_web: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - uses: pnpm/action-setup@v2 + name: Install pnpm + with: + version: 7 + run_install: false + + - name: Get pnpm store directory + shell: bash + run: | + echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV + + - uses: actions/cache@v4 + name: Setup pnpm cache + with: + path: ${{ env.STORE_PATH }} + key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} + restore-keys: | + ${{ runner.os }}-pnpm-store- + + - name: Sync node version and setup cache + uses: actions/setup-node@v4 + with: + node-version: "lts/*" + cache: "pnpm" + + - name: Install dependencies + run: pnpm install --no-frozen-lockfile + + # - name: Lint + # run: pnpm run lint + + - name: Build + run: pnpm run build + + build: + needs: build_web + # Prevent forked PRs from running the build job which is expensive + if: github.repository == 'prayag17/JellyPlayer' + strategy: + fail-fast: false + matrix: + platform: [macos-latest, ubuntu-22.04, windows-latest] + runs-on: ${{ matrix.platform }} + environment: TAURI + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Install dependencies (ubuntu only) + if: matrix.platform == 'ubuntu-22.04' + # You can remove libayatana-appindicator3-dev if you don't use the system tray feature. + run: | + sudo apt-get update + sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.0-dev librsvg2-dev + + - name: Rust setup + uses: dtolnay/rust-toolchain@stable + + - name: Rust cache + uses: swatinem/rust-cache@v2 + with: + workspaces: "./src-tauri -> target" + + - uses: pnpm/action-setup@v2 + name: Install pnpm + with: + version: 7 + run_install: false + + - name: Get pnpm store directory + shell: bash + run: | + echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV + + - uses: actions/cache@v4 + name: Setup pnpm cache + with: + path: ${{ env.STORE_PATH }} + key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} + restore-keys: | + ${{ runner.os }}-pnpm-store- + + - name: Sync node version and setup cache + uses: actions/setup-node@v4 + with: + node-version: "lts/*" + cache: "pnpm" + + - name: Install dependencies + run: pnpm install --no-frozen-lockfile + + - name: Build app + run: pnpm run tauri build --bundles "deb" "appimage" "nsis" "app" "dmg" + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + TAURI_PRIVATE_KEY: ${{ secrets.TAURI_PRIVATE_KEY }} + TAURI_KEY_PASSWORD: ${{ secrets.TAURI_KEY_PASSWORD }} + + - name: Upload build Artifacts + uses: actions/upload-artifact@v4 + with: + name: JellyPlayer-${{ matrix.platform }}-dev${{ github.sha }} + path: src-tauri/target/release/bundle/* diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 00000000..f1a0e835 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,78 @@ +# @format + +name: Release +on: + push: + tags: + - "v*" + workflow_dispatch: + +jobs: + release: + strategy: + fail-fast: false + matrix: + platform: [macos-latest, ubuntu-22.04, windows-latest] + runs-on: ${{ matrix.platform }} + environment: TAURI + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Install dependencies (ubuntu only) + if: matrix.platform == 'ubuntu-22.04' + # You can remove libayatana-appindicator3-dev if you don't use the system tray feature. + run: | + sudo apt-get update + sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.0-dev librsvg2-dev + + - name: Rust setup + uses: dtolnay/rust-toolchain@stable + + - name: Rust cache + uses: swatinem/rust-cache@v2 + with: + workspaces: "./src-tauri -> target" + + - uses: pnpm/action-setup@v2 + name: Install pnpm + with: + version: 7 + run_install: false + + - name: Get pnpm store directory + shell: bash + run: | + echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV + + - uses: actions/cache@v4 + name: Setup pnpm cache + with: + path: ${{ env.STORE_PATH }} + key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} + restore-keys: | + ${{ runner.os }}-pnpm-store- + + - name: Sync node version and setup cache + uses: actions/setup-node@v4 + with: + node-version: "lts/*" + cache: "pnpm" # Set this to npm, yarn or pnpm. + + - name: Install app dependencies and build web + # Remove `&& yarn build` if you build your frontend in `beforeBuildCommand` + run: pnpm install --no-frozen-lockfile && pnpm run build # Change this to npm, yarn or pnpm. + + - name: Build the app + uses: tauri-apps/tauri-action@dev + + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + TAURI_PRIVATE_KEY: ${{ secrets.TAURI_PRIVATE_KEY }} + TAURI_KEY_PASSWORD: ${{ secrets.TAURI_KEY_PASSWORD }} + with: + tagName: ${{ github.ref_name }} # This only works if your workflow triggers on new tags. + releaseName: "App Name v__VERSION__" # tauri-action replaces \_\_VERSION\_\_ with the app version. + releaseBody: "See the assets to download and install this version." + releaseDraft: true + prerelease: false diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 00000000..4a151ee9 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,9 @@ +{ + "recommendations": [ + "biomejs.biome", + "github.vscode-github-actions", + "esbenp.prettier-vscode", + "swellaby.rust-pack", + "1yib.rust-bundle" + ] +} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json index 13ee2b04..5feb47e9 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,3 +1,27 @@ { - "nuxt.isNuxtApp": false -} \ No newline at end of file + "editor.defaultFormatter": "biomejs.biome", + "editor.codeActionsOnSave": { + "quickfix.biome": "always", + "source.organizeImports.biome": "explicit" + }, + "[github-actions-workflow]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[json]": { + "editor.defaultFormatter": "biomejs.biome" + }, + "[typescriptreact]": { + "editor.defaultFormatter": "biomejs.biome" + }, + "[typescript]": { + "editor.defaultFormatter": "biomejs.biome" + }, + "[javascriptreact]": { + "editor.defaultFormatter": "biomejs.biome" + }, + "[javascript]": { + "editor.defaultFormatter": "biomejs.biome" + }, + "rust-analyzer.linkedProjects": ["./src-tauri/Cargo.toml"], + "typescript.tsdk": "node_modules/typescript/lib" +} diff --git a/biome.json b/biome.json new file mode 100644 index 00000000..3227448c --- /dev/null +++ b/biome.json @@ -0,0 +1,34 @@ +{ + "$schema": "https://biomejs.dev/schemas/1.5.0/schema.json", + "organizeImports": { + "enabled": true + }, + "linter": { + "enabled": true, + "rules": { + "recommended": true, + "style": { + "noNonNullAssertion": "off" + }, + "a11y": { + "useKeyWithClickEvents": "off" + }, + "correctness": { + "useExhaustiveDependencies": "off" + }, + "nursery": { + "noUnusedImports": "off" + } + } + }, + "files": { + "include": [ + "src/**/*.ts", + "src/**/*.tsx", + "src/**/*.jsx", + "src/**/*.js", + "*.json" + ], + "ignoreUnknown": true + } +} diff --git a/index.html b/index.html index af3c0709..ffd8af59 100644 --- a/index.html +++ b/index.html @@ -5,7 +5,6 @@