Introduce initial implementation of the vmic CLI with PipeWire integration
- Added `Cargo.toml` to define dependencies and project metadata. - Implemented core CLI functionality for managing virtual microphones (`create`, `edit`, `delete`, `list`, `route`, and `wipe` commands) using `clap`. - Integrated `rusqlite` for persistent state storage and `pipewire` to manage PipeWire nodes. - Ensured graceful handling of feedback loops and system defaults during virtual mic creation and deletion. - Added error handling via `thiserror` for cleaner error definitions.
This commit is contained in:
27
Cargo.toml
Normal file
27
Cargo.toml
Normal file
@@ -0,0 +1,27 @@
|
||||
[package]
|
||||
name = "vmic"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
description = "Create and manage PipeWire virtual microphones."
|
||||
license = "AGPL-3+"
|
||||
|
||||
[[bin]]
|
||||
name = "vmic"
|
||||
path = "src/main.rs"
|
||||
|
||||
[dependencies]
|
||||
clap = { version = "4", features = ["derive"] }
|
||||
clap_complete = "4"
|
||||
|
||||
thiserror = "^2"
|
||||
dirs = "6"
|
||||
|
||||
rusqlite = { version = "^0", features = ["bundled"] }
|
||||
pipewire = "=0.8.0"
|
||||
libc = "0.2"
|
||||
|
||||
# Keep panics from corrupting the sqlite connection mid-transaction; abort
|
||||
# is fine for a CLI as there is no long-lived state to unwind for.
|
||||
[profile.release]
|
||||
panic = "abort"
|
||||
lto = true
|
||||
Reference in New Issue
Block a user