mirror of
https://github.com/onyx-and-iris/gobs-cli.git
synced 2025-06-09 21:20:34 +01:00
filter list SourceName arg now defaults to current scene
filter list now prints defaults for unchanged values
This commit is contained in:
parent
1d590eb788
commit
8204d6520d
31
filter.go
31
filter.go
@ -2,6 +2,7 @@ package main
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"maps"
|
||||||
"sort"
|
"sort"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
@ -20,19 +21,27 @@ type FilterCmd struct {
|
|||||||
|
|
||||||
// FilterListCmd provides a command to list all filters in a scene.
|
// FilterListCmd provides a command to list all filters in a scene.
|
||||||
type FilterListCmd struct {
|
type FilterListCmd struct {
|
||||||
SourceName string `arg:"" help:"Name of the source to list filters from."`
|
SourceName string `arg:"" help:"Name of the source to list filters from." default:""`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Run executes the command to list all filters in a scene.
|
// Run executes the command to list all filters in a scene.
|
||||||
func (cmd *FilterListCmd) Run(ctx *context) error {
|
func (cmd *FilterListCmd) Run(ctx *context) error {
|
||||||
filters, err := ctx.Client.Filters.GetSourceFilterList(
|
if cmd.SourceName == "" {
|
||||||
|
currentScene, err := ctx.Client.Scenes.GetCurrentProgramScene()
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("failed to get current program scene: %w", err)
|
||||||
|
}
|
||||||
|
cmd.SourceName = currentScene.SceneName
|
||||||
|
}
|
||||||
|
|
||||||
|
sourceFilters, err := ctx.Client.Filters.GetSourceFilterList(
|
||||||
filters.NewGetSourceFilterListParams().WithSourceName(cmd.SourceName),
|
filters.NewGetSourceFilterListParams().WithSourceName(cmd.SourceName),
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(filters.Filters) == 0 {
|
if len(sourceFilters.Filters) == 0 {
|
||||||
fmt.Fprintf(ctx.Out, "No filters found for source %s.\n", cmd.SourceName)
|
fmt.Fprintf(ctx.Out, "No filters found for source %s.\n", cmd.SourceName)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
@ -42,10 +51,20 @@ func (cmd *FilterListCmd) Run(ctx *context) error {
|
|||||||
t.SetAlignment(table.AlignLeft, table.AlignLeft, table.AlignCenter, table.AlignLeft)
|
t.SetAlignment(table.AlignLeft, table.AlignLeft, table.AlignCenter, table.AlignLeft)
|
||||||
t.SetHeaders("Filter Name", "Kind", "Enabled", "Settings")
|
t.SetHeaders("Filter Name", "Kind", "Enabled", "Settings")
|
||||||
|
|
||||||
for _, filter := range filters.Filters {
|
for _, filter := range sourceFilters.Filters {
|
||||||
|
defaultSettings, err := ctx.Client.Filters.GetSourceFilterDefaultSettings(
|
||||||
|
filters.NewGetSourceFilterDefaultSettingsParams().
|
||||||
|
WithFilterKind(filter.FilterKind),
|
||||||
|
)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("failed to get default settings for filter %s: %w",
|
||||||
|
filter.FilterName, err)
|
||||||
|
}
|
||||||
|
maps.Insert(defaultSettings.DefaultFilterSettings, maps.All(filter.FilterSettings))
|
||||||
|
|
||||||
var lines []string
|
var lines []string
|
||||||
for k, v := range filter.FilterSettings {
|
for k, v := range defaultSettings.DefaultFilterSettings {
|
||||||
lines = append(lines, fmt.Sprintf("%s %v", k, v))
|
lines = append(lines, fmt.Sprintf("%s: %v", snakeCaseToTitleCase(k), v))
|
||||||
}
|
}
|
||||||
sort.Slice(lines, func(i, j int) bool {
|
sort.Slice(lines, func(i, j int) bool {
|
||||||
return strings.ToLower(lines[i]) < strings.ToLower(lines[j])
|
return strings.ToLower(lines[i]) < strings.ToLower(lines[j])
|
||||||
|
Loading…
x
Reference in New Issue
Block a user