mirror of
https://github.com/onyx-and-iris/vban-cli.git
synced 2026-03-02 21:19:11 +00:00
eq commands should target the right kind of eq
cell command group has now been attached to eq. this modifies the structure of CLI slightly.
This commit is contained in:
parent
9938eaa49f
commit
1dd518095a
@ -1,11 +1,15 @@
|
||||
[project]
|
||||
name = "vban-cli"
|
||||
version = "0.3.0"
|
||||
version = "0.4.0"
|
||||
description = "A command-line interface for Voicemeeter leveraging VBAN."
|
||||
readme = "README.md"
|
||||
license = { text = "LICENSE" }
|
||||
requires-python = ">=3.13"
|
||||
dependencies = ["cyclopts>=4.6.0", "vban-cmd>=2.6.0"]
|
||||
dependencies = [
|
||||
"cyclopts>=4.6.0",
|
||||
"loguru>=0.7.3",
|
||||
"vban-cmd>=2.6.0",
|
||||
]
|
||||
classifiers = [
|
||||
"Development Status :: 3 - Alpha",
|
||||
"Programming Language :: Python",
|
||||
|
||||
@ -20,6 +20,8 @@ def launcher(
|
||||
"""Control the bus parameters."""
|
||||
additional_kwargs = {}
|
||||
command, bound, _ = app.parse_args(tokens)
|
||||
if tokens[0] == 'eq':
|
||||
additional_kwargs['eq_kind'] = app.name[0]
|
||||
if index is not None:
|
||||
additional_kwargs['index'] = index
|
||||
if ctx is not None:
|
||||
|
||||
@ -5,28 +5,30 @@ from cyclopts import App, Argument, Parameter
|
||||
from .context import Context
|
||||
from .help import CustomHelpFormatter
|
||||
|
||||
cell_app = App(name='cell', help_formatter=CustomHelpFormatter())
|
||||
|
||||
app = App(name='eq', help_formatter=CustomHelpFormatter())
|
||||
app.command(cell_app.meta, name='cell')
|
||||
|
||||
|
||||
@app.meta.default
|
||||
def launcher(
|
||||
band: Annotated[int, Argument()] = None,
|
||||
*tokens: Annotated[str, Parameter(show=False, allow_leading_hyphen=True)],
|
||||
eq_kind: Annotated[str, Parameter(show=False)] = None,
|
||||
index: Annotated[int, Argument()] = None,
|
||||
ctx: Annotated[Context, Parameter(show=False)] = None,
|
||||
):
|
||||
"""Control the EQ parameters.
|
||||
|
||||
Only channel 0 is supported, see https://github.com/onyx-and-iris/vban-cli?tab=readme-ov-file#implementation-notes - 3.
|
||||
"""
|
||||
"""Control the EQ parameters."""
|
||||
additional_kwargs = {}
|
||||
command, bound, _ = app.parse_args(tokens)
|
||||
if index is not None:
|
||||
additional_kwargs['index'] = index
|
||||
if band is not None:
|
||||
additional_kwargs['band'] = band
|
||||
if ctx is not None:
|
||||
additional_kwargs['ctx'] = ctx
|
||||
match eq_kind:
|
||||
case 'strip':
|
||||
target = ctx.client.strip[index].eq
|
||||
case 'bus':
|
||||
target = ctx.client.bus[index].eq
|
||||
case _:
|
||||
raise ValueError(f'Invalid eq_kind: {eq_kind}')
|
||||
additional_kwargs['target'] = target
|
||||
|
||||
return command(*bound.args, **bound.kwargs, **additional_kwargs)
|
||||
|
||||
@ -35,9 +37,7 @@ def launcher(
|
||||
def on(
|
||||
new_state: Annotated[bool, Argument()] = None,
|
||||
*,
|
||||
index: Annotated[int, Parameter(show=False)] = None,
|
||||
band: Annotated[int, Parameter(show=False)] = None,
|
||||
ctx: Annotated[Context, Parameter(show=False)] = None,
|
||||
target: Annotated[object, Parameter(show=False)] = None,
|
||||
):
|
||||
"""Get or set the on state of the specified EQ band.
|
||||
|
||||
@ -48,6 +48,43 @@ def on(
|
||||
"""
|
||||
if new_state is None:
|
||||
# See https://github.com/onyx-and-iris/vban-cli?tab=readme-ov-file#implementation-notes - 2.
|
||||
# console.out.print(ctx.client.strip[index].eq.channel[0].cell[band].on)
|
||||
# console.out.print(target.on)
|
||||
return
|
||||
ctx.client.strip[index].eq.channel[0].cell[band].on = new_state
|
||||
target.on = new_state
|
||||
|
||||
|
||||
@cell_app.meta.default
|
||||
def cell_launcher(
|
||||
band: Annotated[int, Argument()] = None,
|
||||
*tokens: Annotated[str, Parameter(show=False, allow_leading_hyphen=True)],
|
||||
target: Annotated[object, Parameter(show=False)] = None,
|
||||
):
|
||||
"""Control the EQ Cell parameters.
|
||||
|
||||
Only channel 0 is supported, see https://github.com/onyx-and-iris/vban-cli?tab=readme-ov-file#implementation-notes - 3.
|
||||
"""
|
||||
additional_kwargs = {}
|
||||
command, bound, _ = app.parse_args(tokens)
|
||||
additional_kwargs['target'] = target.channel[0].cell[band]
|
||||
|
||||
return command(*bound.args, **bound.kwargs, **additional_kwargs)
|
||||
|
||||
|
||||
@cell_app.command(name='on')
|
||||
def cell_on(
|
||||
new_state: Annotated[bool, Argument()] = None,
|
||||
*,
|
||||
target: Annotated[object, Parameter(show=False)] = None,
|
||||
):
|
||||
"""Get or set the on state of the specified EQ cell.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
new_state : bool
|
||||
If provided, sets the on state to this value. If not provided, the current on state is printed.
|
||||
"""
|
||||
if new_state is None:
|
||||
# See https://github.com/onyx-and-iris/vban-cli?tab=readme-ov-file#implementation-notes - 2.
|
||||
# console.out.print(target.on)
|
||||
return
|
||||
target.on = new_state
|
||||
|
||||
@ -22,6 +22,8 @@ def launcher(
|
||||
"""Control the strip parameters."""
|
||||
additional_kwargs = {}
|
||||
command, bound, _ = app.parse_args(tokens)
|
||||
if tokens[0] == 'eq':
|
||||
additional_kwargs['eq_kind'] = app.name[0]
|
||||
if index is not None:
|
||||
additional_kwargs['index'] = index
|
||||
if ctx is not None:
|
||||
|
||||
35
uv.lock
generated
35
uv.lock
generated
@ -11,6 +11,15 @@ wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/3a/2a/7cc015f5b9f5db42b7d48157e23356022889fc354a2813c15934b7cb5c0e/attrs-25.4.0-py3-none-any.whl", hash = "sha256:adcf7e2a1fb3b36ac48d97835bb6d8ade15b8dcce26aba8bf1d14847b57a3373", size = 67615, upload-time = "2025-10-06T13:54:43.17Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "colorama"
|
||||
version = "0.4.6"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "cyclopts"
|
||||
version = "4.6.0"
|
||||
@ -44,6 +53,19 @@ wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/02/10/5da547df7a391dcde17f59520a231527b8571e6f46fc8efb02ccb370ab12/docutils-0.22.4-py3-none-any.whl", hash = "sha256:d0013f540772d1420576855455d050a2180186c91c15779301ac2ccb3eeb68de", size = 633196, upload-time = "2025-12-18T19:00:18.077Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "loguru"
|
||||
version = "0.7.3"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
dependencies = [
|
||||
{ name = "colorama", marker = "sys_platform == 'win32'" },
|
||||
{ name = "win32-setctime", marker = "sys_platform == 'win32'" },
|
||||
]
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/3a/05/a1dae3dffd1116099471c643b8924f5aa6524411dc6c63fdae648c4f1aca/loguru-0.7.3.tar.gz", hash = "sha256:19480589e77d47b8d85b2c827ad95d49bf31b0dcde16593892eb51dd18706eb6", size = 63559, upload-time = "2024-12-06T11:20:56.608Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/0c/29/0348de65b8cc732daa3e33e67806420b2ae89bdce2b04af740289c5c6c8c/loguru-0.7.3-py3-none-any.whl", hash = "sha256:31a33c10c8e1e10422bfd431aeb5d351c7cf7fa671e3c4df004162264b28220c", size = 61595, upload-time = "2024-12-06T11:20:54.538Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "markdown-it-py"
|
||||
version = "4.0.0"
|
||||
@ -102,16 +124,18 @@ wheels = [
|
||||
|
||||
[[package]]
|
||||
name = "vban-cli"
|
||||
version = "0.3.0"
|
||||
version = "0.4.0"
|
||||
source = { editable = "." }
|
||||
dependencies = [
|
||||
{ name = "cyclopts" },
|
||||
{ name = "loguru" },
|
||||
{ name = "vban-cmd" },
|
||||
]
|
||||
|
||||
[package.metadata]
|
||||
requires-dist = [
|
||||
{ name = "cyclopts", specifier = ">=4.6.0" },
|
||||
{ name = "loguru", specifier = ">=0.7.3" },
|
||||
{ name = "vban-cmd", directory = "../vban-cmd-python" },
|
||||
]
|
||||
|
||||
@ -122,3 +146,12 @@ source = { directory = "../vban-cmd-python" }
|
||||
|
||||
[package.metadata]
|
||||
requires-dist = [{ name = "tomli", marker = "python_full_version < '3.11'", specifier = ">=2.0.1,<3.0" }]
|
||||
|
||||
[[package]]
|
||||
name = "win32-setctime"
|
||||
version = "1.2.0"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/b3/8f/705086c9d734d3b663af0e9bb3d4de6578d08f46b1b101c2442fd9aecaa2/win32_setctime-1.2.0.tar.gz", hash = "sha256:ae1fdf948f5640aae05c511ade119313fb6a30d7eabe25fef9764dca5873c4c0", size = 4867, upload-time = "2024-12-07T15:28:28.314Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/e1/07/c6fe3ad3e685340704d314d765b7912993bcb8dc198f0e7a89382d37974b/win32_setctime-1.2.0-py3-none-any.whl", hash = "sha256:95d644c4e708aba81dc3704a116d8cbc974d70b3bdb8be1d150e36be6e9d1390", size = 4083, upload-time = "2024-12-07T15:28:26.465Z" },
|
||||
]
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user