- Python 31.7%
- QML 29.3%
- JavaScript 24.4%
- Gherkin 9.6%
- Shell 5%
PeerTube Sailor
Simple SailfishOS app for watching PeerTube content from one configured server.
Product behavior
Canonical product behavior is described in features/.
The .feature files are the source of truth for what the software does. They are product specifications first and executable BDD scenarios second.
Implementation and delivery tracking belongs outside this directory. Stable feature and scenario IDs let other workflows refer back to the product behavior without making the spec a status surface.
Contributor prerequisites
Install the smallest local toolchain needed for the workflow you are running:
- Bash, Git, and
tar. - RPM build tooling that provides
rpmbuild. - Python test tools:
pytestandgherkin-officialonPATH. - Docker, only for
scripts/docker-build. - Sailfish SDK command line tools (
sfdk) configured with the Docker build engine, only forscripts/docker-build. - A SailfishOS emulator or device, only when installing and launching the RPM.
On Debian/Ubuntu-like hosts, the non-Sailfish local tools are typically:
sudo apt install git tar rpm python3-pytest
python3 -m pip install --user gherkin-official
One-command local workflow
Run the full local contributor check:
scripts/dev
This runs scripts/build and then scripts/test. If a required tool is missing, the scripts are expected to stop with a clear prerequisite message.
Build
Build the RPM locally:
scripts/build
Build output is written under:
.devloop/build/rpmbuild/RPMS/
The app is currently a pure QML package skeleton, so the build packages tracked QML, JavaScript, desktop, and icon assets into an RPM.
Test
Run available checks:
scripts/test
This checks feature-file syntax with gherkin and then runs pytest -q tests when the tests/ directory exists.
Docker-based Sailfish SDK build
Use the Sailfish SDK Docker build environment:
scripts/docker-build
This requires:
- Docker installed and accessible by your user.
- Sailfish SDK installed.
sfdkconfigured to use the Docker build engine.
The wrapper enters sfdk build-shell and reuses the same scripts/build entrypoint as the local build.
Emulator install workflow
-
Start a SailfishOS emulator from the Sailfish SDK.
-
Build the RPM:
scripts/build -
Copy the built RPM from
.devloop/build/rpmbuild/RPMS/to the emulator by using the Sailfish SDK tools or SSH access configured for your emulator. -
Install or upgrade it inside the emulator:
devel-su pkcon install-local /path/to/harbour-peertubesailor-*.rpm -
Launch PeerTube Sailor from the app grid, or run the desktop command manually:
sailfish-qml /usr/share/harbour-peertubesailor/qml/harbour-peertubesailor.qml
Device install workflow
-
Enable developer mode and SSH on the SailfishOS device.
-
Ensure the host can reach the device over USB networking or Wi-Fi.
-
Build the RPM:
scripts/build -
Copy the RPM to the device:
scp .devloop/build/rpmbuild/RPMS/*/*.rpm nemo@DEVICE_IP:/home/nemo/ -
SSH to the device and install or upgrade it:
ssh nemo@DEVICE_IP devel-su pkcon install-local /home/nemo/harbour-peertubesailor-*.rpm
Replace DEVICE_IP with the address shown in the device developer-mode settings.
CI
GitHub Actions runs the documented test workflow from .github/workflows/ci.yml. Keep local changes passing with:
scripts/test