ipbeeldbuis 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,23 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+ branches: [main]
8
+
9
+ jobs:
10
+ build:
11
+ name: Build & test
12
+ runs-on: ubuntu-latest
13
+ steps:
14
+ - uses: actions/checkout@v6
15
+ - run: cargo build
16
+ - run: cargo test
17
+
18
+ prek:
19
+ name: Prek checks
20
+ runs-on: ubuntu-latest
21
+ steps:
22
+ - uses: actions/checkout@v6
23
+ - uses: j178/prek-action@v2
@@ -0,0 +1,100 @@
1
+ name: Release
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - "v*"
7
+
8
+ permissions:
9
+ contents: write
10
+ id-token: write # for PyPI trusted publishing
11
+
12
+ jobs:
13
+ build:
14
+ name: Build — ${{ matrix.target }}
15
+ runs-on: ${{ matrix.runner }}
16
+ strategy:
17
+ matrix:
18
+ include:
19
+ - runner: macos-latest # Apple Silicon
20
+ target: aarch64-apple-darwin
21
+ artifact: ipb-macos-arm64
22
+
23
+ - runner: macos-latest # Intel (cross-compiled from Apple Silicon)
24
+ target: x86_64-apple-darwin
25
+ artifact: ipb-macos-x86_64
26
+
27
+ - runner: ubuntu-latest # Linux x86_64 (static musl)
28
+ target: x86_64-unknown-linux-musl
29
+ artifact: ipb-linux-x86_64
30
+ apt: musl-tools
31
+
32
+ - runner: ubuntu-24.04-arm # Linux arm64 (static musl)
33
+ target: aarch64-unknown-linux-musl
34
+ artifact: ipb-linux-arm64
35
+ apt: musl-tools
36
+
37
+ steps:
38
+ - uses: actions/checkout@v6
39
+
40
+ - name: Install system deps
41
+ if: matrix.apt
42
+ run: sudo apt-get install -y ${{ matrix.apt }}
43
+
44
+ - name: Add Rust target
45
+ run: rustup target add ${{ matrix.target }}
46
+
47
+ - name: Build
48
+ run: cargo build --release --target ${{ matrix.target }}
49
+
50
+ - name: Package
51
+ run: |
52
+ BIN=target/${{ matrix.target }}/release/ipb
53
+ mkdir -p dist
54
+ cp "$BIN" dist/ipb
55
+ tar -czf dist/${{ matrix.artifact }}.tar.gz -C dist ipb
56
+ rm dist/ipb
57
+
58
+ - name: Upload artifact
59
+ uses: actions/upload-artifact@v7
60
+ with:
61
+ name: ${{ matrix.artifact }}
62
+ path: dist/${{ matrix.artifact }}.tar.gz
63
+
64
+ release:
65
+ name: GitHub Release
66
+ needs: build
67
+ runs-on: ubuntu-latest
68
+ steps:
69
+ - uses: actions/download-artifact@v8
70
+ with:
71
+ path: dist
72
+ merge-multiple: true
73
+
74
+ - name: Create release
75
+ uses: softprops/action-gh-release@v2
76
+ with:
77
+ files: dist/*.tar.gz
78
+ generate_release_notes: true
79
+
80
+ publish-pypi:
81
+ name: Publish to PyPI
82
+ needs: release
83
+ runs-on: ubuntu-latest
84
+ environment:
85
+ name: pypi
86
+ url: https://pypi.org/p/ipbeeldbuis
87
+ steps:
88
+ - uses: actions/checkout@v6
89
+
90
+ - uses: actions/setup-python@v6
91
+ with:
92
+ python-version: "3.12"
93
+
94
+ - name: Build package
95
+ run: |
96
+ pip install hatchling build
97
+ python -m build
98
+
99
+ - name: Publish to PyPI
100
+ uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1 @@
1
+ target/
@@ -0,0 +1,37 @@
1
+ repos:
2
+ - repo: https://github.com/gitleaks/gitleaks
3
+ rev: v8.29.1
4
+ hooks:
5
+ - id: gitleaks
6
+
7
+ - repo: https://github.com/pre-commit/pre-commit-hooks
8
+ rev: v6.0.0
9
+ hooks:
10
+ - id: trailing-whitespace
11
+ - id: end-of-file-fixer
12
+ - id: check-yaml
13
+ - id: check-toml
14
+ - id: check-merge-conflict
15
+ - id: check-added-large-files
16
+ args: [--maxkb=500]
17
+
18
+ - repo: https://github.com/shellcheck-py/shellcheck-py
19
+ rev: v0.11.0.1
20
+ hooks:
21
+ - id: shellcheck
22
+
23
+ - repo: local
24
+ hooks:
25
+ - id: cargo-fmt
26
+ name: cargo fmt
27
+ entry: cargo fmt --check
28
+ language: system
29
+ types: [rust]
30
+ pass_filenames: false
31
+
32
+ - id: cargo-clippy
33
+ name: cargo clippy
34
+ entry: cargo clippy -- -D warnings
35
+ language: system
36
+ types: [rust]
37
+ pass_filenames: false
@@ -0,0 +1,30 @@
1
+ # ipbeeldbuis
2
+
3
+ A Rust CLI tool for watching IPTV streams from M3U playlists, with a smooth TUI interface.
4
+
5
+ ## Project
6
+
7
+ - Language: Rust
8
+ - Working directory: `/Users/stan/Documents/CODING/ipbeeldbuis`
9
+
10
+ ## Stack
11
+
12
+ - `ratatui` + `crossterm` — TUI
13
+ - `reqwest` — HTTP (fetch M3U URLs)
14
+ - `clap` — CLI argument parsing
15
+ - `mpv` — video playback (external binary, must be installed)
16
+
17
+ ## Run
18
+
19
+ ```bash
20
+ cargo run -- --url "http://your-m3u-url"
21
+ cargo run -- --file /path/to/playlist.m3u
22
+ ```
23
+
24
+ ## Roadmap
25
+
26
+ - [x] M3U parser
27
+ - [x] Ratatui TUI with search + category tabs
28
+ - [x] mpv launcher
29
+ - [x] Local cache with ETag refresh
30
+ - [ ] Chromecast casting (planned)