Skip to content

Commit

Permalink
New command tagtypes available
Browse files Browse the repository at this point in the history
Shows the list of tag types configured by the ``metadata_to_use`` setting.
  • Loading branch information
jcorporation committed Sep 28, 2024
1 parent 124c0e6 commit 25e8ce2
Show file tree
Hide file tree
Showing 5 changed files with 21 additions and 0 deletions.
1 change: 1 addition & 0 deletions NEWS
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ ver 0.24 (not yet released)
- "sticker find" supports sort and window parameter and new sticker compare operators "eq", "lt" and "gt"
- consume only idle flags that were subscribed to
- volume command is no longer deprecated
- new "available" subcommand for tagtypes
* database
- attribute "added" shows when each song was added to the database
- fix integer overflows with 64-bit inode numbers
Expand Down
6 changes: 6 additions & 0 deletions doc/protocol.rst
Original file line number Diff line number Diff line change
Expand Up @@ -1678,6 +1678,12 @@ Connection settings
Announce that this client is interested in all tag
types. This is the default setting for new clients.

.. _command_tagtypes_available:

:command:`tagtypes available`
Shows the list of tag types configured
by the ``metadata_to_use`` setting.

.. _partition_commands:

Partition commands
Expand Down
8 changes: 8 additions & 0 deletions src/TagPrint.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,14 @@ tag_print_types(Response &r) noexcept
r.Fmt(FMT_STRING("tagtype: {}\n"), tag_item_names[i]);
}

void
tag_print_types_available(Response &r) noexcept
{
for (unsigned i = 0; i < TAG_NUM_OF_ITEM_TYPES; i++)
if (global_tag_mask.Test(TagType(i)))
r.Fmt(FMT_STRING("tagtype: {}\n"), tag_item_names[i]);
}

void
tag_print(Response &r, TagType type, std::string_view value) noexcept
{
Expand Down
3 changes: 3 additions & 0 deletions src/TagPrint.hxx
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@ class Response;
void
tag_print_types(Response &response) noexcept;

void
tag_print_types_available(Response &response) noexcept;

void
tag_print(Response &response, TagType type, std::string_view value) noexcept;

Expand Down
3 changes: 3 additions & 0 deletions src/command/ClientCommands.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,9 @@ handle_tagtypes(Client &client, Request request, Response &r)
} else if (StringIsEqual(cmd, "disable")) {
client.tag_mask &= ~ParseTagMask(request);
return CommandResult::OK;
} else if (StringIsEqual(cmd, "available")) {
tag_print_types_available(r);
return CommandResult::OK;
} else {
r.Error(ACK_ERROR_ARG, "Unknown sub command");
return CommandResult::ERROR;
Expand Down

0 comments on commit 25e8ce2

Please sign in to comment.