Add Week 10 Plugin System and Week 11 Control API
Week 10 - Plugin System (FR-19): - Plugin traits: Plugin, OriginPlugin, MetadataPlugin, FormatPlugin - NativePluginHost with libloading for dynamic loading - WasmPluginHost (feature-gated) with wasmtime runtime - PluginManager coordinating both hosts with version checks - OriginInstance::watch() with WatchHandle, WatchEvent for live updates - FormatPlugin::synthesize_header() for metadata overlay Week 11 - Control API & Production (FR-17, FR-18, NFR-6, NFR-10): - gRPC server with full MusicFS service (status, cache, origins, events) - Proto extended: MountState enum, TierStats, full StatusResponse/CacheStats - WebhookHandler with HMAC-SHA256 signing and exponential retry - Metrics with latency histograms (p50/p95/p99) and origin health gauges - CLI with mount, status, cache, search, origin, events, shutdown commands - E2E player compatibility tests (mpv, VLC, file manager) - systemd service, PKGBUILD, RPM spec for packaging Plans added for Weeks 10-14 covering P1 features. All 154 tests passing.
This commit is contained in:
Vendored
+23
@@ -0,0 +1,23 @@
|
||||
pkgname=musicfs
|
||||
pkgver=0.1.0
|
||||
pkgrel=1
|
||||
pkgdesc="Metadata-Organized Music Filesystem"
|
||||
arch=('x86_64')
|
||||
url="https://github.com/yourusername/musicfs"
|
||||
license=('MIT')
|
||||
depends=('fuse3')
|
||||
makedepends=('rust' 'cargo')
|
||||
source=("$pkgname-$pkgver.tar.gz")
|
||||
sha256sums=('SKIP')
|
||||
|
||||
build() {
|
||||
cd "$srcdir/$pkgname-$pkgver"
|
||||
cargo build --release --locked
|
||||
}
|
||||
|
||||
package() {
|
||||
cd "$srcdir/$pkgname-$pkgver"
|
||||
install -Dm755 "target/release/musicfs" "$pkgdir/usr/bin/musicfs"
|
||||
install -Dm644 "dist/musicfs.service" "$pkgdir/usr/lib/systemd/system/musicfs.service"
|
||||
install -Dm644 "config.example.toml" "$pkgdir/etc/musicfs/config.example.toml"
|
||||
}
|
||||
Vendored
+21
@@ -0,0 +1,21 @@
|
||||
[Unit]
|
||||
Description=MusicFS - Metadata-Organized Music Filesystem
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=notify
|
||||
ExecStart=/usr/bin/musicfs mount --config /etc/musicfs/config.toml /mnt/music
|
||||
ExecStop=/usr/bin/musicfs shutdown
|
||||
Restart=on-failure
|
||||
RestartSec=5
|
||||
User=musicfs
|
||||
Group=musicfs
|
||||
|
||||
NoNewPrivileges=true
|
||||
ProtectSystem=strict
|
||||
ProtectHome=read-only
|
||||
ReadWritePaths=/var/cache/musicfs /mnt/music
|
||||
PrivateTmp=true
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
Vendored
+39
@@ -0,0 +1,39 @@
|
||||
Name: musicfs
|
||||
Version: 0.1.0
|
||||
Release: 1%{?dist}
|
||||
Summary: Metadata-Organized Music Filesystem
|
||||
|
||||
License: MIT
|
||||
URL: https://github.com/yourusername/musicfs
|
||||
Source0: %{name}-%{version}.tar.gz
|
||||
|
||||
BuildRequires: rust >= 1.70
|
||||
BuildRequires: cargo
|
||||
BuildRequires: fuse3-devel
|
||||
|
||||
Requires: fuse3
|
||||
|
||||
%description
|
||||
MusicFS is a virtual FUSE filesystem that organizes music files by metadata.
|
||||
|
||||
%prep
|
||||
%autosetup
|
||||
|
||||
%build
|
||||
cargo build --release --locked
|
||||
|
||||
%install
|
||||
install -Dm755 target/release/musicfs %{buildroot}%{_bindir}/musicfs
|
||||
install -Dm644 dist/musicfs.service %{buildroot}%{_unitdir}/musicfs.service
|
||||
install -Dm644 config.example.toml %{buildroot}%{_sysconfdir}/musicfs/config.example.toml
|
||||
|
||||
%files
|
||||
%license LICENSE
|
||||
%doc README.md
|
||||
%{_bindir}/musicfs
|
||||
%{_unitdir}/musicfs.service
|
||||
%config(noreplace) %{_sysconfdir}/musicfs/config.example.toml
|
||||
|
||||
%changelog
|
||||
* Mon Jan 01 2024 MusicFS Team <team@example.com> - 0.1.0-1
|
||||
- Initial package
|
||||
Reference in New Issue
Block a user