add notice about webview wrappers
This commit is contained in:
parent
860fb8181e
commit
9ef8f47071
3 changed files with 117 additions and 81 deletions
81
.github/workflows/create-release.yml
vendored
81
.github/workflows/create-release.yml
vendored
|
|
@ -1,81 +0,0 @@
|
||||||
name: Create New Release
|
|
||||||
|
|
||||||
on:
|
|
||||||
workflow_dispatch:
|
|
||||||
inputs:
|
|
||||||
new_tag:
|
|
||||||
description: 'Tag name for the new release'
|
|
||||||
required: true
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
create_release:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Check out code
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
fetch-depth: 0
|
|
||||||
|
|
||||||
- name: Get latest release tag from GitHub
|
|
||||||
id: latest_release
|
|
||||||
uses: actions/github-script@v6
|
|
||||||
with:
|
|
||||||
script: |
|
|
||||||
try {
|
|
||||||
const latestRelease = await github.rest.repos.getLatestRelease({
|
|
||||||
owner: context.repo.owner,
|
|
||||||
repo: context.repo.repo
|
|
||||||
});
|
|
||||||
core.info(`Latest release tag: ${latestRelease.data.tag_name}`);
|
|
||||||
core.setOutput('last_release', latestRelease.data.tag_name);
|
|
||||||
} catch (error) {
|
|
||||||
core.info("No previous release found.");
|
|
||||||
// If no release exists, output an empty string.
|
|
||||||
core.setOutput('last_release', '');
|
|
||||||
}
|
|
||||||
|
|
||||||
- name: Set new release tag from input
|
|
||||||
id: new_tag
|
|
||||||
run: |
|
|
||||||
echo "NEW_TAG=${{ github.event.inputs.new_tag }}" >> $GITHUB_OUTPUT
|
|
||||||
|
|
||||||
- name: Generate commit log for new release
|
|
||||||
id: commits
|
|
||||||
run: |
|
|
||||||
LAST_RELEASE="${{ steps.latest_release.outputs.last_release }}"
|
|
||||||
NEW_TAG="${{ steps.new_tag.outputs.NEW_TAG }}"
|
|
||||||
|
|
||||||
if [ -z "$NEW_TAG" ]; then
|
|
||||||
echo "No new tag provided. Exiting."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -z "${LAST_RELEASE}" ]; then
|
|
||||||
echo "No previous release found, using the repository’s initial commit as the starting point."
|
|
||||||
FIRST_COMMIT=$(git rev-list --max-parents=0 HEAD)
|
|
||||||
RANGE="${FIRST_COMMIT}..${NEW_TAG}"
|
|
||||||
else
|
|
||||||
RANGE="${LAST_RELEASE}..${NEW_TAG}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "Comparing commits between: ${RANGE}"
|
|
||||||
LOG=$(git log "${RANGE}" --no-merges --pretty=format:"- %h %s by %an")
|
|
||||||
|
|
||||||
echo "LOG<<EOF" >> "$GITHUB_ENV"
|
|
||||||
echo "$LOG" >> "$GITHUB_ENV"
|
|
||||||
echo "EOF" >> "$GITHUB_ENV"
|
|
||||||
|
|
||||||
# Create or update the GitHub release for the new tag.
|
|
||||||
- name: Create / Update GitHub Release for new tag
|
|
||||||
uses: softprops/action-gh-release@master
|
|
||||||
with:
|
|
||||||
tag_name: ${{ steps.new_tag.outputs.NEW_TAG }}
|
|
||||||
name: "${{ steps.new_tag.outputs.NEW_TAG }}"
|
|
||||||
body: ${{ env.LOG }}
|
|
||||||
append_body: false
|
|
||||||
generate_release_notes: false
|
|
||||||
make_latest: true
|
|
||||||
draft: false
|
|
||||||
prerelease: false
|
|
||||||
env:
|
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
110
.github/workflows/native-build.yml
vendored
Normal file
110
.github/workflows/native-build.yml
vendored
Normal file
|
|
@ -0,0 +1,110 @@
|
||||||
|
name: Build WebView wrappers
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
tag:
|
||||||
|
required: true
|
||||||
|
description: "Ref to build from (e.g. v1.0.0)"
|
||||||
|
|
||||||
|
env:
|
||||||
|
PYTHON_VERSION: 3.11
|
||||||
|
PNPM_VERSION: 10
|
||||||
|
NODE_VERSION: 20
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
permissions:
|
||||||
|
packages: write
|
||||||
|
contents: write
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-latest, windows-latest, macos-latest]
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout source repo
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
ref: ${{ github.event.inputs.tag }}
|
||||||
|
|
||||||
|
- name: Cache Chocolatey packages
|
||||||
|
if: matrix.os == 'windows-latest'
|
||||||
|
uses: actions/cache@v4
|
||||||
|
with:
|
||||||
|
path: C:\ProgramData\chocolatey\lib
|
||||||
|
key: choco-${{ runner.os }}-qt6
|
||||||
|
restore-keys: |
|
||||||
|
choco-${{ runner.os }}-
|
||||||
|
|
||||||
|
- name: Install Qt (Windows)
|
||||||
|
if: matrix.os == 'windows-latest'
|
||||||
|
run: choco install -y qt6-base-dev
|
||||||
|
|
||||||
|
- name: Cache Python venv
|
||||||
|
id: cache-python
|
||||||
|
uses: actions/cache@v4
|
||||||
|
with:
|
||||||
|
path: .venv
|
||||||
|
key: uv-${{ runner.os }}-${{ env.PYTHON_VERSION }}-${{ hashFiles('uv.lock') }}
|
||||||
|
restore-keys: |
|
||||||
|
uv-${{ runner.os }}-${{ env.PYTHON_VERSION }}-
|
||||||
|
|
||||||
|
- name: Set up Python
|
||||||
|
uses: actions/setup-python@v5
|
||||||
|
with:
|
||||||
|
python-version: ${{ env.PYTHON_VERSION }}
|
||||||
|
architecture: "x64"
|
||||||
|
|
||||||
|
- name: Install Python dependencies
|
||||||
|
run: |
|
||||||
|
pip install uv
|
||||||
|
uv venv --system-site-packages --relocatable
|
||||||
|
uv sync --link-mode=copy --active
|
||||||
|
|
||||||
|
- name: Install PyInstaller + Qt backend (Windows)
|
||||||
|
if: matrix.os == 'windows-latest'
|
||||||
|
run: |
|
||||||
|
uv pip install pyinstaller pywebview QtPy PySide6
|
||||||
|
|
||||||
|
- name: Install PyInstaller + Qt backend (Other OSs)
|
||||||
|
if: matrix.os != 'windows-latest'
|
||||||
|
run: |
|
||||||
|
uv pip install pyinstaller pywebview[qt]
|
||||||
|
|
||||||
|
- name: Install pnpm
|
||||||
|
uses: pnpm/action-setup@v4
|
||||||
|
with:
|
||||||
|
version: ${{ env.PNPM_VERSION }}
|
||||||
|
|
||||||
|
- name: Install Node.js
|
||||||
|
uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: ${{ env.NODE_VERSION }}
|
||||||
|
cache: pnpm
|
||||||
|
cache-dependency-path: "ui/pnpm-lock.yaml"
|
||||||
|
|
||||||
|
- name: Build frontend
|
||||||
|
working-directory: ui
|
||||||
|
run: |
|
||||||
|
pnpm install --production --prefer-offline --frozen-lockfile
|
||||||
|
pnpm run generate
|
||||||
|
|
||||||
|
- name: Build native binary
|
||||||
|
run: |
|
||||||
|
uv run pyinstaller ./app.spec
|
||||||
|
|
||||||
|
- name: Upload artifact
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: app-${{ matrix.os }}-${{ github.event.inputs.tag }}
|
||||||
|
path: dist/*
|
||||||
|
|
||||||
|
- name: Upload to GitHub Release
|
||||||
|
if: startsWith(github.ref, 'refs/tags/')
|
||||||
|
uses: softprops/action-gh-release@v2
|
||||||
|
with:
|
||||||
|
tag_name: ${{ github.event.inputs.tag }}
|
||||||
|
files: dist/*
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
@ -32,6 +32,13 @@ live streams, and includes features like scheduling downloads, sending notificat
|
||||||
* Apply `yt-dlp` options per custom defined conditions.
|
* Apply `yt-dlp` options per custom defined conditions.
|
||||||
* Custom browser extensions, bookmarklets and iOS shortcuts to send links to YTPTube instance.
|
* Custom browser extensions, bookmarklets and iOS shortcuts to send links to YTPTube instance.
|
||||||
|
|
||||||
|
### Side project
|
||||||
|
|
||||||
|
We have a side project related to YTPTube, which takes YTPTube source code and build an executable for Windows, macOS and Linux.
|
||||||
|
The project is in early stages, and might not even work yet. However keep an eye at [This build action](https://github.com/arabcoders/ytptube/actions/workflows/native-build.yml) for builds, simply select last successful build and download the executable for your platform. Help us test out the platforms
|
||||||
|
and report any issues you might find. We only have windows/linux machines to test on, so we need your help to test it out on macOS.
|
||||||
|
|
||||||
|
|
||||||
# Installation
|
# Installation
|
||||||
|
|
||||||
## Run using docker command
|
## Run using docker command
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue