From 6018d5b705671dcc9038e095727e0aab0910f43c Mon Sep 17 00:00:00 2001 From: Ben Cherry Date: Thu, 24 Sep 2026 15:45:51 -0700 Subject: [PATCH 1/3] fix: correct help text and dead flag references in several commands - egress update-layout/update-stream: accept the egress ID positionally or via --id - egress start and deprecated start-*: point at cmd/lk/examples - egress test-template: name the flag --base-url (it was unreadable before) - dispatch list/get/create/delete, number purchase/get/update: add --json - room participants list: describe the command correctly - room update: document --metadata as required; drop the unused hidden --room - room delete: ArgsUsage says ROOM_NAME, matching what DeleteRoom takes - room create: add the referenced examples/auto-participant-egress.json - token create: read --room-configuration, the flag that is actually defined - sip dispatch delete: say it takes dispatch rule IDs - SIP media flags: drop "outbound call" wording; note --no-default-codecs needs --codecs --- cmd/lk/dispatch.go | 4 ++ cmd/lk/egress.go | 49 ++++++++++---------- cmd/lk/examples/auto-participant-egress.json | 14 ++++++ cmd/lk/phone_number.go | 3 ++ cmd/lk/room.go | 6 +-- cmd/lk/sip.go | 8 ++-- cmd/lk/token.go | 2 +- 7 files changed, 53 insertions(+), 33 deletions(-) create mode 100644 cmd/lk/examples/auto-participant-egress.json diff --git a/cmd/lk/dispatch.go b/cmd/lk/dispatch.go index 8d772b195..a80ee0c3f 100644 --- a/cmd/lk/dispatch.go +++ b/cmd/lk/dispatch.go @@ -37,6 +37,7 @@ var ( Usage: "List all agent dispatches in a room", Before: createDispatchClient, Action: listAgentDispatches, + Flags: []cli.Flag{jsonFlag}, ArgsUsage: "ROOM_NAME", }, { @@ -44,6 +45,7 @@ var ( Usage: "Get an agent dispatch by room and ID", Before: createDispatchClient, Action: getAgentDispatch, + Flags: []cli.Flag{jsonFlag}, ArgsUsage: "ROOM_NAME ID", }, { @@ -73,6 +75,7 @@ var ( Name: "metadata", Usage: "metadata to send to agent", }, + jsonFlag, }, }, { @@ -80,6 +83,7 @@ var ( Usage: "Delete an agent dispatch", Before: createDispatchClient, Action: deleteAgentDispatch, + Flags: []cli.Flag{jsonFlag}, ArgsUsage: "ROOM_NAME ID", }, }, diff --git a/cmd/lk/egress.go b/cmd/lk/egress.go index 9cf490e41..db7bb10c8 100644 --- a/cmd/lk/egress.go +++ b/cmd/lk/egress.go @@ -62,7 +62,7 @@ TYPE selects a deprecated per-type request instead: - "track-composite" captures an audio and a video track, as ` + reflect.TypeFor[livekit.TrackCompositeEgressRequest]().Name() + ` - "web" captures any website, with a lifecycle detached from LiveKit rooms, as ` + reflect.TypeFor[livekit.WebEgressRequest]().Name() + ` -See cmd/livekit-cli/examples` +See cmd/lk/examples` ) var ( @@ -130,8 +130,8 @@ var ( Action: testEgressTemplate, Flags: []cli.Flag{ &cli.StringFlag{ - Name: "base-url (e.g. https://recorder.livekit.io/#)", - Usage: "Base template `URL`", + Name: "base-url", + Usage: "Base template `URL` (e.g. https://recorder.livekit.io/#)", Required: true, }, &cli.StringFlag{ @@ -158,9 +158,8 @@ var ( Action: updateLayout, Flags: []cli.Flag{ &cli.StringFlag{ - Name: "id", - Usage: "Egress ID", - Required: true, + Name: "id", + Usage: "Egress `ID`, instead of the positional argument", }, &cli.StringFlag{ Name: "layout", @@ -170,15 +169,15 @@ var ( }, }, { - Name: "update-stream", - Usage: "Adds or removes RTMP output urls from a live stream", - Before: createEgressClient, - Action: updateStream, + Name: "update-stream", + Usage: "Adds or removes RTMP output urls from a live stream", + ArgsUsage: "ID", + Before: createEgressClient, + Action: updateStream, Flags: []cli.Flag{ &cli.StringFlag{ - Name: "id", - Usage: "Egress ID", - Required: true, + Name: "id", + Usage: "Egress `ID`, instead of the positional argument", }, &cli.StringSliceFlag{ Name: "add-urls", @@ -220,7 +219,7 @@ var ( Flags: []cli.Flag{ &cli.StringFlag{ Name: "request", - Usage: "WebEgressRequest as json file (see cmd/livekit-cli/examples)", + Usage: "WebEgressRequest as json file (see cmd/lk/examples)", Required: true, }, }, @@ -234,7 +233,7 @@ var ( Flags: []cli.Flag{ &cli.StringFlag{ Name: "request", - Usage: "ParticipantEgressRequest as json file (see cmd/livekit-cli/examples)", + Usage: "ParticipantEgressRequest as json file (see cmd/lk/examples)", Required: true, }, }, @@ -248,7 +247,7 @@ var ( Flags: []cli.Flag{ &cli.StringFlag{ Name: "request", - Usage: "TrackCompositeEgressRequest as json file (see cmd/livekit-cli/examples)", + Usage: "TrackCompositeEgressRequest as json file (see cmd/lk/examples)", Required: true, }, }, @@ -262,7 +261,7 @@ var ( Flags: []cli.Flag{ &cli.StringFlag{ Name: "request", - Usage: "TrackEgressRequest as json file (see cmd/livekit-cli/examples)", + Usage: "TrackEgressRequest as json file (see cmd/lk/examples)", Required: true, }, }, @@ -352,8 +351,8 @@ var ( Action: testEgressTemplate, Flags: []cli.Flag{ &cli.StringFlag{ - Name: "base-url (e.g. https://recorder.livekit.io/#)", - Usage: "Base template `URL`", + Name: "base-url", + Usage: "Base template `URL` (e.g. https://recorder.livekit.io/#)", Required: true, }, &cli.StringFlag{ @@ -684,9 +683,9 @@ func listEgress(ctx context.Context, cmd *cli.Command) error { } func updateLayout(ctx context.Context, cmd *cli.Command) error { - egressId := cmd.String("id") - if egressId == "" { - egressId = cmd.Args().First() + egressId, err := extractFlagOrArg(cmd, "id") + if err != nil { + return err } info, err := egressClient.UpdateLayout(ctx, &livekit.UpdateLayoutRequest{ EgressId: egressId, @@ -701,9 +700,9 @@ func updateLayout(ctx context.Context, cmd *cli.Command) error { } func updateStream(ctx context.Context, cmd *cli.Command) error { - egressId := cmd.String("id") - if egressId == "" { - egressId = cmd.Args().First() + egressId, err := extractFlagOrArg(cmd, "id") + if err != nil { + return err } info, err := egressClient.UpdateStream(ctx, &livekit.UpdateStreamRequest{ EgressId: egressId, diff --git a/cmd/lk/examples/auto-participant-egress.json b/cmd/lk/examples/auto-participant-egress.json new file mode 100644 index 000000000..de5870c11 --- /dev/null +++ b/cmd/lk/examples/auto-participant-egress.json @@ -0,0 +1,14 @@ +{ + "preset": "H264_720P_30", + "file_outputs": [ + { + "filepath": "{room_name}/{publisher_identity}-{time}.mp4", + "s3": { + "access_key": "aws-access-key", + "secret": "aws-access-secret", + "region": "aws-region", + "bucket": "my-bucket" + } + } + ] +} diff --git a/cmd/lk/phone_number.go b/cmd/lk/phone_number.go index d4be2b0ad..3de199e05 100644 --- a/cmd/lk/phone_number.go +++ b/cmd/lk/phone_number.go @@ -68,6 +68,7 @@ var ( Name: "sip-dispatch-rule-id", Usage: "SIP dispatch rule ID to apply to all purchased numbers", }, + jsonFlag, }, }, { @@ -109,6 +110,7 @@ var ( Name: "number", Usage: "Use phone number string for lookup", }, + jsonFlag, }, ArgsUsage: "Either --id or --number must be provided", }, @@ -129,6 +131,7 @@ var ( Name: "sip-dispatch-rule-id", Usage: "SIP dispatch rule ID to assign to the phone number", }, + jsonFlag, }, ArgsUsage: "Either --id or --number must be provided", }, diff --git a/cmd/lk/room.go b/cmd/lk/room.go index 9ebab6934..767bf0fd1 100644 --- a/cmd/lk/room.go +++ b/cmd/lk/room.go @@ -122,9 +122,9 @@ var ( Before: createRoomClient, Action: updateRoomMetadata, Flags: []cli.Flag{ - hidden(optional(roomFlag)), &cli.StringFlag{ Name: "metadata", + Usage: "New room `METADATA` (required)", Required: true, }, }, @@ -136,7 +136,7 @@ var ( UsageText: "lk room delete [OPTIONS] ROOM_NAME", Before: createRoomClient, Action: deleteRoom, - ArgsUsage: "ROOM_NAME_OR_ID", + ArgsUsage: "ROOM_NAME", }, { Name: "join", @@ -212,7 +212,7 @@ var ( Commands: []*cli.Command{ { Name: "list", - Usage: "List or search for active rooms by name", + Usage: "List participants in a room", Action: listParticipants, ArgsUsage: "ROOM_NAME", }, diff --git a/cmd/lk/sip.go b/cmd/lk/sip.go index 71d08241b..a997f119b 100644 --- a/cmd/lk/sip.go +++ b/cmd/lk/sip.go @@ -315,7 +315,7 @@ var ( Name: "delete", Usage: "Delete SIP Dispatch Rule", Action: deleteSIPDispatchRule, - ArgsUsage: "SIPTrunk ID to delete", + ArgsUsage: "SIPDispatchRule ID to delete", }, }, }, @@ -486,15 +486,15 @@ func appendSIPMediaFlags(flags []cli.Flag) []cli.Flag { flags = append(flags, &cli.StringFlag{ Name: "media-enc", - Usage: "Sets media encryption for outbound call", + Usage: "Sets media encryption for calls", }, &cli.BoolFlag{ Name: "no-default-codecs", - Usage: "Disables a builtin list of default SIP codecs", + Usage: "Disables a builtin list of default SIP codecs, so only those in --codecs are used. Has no effect without --codecs", }, &cli.StringSliceFlag{ Name: "codecs", - Usage: "Sets a list of SIP codecs for outbound call", + Usage: "Sets a list of SIP codecs for calls", }, ) return flags diff --git a/cmd/lk/token.go b/cmd/lk/token.go index ef52cd8cb..479c1a0c9 100644 --- a/cmd/lk/token.go +++ b/cmd/lk/token.go @@ -250,7 +250,7 @@ func createToken(ctx context.Context, c *cli.Command) error { name := c.String("name") metadata := c.String("metadata") validFor := c.String("valid-for") - roomPreset := c.String("room-preset") + roomPreset := c.String("room-configuration") participantAttributes, err := parseKeyValuePairs(c, "attribute") if err != nil { return fmt.Errorf("failed to parse participant attributes: %w", err) From e768bdfa3f38b5c417f104391ea87d5b59eef8ad Mon Sep 17 00:00:00 2001 From: Ben Cherry Date: Thu, 24 Sep 2026 16:00:04 -0700 Subject: [PATCH 2/3] chore: regenerate fish completions --- autocomplete/fish_autocomplete | 59 +++++++++++++++++++--------------- 1 file changed, 33 insertions(+), 26 deletions(-) diff --git a/autocomplete/fish_autocomplete b/autocomplete/fish_autocomplete index ae1facf4b..5b158f889 100644 --- a/autocomplete/fish_autocomplete +++ b/autocomplete/fish_autocomplete @@ -363,7 +363,7 @@ complete -c lk -n '__fish_seen_subcommand_from room; and __fish_seen_subcommand_ complete -c lk -n '__fish_seen_subcommand_from room; and __fish_seen_subcommand_from list' -f -l help -s h -d 'show help' complete -x -c lk -n '__fish_seen_subcommand_from room; and __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from help h' -a 'help' -d 'Shows a list of commands or help for one command' complete -x -c lk -n '__fish_seen_subcommand_from room; and not __fish_seen_subcommand_from create list update delete join participants mute-track update-subscriptions send-data help h' -a 'update' -d 'Modify properties of an active room' -complete -c lk -n '__fish_seen_subcommand_from room; and __fish_seen_subcommand_from update' -f -l metadata -r +complete -c lk -n '__fish_seen_subcommand_from room; and __fish_seen_subcommand_from update' -f -l metadata -r -d 'New room `METADATA` (required)' complete -c lk -n '__fish_seen_subcommand_from room; and __fish_seen_subcommand_from update' -f -l help -s h -d 'show help' complete -x -c lk -n '__fish_seen_subcommand_from room; and __fish_seen_subcommand_from update; and not __fish_seen_subcommand_from help h' -a 'help' -d 'Shows a list of commands or help for one command' complete -x -c lk -n '__fish_seen_subcommand_from room; and not __fish_seen_subcommand_from create list update delete join participants mute-track update-subscriptions send-data help h' -a 'delete' -d 'Delete a room' @@ -389,7 +389,7 @@ complete -c lk -n '__fish_seen_subcommand_from room; and __fish_seen_subcommand_ complete -x -c lk -n '__fish_seen_subcommand_from room; and __fish_seen_subcommand_from join; and not __fish_seen_subcommand_from help h' -a 'help' -d 'Shows a list of commands or help for one command' complete -x -c lk -n '__fish_seen_subcommand_from room; and not __fish_seen_subcommand_from create list update delete join participants mute-track update-subscriptions send-data help h' -a 'participants' -d 'Manage room participants' complete -c lk -n '__fish_seen_subcommand_from room; and __fish_seen_subcommand_from participants' -f -l help -s h -d 'show help' -complete -x -c lk -n '__fish_seen_subcommand_from room; and __fish_seen_subcommand_from participants; and not __fish_seen_subcommand_from list get remove forward move update help h' -a 'list' -d 'List or search for active rooms by name' +complete -x -c lk -n '__fish_seen_subcommand_from room; and __fish_seen_subcommand_from participants; and not __fish_seen_subcommand_from list get remove forward move update help h' -a 'list' -d 'List participants in a room' complete -c lk -n '__fish_seen_subcommand_from room; and __fish_seen_subcommand_from participants; and __fish_seen_subcommand_from list' -f -l help -s h -d 'show help' complete -x -c lk -n '__fish_seen_subcommand_from room; and __fish_seen_subcommand_from participants; and __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from help h' -a 'help' -d 'Shows a list of commands or help for one command' complete -x -c lk -n '__fish_seen_subcommand_from room; and __fish_seen_subcommand_from participants; and not __fish_seen_subcommand_from list get remove forward move update help h' -a 'get' -d 'Fetch metadata of a room participant' @@ -475,9 +475,11 @@ complete -x -c lk -n '__fish_seen_subcommand_from token; and not __fish_seen_sub complete -x -c lk -n '__fish_lk_no_subcommand' -a 'dispatch' -d 'Create, list, and delete agent dispatches' complete -c lk -n '__fish_seen_subcommand_from dispatch' -f -l help -s h -d 'show help' complete -x -c lk -n '__fish_seen_subcommand_from dispatch; and not __fish_seen_subcommand_from list get create delete help h' -a 'list' -d 'List all agent dispatches in a room' +complete -c lk -n '__fish_seen_subcommand_from dispatch; and __fish_seen_subcommand_from list' -f -l json -s j -d 'Output as JSON' complete -c lk -n '__fish_seen_subcommand_from dispatch; and __fish_seen_subcommand_from list' -f -l help -s h -d 'show help' complete -x -c lk -n '__fish_seen_subcommand_from dispatch; and __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from help h' -a 'help' -d 'Shows a list of commands or help for one command' complete -x -c lk -n '__fish_seen_subcommand_from dispatch; and not __fish_seen_subcommand_from list get create delete help h' -a 'get' -d 'Get an agent dispatch by room and ID' +complete -c lk -n '__fish_seen_subcommand_from dispatch; and __fish_seen_subcommand_from get' -f -l json -s j -d 'Output as JSON' complete -c lk -n '__fish_seen_subcommand_from dispatch; and __fish_seen_subcommand_from get' -f -l help -s h -d 'show help' complete -x -c lk -n '__fish_seen_subcommand_from dispatch; and __fish_seen_subcommand_from get; and not __fish_seen_subcommand_from help h' -a 'help' -d 'Shows a list of commands or help for one command' complete -x -c lk -n '__fish_seen_subcommand_from dispatch; and not __fish_seen_subcommand_from list get create delete help h' -a 'create' -d 'Create an agent dispatch' @@ -486,9 +488,11 @@ complete -c lk -n '__fish_seen_subcommand_from dispatch; and __fish_seen_subcomm complete -c lk -n '__fish_seen_subcommand_from dispatch; and __fish_seen_subcommand_from create' -f -l agent-name -r -d 'agent to dispatch' complete -c lk -n '__fish_seen_subcommand_from dispatch; and __fish_seen_subcommand_from create' -f -l deployment -s d -r -d 'deployment of the agent to dispatch to (leave empty for production)' complete -c lk -n '__fish_seen_subcommand_from dispatch; and __fish_seen_subcommand_from create' -f -l metadata -r -d 'metadata to send to agent' +complete -c lk -n '__fish_seen_subcommand_from dispatch; and __fish_seen_subcommand_from create' -f -l json -s j -d 'Output as JSON' complete -c lk -n '__fish_seen_subcommand_from dispatch; and __fish_seen_subcommand_from create' -f -l help -s h -d 'show help' complete -x -c lk -n '__fish_seen_subcommand_from dispatch; and __fish_seen_subcommand_from create; and not __fish_seen_subcommand_from help h' -a 'help' -d 'Shows a list of commands or help for one command' complete -x -c lk -n '__fish_seen_subcommand_from dispatch; and not __fish_seen_subcommand_from list get create delete help h' -a 'delete' -d 'Delete an agent dispatch' +complete -c lk -n '__fish_seen_subcommand_from dispatch; and __fish_seen_subcommand_from delete' -f -l json -s j -d 'Output as JSON' complete -c lk -n '__fish_seen_subcommand_from dispatch; and __fish_seen_subcommand_from delete' -f -l help -s h -d 'show help' complete -x -c lk -n '__fish_seen_subcommand_from dispatch; and __fish_seen_subcommand_from delete; and not __fish_seen_subcommand_from help h' -a 'help' -d 'Shows a list of commands or help for one command' complete -x -c lk -n '__fish_seen_subcommand_from dispatch; and not __fish_seen_subcommand_from list get create delete help h' -a 'help' -d 'Shows a list of commands or help for one command' @@ -511,19 +515,19 @@ complete -c lk -n '__fish_seen_subcommand_from egress; and __fish_seen_subcomman complete -c lk -n '__fish_seen_subcommand_from egress; and __fish_seen_subcommand_from stop' -f -l help -s h -d 'show help' complete -x -c lk -n '__fish_seen_subcommand_from egress; and __fish_seen_subcommand_from stop; and not __fish_seen_subcommand_from help h' -a 'help' -d 'Shows a list of commands or help for one command' complete -x -c lk -n '__fish_seen_subcommand_from egress; and not __fish_seen_subcommand_from start list stop test-template update-layout update-stream' -a 'test-template' -d 'See what your egress template will look like in a recording' -complete -c lk -n '__fish_seen_subcommand_from egress; and __fish_seen_subcommand_from test-template' -f -l base-url -r -d 'Base template `URL`' +complete -c lk -n '__fish_seen_subcommand_from egress; and __fish_seen_subcommand_from test-template' -f -l base-url -r -d 'Base template `URL` (e.g. https://recorder.livekit.io/#)' complete -c lk -n '__fish_seen_subcommand_from egress; and __fish_seen_subcommand_from test-template' -f -l layout -r -d 'Layout `TYPE`' complete -c lk -n '__fish_seen_subcommand_from egress; and __fish_seen_subcommand_from test-template' -f -l publishers -r -d '`NUMBER` of publishers' complete -c lk -n '__fish_seen_subcommand_from egress; and __fish_seen_subcommand_from test-template' -f -l room -r -d '`NAME` of the room' complete -c lk -n '__fish_seen_subcommand_from egress; and __fish_seen_subcommand_from test-template' -f -l help -s h -d 'show help' complete -x -c lk -n '__fish_seen_subcommand_from egress; and __fish_seen_subcommand_from test-template; and not __fish_seen_subcommand_from help h' -a 'help' -d 'Shows a list of commands or help for one command' complete -x -c lk -n '__fish_seen_subcommand_from egress; and not __fish_seen_subcommand_from start list stop test-template update-layout update-stream' -a 'update-layout' -d 'Updates layout for a live room composite egress' -complete -c lk -n '__fish_seen_subcommand_from egress; and __fish_seen_subcommand_from update-layout' -f -l id -r -d 'Egress ID' +complete -c lk -n '__fish_seen_subcommand_from egress; and __fish_seen_subcommand_from update-layout' -f -l id -r -d 'Egress `ID`, instead of the positional argument' complete -c lk -n '__fish_seen_subcommand_from egress; and __fish_seen_subcommand_from update-layout' -f -l layout -r -d 'new web layout' complete -c lk -n '__fish_seen_subcommand_from egress; and __fish_seen_subcommand_from update-layout' -f -l help -s h -d 'show help' complete -x -c lk -n '__fish_seen_subcommand_from egress; and __fish_seen_subcommand_from update-layout; and not __fish_seen_subcommand_from help h' -a 'help' -d 'Shows a list of commands or help for one command' complete -x -c lk -n '__fish_seen_subcommand_from egress; and not __fish_seen_subcommand_from start list stop test-template update-layout update-stream' -a 'update-stream' -d 'Adds or removes RTMP output urls from a live stream' -complete -c lk -n '__fish_seen_subcommand_from egress; and __fish_seen_subcommand_from update-stream' -f -l id -r -d 'Egress ID' +complete -c lk -n '__fish_seen_subcommand_from egress; and __fish_seen_subcommand_from update-stream' -f -l id -r -d 'Egress `ID`, instead of the positional argument' complete -c lk -n '__fish_seen_subcommand_from egress; and __fish_seen_subcommand_from update-stream' -f -l add-urls -r -d 'urls to add' complete -c lk -n '__fish_seen_subcommand_from egress; and __fish_seen_subcommand_from update-stream' -f -l remove-urls -r -d 'urls to remove' complete -c lk -n '__fish_seen_subcommand_from egress; and __fish_seen_subcommand_from update-stream' -f -l help -s h -d 'show help' @@ -560,9 +564,9 @@ complete -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_f complete -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from inbound in inbound-trunk; and __fish_seen_subcommand_from create' -f -l numbers -r -d 'Sets a list of numbers for the trunk' complete -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from inbound in inbound-trunk; and __fish_seen_subcommand_from create' -f -l auth-user -r -d 'Set username for authentication' complete -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from inbound in inbound-trunk; and __fish_seen_subcommand_from create' -f -l auth-pass -r -d 'Set password for authentication' -complete -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from inbound in inbound-trunk; and __fish_seen_subcommand_from create' -f -l media-enc -r -d 'Sets media encryption for outbound call' -complete -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from inbound in inbound-trunk; and __fish_seen_subcommand_from create' -f -l no-default-codecs -d 'Disables a builtin list of default SIP codecs' -complete -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from inbound in inbound-trunk; and __fish_seen_subcommand_from create' -f -l codecs -r -d 'Sets a list of SIP codecs for outbound call' +complete -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from inbound in inbound-trunk; and __fish_seen_subcommand_from create' -f -l media-enc -r -d 'Sets media encryption for calls' +complete -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from inbound in inbound-trunk; and __fish_seen_subcommand_from create' -f -l no-default-codecs -d 'Disables a builtin list of default SIP codecs, so only those in --codecs are used. Has no effect without --codecs' +complete -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from inbound in inbound-trunk; and __fish_seen_subcommand_from create' -f -l codecs -r -d 'Sets a list of SIP codecs for calls' complete -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from inbound in inbound-trunk; and __fish_seen_subcommand_from create' -f -l help -s h -d 'show help' complete -x -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from inbound in inbound-trunk; and __fish_seen_subcommand_from create; and not __fish_seen_subcommand_from help h' -a 'help' -d 'Shows a list of commands or help for one command' complete -x -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from inbound in inbound-trunk; and not __fish_seen_subcommand_from list create update delete help h' -a 'update' -d 'Update an inbound SIP Trunk' @@ -571,9 +575,9 @@ complete -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_f complete -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from inbound in inbound-trunk; and __fish_seen_subcommand_from update' -f -l numbers -r -d 'Sets a new list of numbers for the trunk' complete -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from inbound in inbound-trunk; and __fish_seen_subcommand_from update' -f -l auth-user -r -d 'Set username for authentication' complete -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from inbound in inbound-trunk; and __fish_seen_subcommand_from update' -f -l auth-pass -r -d 'Set password for authentication' -complete -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from inbound in inbound-trunk; and __fish_seen_subcommand_from update' -f -l media-enc -r -d 'Sets media encryption for outbound call' -complete -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from inbound in inbound-trunk; and __fish_seen_subcommand_from update' -f -l no-default-codecs -d 'Disables a builtin list of default SIP codecs' -complete -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from inbound in inbound-trunk; and __fish_seen_subcommand_from update' -f -l codecs -r -d 'Sets a list of SIP codecs for outbound call' +complete -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from inbound in inbound-trunk; and __fish_seen_subcommand_from update' -f -l media-enc -r -d 'Sets media encryption for calls' +complete -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from inbound in inbound-trunk; and __fish_seen_subcommand_from update' -f -l no-default-codecs -d 'Disables a builtin list of default SIP codecs, so only those in --codecs are used. Has no effect without --codecs' +complete -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from inbound in inbound-trunk; and __fish_seen_subcommand_from update' -f -l codecs -r -d 'Sets a list of SIP codecs for calls' complete -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from inbound in inbound-trunk; and __fish_seen_subcommand_from update' -f -l help -s h -d 'show help' complete -x -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from inbound in inbound-trunk; and __fish_seen_subcommand_from update; and not __fish_seen_subcommand_from help h' -a 'help' -d 'Shows a list of commands or help for one command' complete -x -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from inbound in inbound-trunk; and not __fish_seen_subcommand_from list create update delete help h' -a 'delete' -d 'Delete a SIP Trunk' @@ -594,9 +598,9 @@ complete -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_f complete -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from outbound out outbound-trunk; and __fish_seen_subcommand_from create' -f -l numbers -r -d 'Sets a list of numbers for the trunk' complete -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from outbound out outbound-trunk; and __fish_seen_subcommand_from create' -f -l auth-user -r -d 'Set username for authentication' complete -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from outbound out outbound-trunk; and __fish_seen_subcommand_from create' -f -l auth-pass -r -d 'Set password for authentication' -complete -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from outbound out outbound-trunk; and __fish_seen_subcommand_from create' -f -l media-enc -r -d 'Sets media encryption for outbound call' -complete -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from outbound out outbound-trunk; and __fish_seen_subcommand_from create' -f -l no-default-codecs -d 'Disables a builtin list of default SIP codecs' -complete -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from outbound out outbound-trunk; and __fish_seen_subcommand_from create' -f -l codecs -r -d 'Sets a list of SIP codecs for outbound call' +complete -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from outbound out outbound-trunk; and __fish_seen_subcommand_from create' -f -l media-enc -r -d 'Sets media encryption for calls' +complete -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from outbound out outbound-trunk; and __fish_seen_subcommand_from create' -f -l no-default-codecs -d 'Disables a builtin list of default SIP codecs, so only those in --codecs are used. Has no effect without --codecs' +complete -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from outbound out outbound-trunk; and __fish_seen_subcommand_from create' -f -l codecs -r -d 'Sets a list of SIP codecs for calls' complete -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from outbound out outbound-trunk; and __fish_seen_subcommand_from create' -f -l help -s h -d 'show help' complete -x -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from outbound out outbound-trunk; and __fish_seen_subcommand_from create; and not __fish_seen_subcommand_from help h' -a 'help' -d 'Shows a list of commands or help for one command' complete -x -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from outbound out outbound-trunk; and not __fish_seen_subcommand_from list create update delete help h' -a 'update' -d 'Update an outbound SIP Trunk' @@ -608,9 +612,9 @@ complete -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_f complete -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from outbound out outbound-trunk; and __fish_seen_subcommand_from update' -f -l numbers -r -d 'Sets a new list of numbers for the trunk' complete -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from outbound out outbound-trunk; and __fish_seen_subcommand_from update' -f -l auth-user -r -d 'Set username for authentication' complete -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from outbound out outbound-trunk; and __fish_seen_subcommand_from update' -f -l auth-pass -r -d 'Set password for authentication' -complete -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from outbound out outbound-trunk; and __fish_seen_subcommand_from update' -f -l media-enc -r -d 'Sets media encryption for outbound call' -complete -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from outbound out outbound-trunk; and __fish_seen_subcommand_from update' -f -l no-default-codecs -d 'Disables a builtin list of default SIP codecs' -complete -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from outbound out outbound-trunk; and __fish_seen_subcommand_from update' -f -l codecs -r -d 'Sets a list of SIP codecs for outbound call' +complete -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from outbound out outbound-trunk; and __fish_seen_subcommand_from update' -f -l media-enc -r -d 'Sets media encryption for calls' +complete -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from outbound out outbound-trunk; and __fish_seen_subcommand_from update' -f -l no-default-codecs -d 'Disables a builtin list of default SIP codecs, so only those in --codecs are used. Has no effect without --codecs' +complete -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from outbound out outbound-trunk; and __fish_seen_subcommand_from update' -f -l codecs -r -d 'Sets a list of SIP codecs for calls' complete -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from outbound out outbound-trunk; and __fish_seen_subcommand_from update' -f -l help -s h -d 'show help' complete -x -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from outbound out outbound-trunk; and __fish_seen_subcommand_from update; and not __fish_seen_subcommand_from help h' -a 'help' -d 'Shows a list of commands or help for one command' complete -x -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from outbound out outbound-trunk; and not __fish_seen_subcommand_from list create update delete help h' -a 'delete' -d 'Delete SIP Trunk' @@ -626,9 +630,9 @@ complete -x -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcomman complete -x -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from dispatch dispatch-rule; and not __fish_seen_subcommand_from list create update delete help h' -a 'create' -d 'Create a SIP Dispatch Rule' complete -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from dispatch dispatch-rule; and __fish_seen_subcommand_from create' -f -l name -r -d 'Sets a new name for the dispatch rule' complete -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from dispatch dispatch-rule; and __fish_seen_subcommand_from create' -f -l trunks -r -d 'Sets a list of trunks for the dispatch rule' -complete -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from dispatch dispatch-rule; and __fish_seen_subcommand_from create' -f -l media-enc -r -d 'Sets media encryption for outbound call' -complete -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from dispatch dispatch-rule; and __fish_seen_subcommand_from create' -f -l no-default-codecs -d 'Disables a builtin list of default SIP codecs' -complete -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from dispatch dispatch-rule; and __fish_seen_subcommand_from create' -f -l codecs -r -d 'Sets a list of SIP codecs for outbound call' +complete -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from dispatch dispatch-rule; and __fish_seen_subcommand_from create' -f -l media-enc -r -d 'Sets media encryption for calls' +complete -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from dispatch dispatch-rule; and __fish_seen_subcommand_from create' -f -l no-default-codecs -d 'Disables a builtin list of default SIP codecs, so only those in --codecs are used. Has no effect without --codecs' +complete -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from dispatch dispatch-rule; and __fish_seen_subcommand_from create' -f -l codecs -r -d 'Sets a list of SIP codecs for calls' complete -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from dispatch dispatch-rule; and __fish_seen_subcommand_from create' -f -l help -s h -d 'show help' complete -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from dispatch dispatch-rule; and __fish_seen_subcommand_from create' -f -l direct -r -d 'Sets a direct dispatch to a specified room' complete -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from dispatch dispatch-rule; and __fish_seen_subcommand_from create' -f -l caller -s individual -r -d 'Sets a individual caller dispatch to a new room with a specific prefix' @@ -639,9 +643,9 @@ complete -x -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcomman complete -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from dispatch dispatch-rule; and __fish_seen_subcommand_from update' -f -l id -r -d 'ID for the rule to update' complete -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from dispatch dispatch-rule; and __fish_seen_subcommand_from update' -f -l name -r -d 'Sets a new name for the rule' complete -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from dispatch dispatch-rule; and __fish_seen_subcommand_from update' -f -l trunks -r -d 'Sets a new list of trunk IDs' -complete -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from dispatch dispatch-rule; and __fish_seen_subcommand_from update' -f -l media-enc -r -d 'Sets media encryption for outbound call' -complete -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from dispatch dispatch-rule; and __fish_seen_subcommand_from update' -f -l no-default-codecs -d 'Disables a builtin list of default SIP codecs' -complete -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from dispatch dispatch-rule; and __fish_seen_subcommand_from update' -f -l codecs -r -d 'Sets a list of SIP codecs for outbound call' +complete -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from dispatch dispatch-rule; and __fish_seen_subcommand_from update' -f -l media-enc -r -d 'Sets media encryption for calls' +complete -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from dispatch dispatch-rule; and __fish_seen_subcommand_from update' -f -l no-default-codecs -d 'Disables a builtin list of default SIP codecs, so only those in --codecs are used. Has no effect without --codecs' +complete -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from dispatch dispatch-rule; and __fish_seen_subcommand_from update' -f -l codecs -r -d 'Sets a list of SIP codecs for calls' complete -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from dispatch dispatch-rule; and __fish_seen_subcommand_from update' -f -l help -s h -d 'show help' complete -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from dispatch dispatch-rule; and __fish_seen_subcommand_from update' -f -l direct -r -d 'Sets a direct dispatch to a specified room' complete -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from dispatch dispatch-rule; and __fish_seen_subcommand_from update' -f -l caller -s individual -r -d 'Sets a individual caller dispatch to a new room with a specific prefix' @@ -666,9 +670,9 @@ complete -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_f complete -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from participant; and __fish_seen_subcommand_from create' -f -l wait -d 'wait for the call to dial (overrides json config)' complete -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from participant; and __fish_seen_subcommand_from create' -f -l timeout -r -d 'timeout for the call to dial' complete -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from participant; and __fish_seen_subcommand_from create' -f -l header -r -d 'Custom SIP header in format \'Key:Value\' (can be specified multiple times)' -complete -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from participant; and __fish_seen_subcommand_from create' -f -l media-enc -r -d 'Sets media encryption for outbound call' -complete -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from participant; and __fish_seen_subcommand_from create' -f -l no-default-codecs -d 'Disables a builtin list of default SIP codecs' -complete -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from participant; and __fish_seen_subcommand_from create' -f -l codecs -r -d 'Sets a list of SIP codecs for outbound call' +complete -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from participant; and __fish_seen_subcommand_from create' -f -l media-enc -r -d 'Sets media encryption for calls' +complete -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from participant; and __fish_seen_subcommand_from create' -f -l no-default-codecs -d 'Disables a builtin list of default SIP codecs, so only those in --codecs are used. Has no effect without --codecs' +complete -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from participant; and __fish_seen_subcommand_from create' -f -l codecs -r -d 'Sets a list of SIP codecs for calls' complete -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from participant; and __fish_seen_subcommand_from create' -f -l help -s h -d 'show help' complete -x -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from participant; and __fish_seen_subcommand_from create; and not __fish_seen_subcommand_from help h' -a 'help' -d 'Shows a list of commands or help for one command' complete -x -c lk -n '__fish_seen_subcommand_from sip; and __fish_seen_subcommand_from participant; and not __fish_seen_subcommand_from create transfer help h' -a 'transfer' -d 'Transfer a SIP Participant' @@ -692,6 +696,7 @@ complete -x -c lk -n '__fish_seen_subcommand_from number; and __fish_seen_subcom complete -x -c lk -n '__fish_seen_subcommand_from number; and not __fish_seen_subcommand_from search purchase list get update release help h' -a 'purchase' -d 'Purchase phone numbers from inventory' complete -c lk -n '__fish_seen_subcommand_from number; and __fish_seen_subcommand_from purchase' -f -l numbers -r -d 'Phone numbers to purchase (e.g., "+1234567890", "+1234567891")' complete -c lk -n '__fish_seen_subcommand_from number; and __fish_seen_subcommand_from purchase' -f -l sip-dispatch-rule-id -r -d 'SIP dispatch rule ID to apply to all purchased numbers' +complete -c lk -n '__fish_seen_subcommand_from number; and __fish_seen_subcommand_from purchase' -f -l json -s j -d 'Output as JSON' complete -c lk -n '__fish_seen_subcommand_from number; and __fish_seen_subcommand_from purchase' -f -l help -s h -d 'show help' complete -x -c lk -n '__fish_seen_subcommand_from number; and __fish_seen_subcommand_from purchase; and not __fish_seen_subcommand_from help h' -a 'help' -d 'Shows a list of commands or help for one command' complete -x -c lk -n '__fish_seen_subcommand_from number; and not __fish_seen_subcommand_from search purchase list get update release help h' -a 'list' -d 'List phone numbers for a project' @@ -705,12 +710,14 @@ complete -x -c lk -n '__fish_seen_subcommand_from number; and __fish_seen_subcom complete -x -c lk -n '__fish_seen_subcommand_from number; and not __fish_seen_subcommand_from search purchase list get update release help h' -a 'get' -d 'Get a phone number from a project' complete -c lk -n '__fish_seen_subcommand_from number; and __fish_seen_subcommand_from get' -f -l id -r -d 'Use phone number ID for direct lookup' complete -c lk -n '__fish_seen_subcommand_from number; and __fish_seen_subcommand_from get' -f -l number -r -d 'Use phone number string for lookup' +complete -c lk -n '__fish_seen_subcommand_from number; and __fish_seen_subcommand_from get' -f -l json -s j -d 'Output as JSON' complete -c lk -n '__fish_seen_subcommand_from number; and __fish_seen_subcommand_from get' -f -l help -s h -d 'show help' complete -x -c lk -n '__fish_seen_subcommand_from number; and __fish_seen_subcommand_from get; and not __fish_seen_subcommand_from help h' -a 'help' -d 'Shows a list of commands or help for one command' complete -x -c lk -n '__fish_seen_subcommand_from number; and not __fish_seen_subcommand_from search purchase list get update release help h' -a 'update' -d 'Update a phone number in a project' complete -c lk -n '__fish_seen_subcommand_from number; and __fish_seen_subcommand_from update' -f -l id -r -d 'Use phone number ID for direct lookup' complete -c lk -n '__fish_seen_subcommand_from number; and __fish_seen_subcommand_from update' -f -l number -r -d 'Use phone number string for lookup' complete -c lk -n '__fish_seen_subcommand_from number; and __fish_seen_subcommand_from update' -f -l sip-dispatch-rule-id -r -d 'SIP dispatch rule ID to assign to the phone number' +complete -c lk -n '__fish_seen_subcommand_from number; and __fish_seen_subcommand_from update' -f -l json -s j -d 'Output as JSON' complete -c lk -n '__fish_seen_subcommand_from number; and __fish_seen_subcommand_from update' -f -l help -s h -d 'show help' complete -x -c lk -n '__fish_seen_subcommand_from number; and __fish_seen_subcommand_from update; and not __fish_seen_subcommand_from help h' -a 'help' -d 'Shows a list of commands or help for one command' complete -x -c lk -n '__fish_seen_subcommand_from number; and not __fish_seen_subcommand_from search purchase list get update release help h' -a 'release' -d 'Release phone numbers' From 8eadb92a26382a6b092e0715e6622df654602640 Mon Sep 17 00:00:00 2001 From: Ben Cherry Date: Thu, 24 Sep 2026 16:08:16 -0700 Subject: [PATCH 3/3] fix(egress): drop positional ID from update-layout help instead of accepting it --- autocomplete/fish_autocomplete | 4 ++-- cmd/lk/egress.go | 40 +++++++++++++++++----------------- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/autocomplete/fish_autocomplete b/autocomplete/fish_autocomplete index 5b158f889..515f8931b 100644 --- a/autocomplete/fish_autocomplete +++ b/autocomplete/fish_autocomplete @@ -522,12 +522,12 @@ complete -c lk -n '__fish_seen_subcommand_from egress; and __fish_seen_subcomman complete -c lk -n '__fish_seen_subcommand_from egress; and __fish_seen_subcommand_from test-template' -f -l help -s h -d 'show help' complete -x -c lk -n '__fish_seen_subcommand_from egress; and __fish_seen_subcommand_from test-template; and not __fish_seen_subcommand_from help h' -a 'help' -d 'Shows a list of commands or help for one command' complete -x -c lk -n '__fish_seen_subcommand_from egress; and not __fish_seen_subcommand_from start list stop test-template update-layout update-stream' -a 'update-layout' -d 'Updates layout for a live room composite egress' -complete -c lk -n '__fish_seen_subcommand_from egress; and __fish_seen_subcommand_from update-layout' -f -l id -r -d 'Egress `ID`, instead of the positional argument' +complete -c lk -n '__fish_seen_subcommand_from egress; and __fish_seen_subcommand_from update-layout' -f -l id -r -d 'Egress ID' complete -c lk -n '__fish_seen_subcommand_from egress; and __fish_seen_subcommand_from update-layout' -f -l layout -r -d 'new web layout' complete -c lk -n '__fish_seen_subcommand_from egress; and __fish_seen_subcommand_from update-layout' -f -l help -s h -d 'show help' complete -x -c lk -n '__fish_seen_subcommand_from egress; and __fish_seen_subcommand_from update-layout; and not __fish_seen_subcommand_from help h' -a 'help' -d 'Shows a list of commands or help for one command' complete -x -c lk -n '__fish_seen_subcommand_from egress; and not __fish_seen_subcommand_from start list stop test-template update-layout update-stream' -a 'update-stream' -d 'Adds or removes RTMP output urls from a live stream' -complete -c lk -n '__fish_seen_subcommand_from egress; and __fish_seen_subcommand_from update-stream' -f -l id -r -d 'Egress `ID`, instead of the positional argument' +complete -c lk -n '__fish_seen_subcommand_from egress; and __fish_seen_subcommand_from update-stream' -f -l id -r -d 'Egress ID' complete -c lk -n '__fish_seen_subcommand_from egress; and __fish_seen_subcommand_from update-stream' -f -l add-urls -r -d 'urls to add' complete -c lk -n '__fish_seen_subcommand_from egress; and __fish_seen_subcommand_from update-stream' -f -l remove-urls -r -d 'urls to remove' complete -c lk -n '__fish_seen_subcommand_from egress; and __fish_seen_subcommand_from update-stream' -f -l help -s h -d 'show help' diff --git a/cmd/lk/egress.go b/cmd/lk/egress.go index db7bb10c8..09c15f5c5 100644 --- a/cmd/lk/egress.go +++ b/cmd/lk/egress.go @@ -151,15 +151,15 @@ var ( }, }, { - Name: "update-layout", - Usage: "Updates layout for a live room composite egress", - ArgsUsage: "ID", - Before: createEgressClient, - Action: updateLayout, + Name: "update-layout", + Usage: "Updates layout for a live room composite egress", + Before: createEgressClient, + Action: updateLayout, Flags: []cli.Flag{ &cli.StringFlag{ - Name: "id", - Usage: "Egress `ID`, instead of the positional argument", + Name: "id", + Usage: "Egress ID", + Required: true, }, &cli.StringFlag{ Name: "layout", @@ -169,15 +169,15 @@ var ( }, }, { - Name: "update-stream", - Usage: "Adds or removes RTMP output urls from a live stream", - ArgsUsage: "ID", - Before: createEgressClient, - Action: updateStream, + Name: "update-stream", + Usage: "Adds or removes RTMP output urls from a live stream", + Before: createEgressClient, + Action: updateStream, Flags: []cli.Flag{ &cli.StringFlag{ - Name: "id", - Usage: "Egress `ID`, instead of the positional argument", + Name: "id", + Usage: "Egress ID", + Required: true, }, &cli.StringSliceFlag{ Name: "add-urls", @@ -683,9 +683,9 @@ func listEgress(ctx context.Context, cmd *cli.Command) error { } func updateLayout(ctx context.Context, cmd *cli.Command) error { - egressId, err := extractFlagOrArg(cmd, "id") - if err != nil { - return err + egressId := cmd.String("id") + if egressId == "" { + egressId = cmd.Args().First() } info, err := egressClient.UpdateLayout(ctx, &livekit.UpdateLayoutRequest{ EgressId: egressId, @@ -700,9 +700,9 @@ func updateLayout(ctx context.Context, cmd *cli.Command) error { } func updateStream(ctx context.Context, cmd *cli.Command) error { - egressId, err := extractFlagOrArg(cmd, "id") - if err != nil { - return err + egressId := cmd.String("id") + if egressId == "" { + egressId = cmd.Args().First() } info, err := egressClient.UpdateStream(ctx, &livekit.UpdateStreamRequest{ EgressId: egressId,