mirror of
https://github.com/onyx-and-iris/vban-cli.git
synced 2026-03-02 21:19:11 +00:00
add gainlayer command group
add GainlayerHelpFormatter
This commit is contained in:
parent
1a0fb979e0
commit
e6ebf86c86
51
src/vban_cli/gainlayer.py
Normal file
51
src/vban_cli/gainlayer.py
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
from typing import Annotated
|
||||||
|
|
||||||
|
from cyclopts import App, Argument, Parameter
|
||||||
|
|
||||||
|
from . import console
|
||||||
|
from .context import Context
|
||||||
|
from .help import GainlayerHelpFormatter
|
||||||
|
|
||||||
|
app = App(name='gainlayer', help_formatter=GainlayerHelpFormatter())
|
||||||
|
|
||||||
|
|
||||||
|
@app.meta.default
|
||||||
|
def launcher(
|
||||||
|
gainlayer_index: Annotated[int, Argument()] = None,
|
||||||
|
*tokens: Annotated[str, Parameter(show=False, allow_leading_hyphen=True)],
|
||||||
|
index: Annotated[int, Argument()] = None,
|
||||||
|
ctx: Annotated[Context, Parameter(show=False)] = None,
|
||||||
|
):
|
||||||
|
"""Control the gainlayers."""
|
||||||
|
additional_kwargs = {}
|
||||||
|
command, bound, _ = app.parse_args(tokens)
|
||||||
|
if index is not None and gainlayer_index is not None:
|
||||||
|
additional_kwargs['strip_index'] = index
|
||||||
|
additional_kwargs['gainlayer_index'] = gainlayer_index
|
||||||
|
else:
|
||||||
|
raise ValueError('Both gainlayer_index and index must be provided.')
|
||||||
|
if ctx is not None:
|
||||||
|
additional_kwargs['ctx'] = ctx
|
||||||
|
|
||||||
|
return command(*bound.args, **bound.kwargs, **additional_kwargs)
|
||||||
|
|
||||||
|
|
||||||
|
@app.command(name='level')
|
||||||
|
def level(
|
||||||
|
new_level: Annotated[float, Argument()] = None,
|
||||||
|
*,
|
||||||
|
strip_index: Annotated[int, Parameter(show=False)] = None,
|
||||||
|
gainlayer_index: Annotated[int, Parameter(show=False)] = None,
|
||||||
|
ctx: Annotated[Context, Parameter(show=False)] = None,
|
||||||
|
):
|
||||||
|
"""Get or set the level of the specified gainlayer.
|
||||||
|
|
||||||
|
Parameters
|
||||||
|
----------
|
||||||
|
new_level : float
|
||||||
|
If provided, sets the level to this value. If not provided, the current level is printed.
|
||||||
|
"""
|
||||||
|
if new_level is None:
|
||||||
|
console.out.print(ctx.client.strip[strip_index].gainlayer[gainlayer_index].gain)
|
||||||
|
return
|
||||||
|
ctx.client.strip[strip_index].gainlayer[gainlayer_index].gain = new_level
|
||||||
@ -95,6 +95,22 @@ class EqHelpFormatter(BaseHelpFormatter):
|
|||||||
console.print(f'[bold]Usage:[/bold] {modified_usage}')
|
console.print(f'[bold]Usage:[/bold] {modified_usage}')
|
||||||
|
|
||||||
|
|
||||||
|
class GainlayerHelpFormatter(BaseHelpFormatter):
|
||||||
|
"""Help formatter for gainlayer commands that works with strip commands.
|
||||||
|
|
||||||
|
Injects <index> after 'strip' and <gainlayer_index> after 'gainlayer'."""
|
||||||
|
|
||||||
|
def render_usage(self, console: Console, options: ConsoleOptions, usage) -> None:
|
||||||
|
"""Render the usage line with proper <index> placement for strip commands."""
|
||||||
|
if usage:
|
||||||
|
modified_usage = re.sub(
|
||||||
|
r'(\S+\s+strip)(\s+gainlayer\s+)(COMMAND)',
|
||||||
|
r'\1 <index>\2<[cyan]gainlayer_index[/cyan]> \3',
|
||||||
|
str(usage),
|
||||||
|
)
|
||||||
|
console.print(f'[bold]Usage:[/bold] {modified_usage}')
|
||||||
|
|
||||||
|
|
||||||
class CellHelpFormatter(BaseHelpFormatter):
|
class CellHelpFormatter(BaseHelpFormatter):
|
||||||
"""Help formatter for cell commands that works with both strip and bus commands.
|
"""Help formatter for cell commands that works with both strip and bus commands.
|
||||||
|
|
||||||
@ -105,7 +121,7 @@ class CellHelpFormatter(BaseHelpFormatter):
|
|||||||
if usage:
|
if usage:
|
||||||
modified_usage = re.sub(
|
modified_usage = re.sub(
|
||||||
r'(\S+\s+)(\w+)(\s+eq\s+cell\s+)(COMMAND)',
|
r'(\S+\s+)(\w+)(\s+eq\s+cell\s+)(COMMAND)',
|
||||||
r'\1\2 <index>\3<band> \4',
|
r'\1\2 <index>\3<[cyan]band[/cyan]> \4',
|
||||||
str(usage),
|
str(usage),
|
||||||
)
|
)
|
||||||
console.print(f'[bold]Usage:[/bold] {modified_usage}')
|
console.print(f'[bold]Usage:[/bold] {modified_usage}')
|
||||||
|
|||||||
@ -2,7 +2,7 @@ from typing import Annotated, Optional
|
|||||||
|
|
||||||
from cyclopts import App, Argument, Parameter
|
from cyclopts import App, Argument, Parameter
|
||||||
|
|
||||||
from . import comp, console, denoiser, eq, gate
|
from . import comp, console, denoiser, eq, gainlayer, gate
|
||||||
from .context import Context
|
from .context import Context
|
||||||
from .help import StripHelpFormatter
|
from .help import StripHelpFormatter
|
||||||
|
|
||||||
@ -11,6 +11,7 @@ app.command(eq.app.meta, name='eq')
|
|||||||
app.command(comp.app.meta, name='comp')
|
app.command(comp.app.meta, name='comp')
|
||||||
app.command(gate.app.meta, name='gate')
|
app.command(gate.app.meta, name='gate')
|
||||||
app.command(denoiser.app.meta, name='denoiser')
|
app.command(denoiser.app.meta, name='denoiser')
|
||||||
|
app.command(gainlayer.app.meta, name='gainlayer')
|
||||||
|
|
||||||
|
|
||||||
@app.meta.default
|
@app.meta.default
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user