From: AsamK Date: Mon, 16 May 2022 13:22:03 +0000 (+0200) Subject: Added new parameter to filter the output of listGroups by groupId X-Git-Tag: v0.10.6~12 X-Git-Url: https://git.nmode.ca/signal-cli/commitdiff_plain/c3425979dd4800a7416cb2dfc13523097bbc0955?ds=sidebyside Added new parameter to filter the output of listGroups by groupId Fixes #953 --- diff --git a/man/signal-cli.1.adoc b/man/signal-cli.1.adoc index 7bbdbf32..4fdd684a 100644 --- a/man/signal-cli.1.adoc +++ b/man/signal-cli.1.adoc @@ -413,6 +413,9 @@ In json mode this is outputted as an list of objects and is always in detailed m *-d*, *--detailed*:: Include the list of members of each group and the group invite link. +*-g*, *--group-id*:: +Filter the group list by one or more group IDs. + === listContacts Show a list of known contacts with names. diff --git a/src/main/java/org/asamk/signal/commands/ListGroupsCommand.java b/src/main/java/org/asamk/signal/commands/ListGroupsCommand.java index 80e583af..c08571f7 100644 --- a/src/main/java/org/asamk/signal/commands/ListGroupsCommand.java +++ b/src/main/java/org/asamk/signal/commands/ListGroupsCommand.java @@ -11,6 +11,7 @@ import org.asamk.signal.manager.storage.recipients.RecipientAddress; import org.asamk.signal.output.JsonWriter; import org.asamk.signal.output.OutputWriter; import org.asamk.signal.output.PlainTextWriter; +import org.asamk.signal.util.CommandUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -33,6 +34,7 @@ public class ListGroupsCommand implements JsonRpcLocalCommand { subparser.addArgument("-d", "--detailed") .action(Arguments.storeTrue()) .help("List the members and group invite links of each group. If output=json, then this is always set"); + subparser.addArgument("-g", "--group-id").help("Specify one or more group IDs to show.").nargs("*"); } private static Set resolveMembers(Set addresses) { @@ -79,7 +81,13 @@ public class ListGroupsCommand implements JsonRpcLocalCommand { public void handleCommand( final Namespace ns, final Manager m, final OutputWriter outputWriter ) throws CommandException { - final var groups = m.getGroups(); + var groups = m.getGroups(); + + final var groupIdStrings = ns.getList("group-id"); + final var groupIds = CommandUtil.getGroupIds(groupIdStrings); + if (groupIds.size() > 0) { + groups = groups.stream().filter(g -> groupIds.contains(g.groupId())).toList(); + } if (outputWriter instanceof JsonWriter jsonWriter) {