chore: scaffold tvctl foundation

Set up the Rust crate, baseline module layout, and project docs so the
repository matches the design bundle and builds cleanly as a starting point.
This commit is contained in:
44r0n7
2026-04-14 09:02:32 -04:00
commit 584da2d825
21 changed files with 3266 additions and 0 deletions
+42
View File
@@ -0,0 +1,42 @@
use super::{AppInfo, Device, DeviceInfo, DeviceState, Result, TvAdapter, TvError, TvKey};
/// The Roku ECP adapter placeholder for the foundation milestone.
#[derive(Debug, Clone, Default)]
pub struct RokuAdapter;
impl RokuAdapter {
/// Create a new Roku adapter instance.
pub fn new() -> Self {
Self
}
}
impl TvAdapter for RokuAdapter {
async fn discover(&self) -> Result<Vec<DeviceInfo>> {
Err(TvError::NotSupported("discover"))
}
async fn state(&self, _device: &Device) -> Result<DeviceState> {
Err(TvError::NotSupported("state"))
}
async fn launch(&self, _device: &Device, _app: &str) -> Result<()> {
Err(TvError::NotSupported("launch"))
}
async fn stop_app(&self, _device: &Device) -> Result<()> {
Err(TvError::NotSupported("stop_app"))
}
async fn key(&self, _device: &Device, _key: TvKey) -> Result<()> {
Err(TvError::NotSupported("key"))
}
async fn sequence(&self, _device: &Device, _keys: Vec<TvKey>) -> Result<()> {
Err(TvError::NotSupported("sequence"))
}
async fn list_apps(&self, _device: &Device) -> Result<Vec<AppInfo>> {
Err(TvError::NotSupported("list_apps"))
}
}