server: Introduce hash sort for ls command.
[paraslash.git] / m4 / lls / server_cmd.suite.m4
index 83041ddf79ec46a24c954125eba9bed6de053b13..5ac7f16afa6888f97488e8c5d4dd6a7db0d94a64 100644 (file)
@@ -178,6 +178,117 @@ aux_info_prefix = Permissions:
                n <= 100.
        [/description]
 
+[subcommand ls]
+       purpose = list audio files which match a pattern
+       non-opts-name = [pattern...]
+       aux_info = AFS_READ
+       [description]
+               If no pattern is given, all files are listed.  Otherwise, the command
+               lists all files of the audio file table whose path matches at least
+               one of the given patterns.
+       [/description]
+       [option listing-mode]
+               short_opt = l
+               summary = use alternative output format
+               arg_type = string
+               arg_info = optional_arg
+               typestr = mode
+               default_val = long
+               [help]
+                       The optional mode argument is either a single character or a word
+                       according to the following list.
+
+                       short (s). List only the path or basename (last component of the path),
+                       depending on whether -p is also given. This listing mode acts as if
+                       --listing-mode had not been given.
+
+                       long (l). Show detailed information. This is the default if no argument
+                       to --listing-mode is supplied.
+
+                       verbose (v). Multi-line output, one row per data field stored in the
+                       audio file table.
+
+                       parser-friendly (p). Like verbose listing mode, but use numerical
+                       values for the names of the output fields and prefix each line with
+                       a length field.
+
+                       mbox (m). Generate output suitable to be viewed with a mail
+                       program. One "mail" per matching audio file.
+
+                       chunk-table (c). Print path (or basename, depending on whether -p is
+                       also given), chunk time and chunk offsets.
+
+               [/help]
+       [option full-path]
+               short_opt = F
+               summary = list full paths, match full paths against patterns
+               [help]
+                       This option is the default, so it does nothing. Deprecated as of
+                       v0.6.0, scheduled for removal in v0.6.1.
+               [/help]
+       [option basename]
+               short_opt = b
+               summary = list and match basenames only
+               [help]
+                       Print only the basename of each matching file and match only the
+                       basenames of the paths stored in the audio file table against the
+                       given patterns. The default is to print and match the full path.
+               [/help]
+       [option admissible]
+               short_opt = a
+               summary = list only admissible files
+               [help]
+                       List only files which are admissible with respect to the current mood
+                       or playlist.
+               [/help]
+       [option reverse]
+               short_opt = r
+               summary = reverse sort order
+       [option unix-date]
+               short_opt = d
+               summary = print dates as seconds after the epoch
+       [option sort]
+               short_opt = s
+               summary = change sort order
+               arg_type = string
+               arg_info = required_arg
+               typestr = order
+               default_val = path
+               [help]
+                       The sort order must be given as an required argument. Like for
+                       --listing-mode, this argument may either be a single character or a
+                       word, according to the following list.
+
+                       path (p). Sort alphabetically by path or basename, depending on
+                       whether -b is given. This is the default if --sort is not given.
+
+                       score (s). Iterate over the entries of the score table, rather than
+                       the audio file table. This sort order implies --admissible, since
+                       the score table contains only admissible files.
+
+                       lastplayed (l)
+
+                       numplayed (n)
+
+                       frequency (f)
+
+                       channels (c)
+
+                       image-id (i)
+
+                       lyrics-id (y)
+
+                       bitrate (b)
+
+                       duration (d)
+
+                       audio-format (a)
+
+                       hash (h)
+
+                       If --sort is not given, path sort is implied.
+               [/help]
+
 [subcommand lsatt]
        purpose = list attributes
        aux_info = AFS_READ
@@ -507,3 +618,65 @@ aux_info_prefix = Permissions:
                short_opt = v
                summary = print detailed (multi-line) version text
 
+m4_define(`BLOB_COMMANDS', `
+[subcommand rm`$2']
+       purpose = remove `$1' blob(s)
+       non-opts-name = pattern...
+       aux_info = AFS_READ | AFS_WRITE
+       [description]
+               Remove all `$1' blobs which match any of the given patterns.
+       [/description]
+
+[subcommand mv`$2']
+       purpose = rename `$1' blob(s)
+       non-opts-name = source dest
+       aux_info = AFS_READ | AFS_WRITE
+       [description]
+               Rename `$1' source to dest. The command fails if the source `$1'
+               does not exist or if the destination `$1' already exists.
+       [/description]
+
+[subcommand add`$2']
+       purpose = add a blob to the `$1' table
+       non-opts-name = `$1'_name
+       aux_info = AFS_READ | AFS_WRITE
+       [description]
+               Read from stdin and ask the audio file selector to create a blob in
+               the `$1' table. If the named blob already exists, it gets replaced
+               with the new data.
+       [/description]
+
+[subcommand cat`$2']
+       purpose = dump a `$1' blob to stdout
+       non-opts-name = `$1'_name
+       aux_info = AFS_READ
+
+[subcommand ls`$2']
+       purpose = list blobs of type `$1' which match a pattern
+       non-opts-name = [pattern...]
+       aux_info = AFS_READ
+       [description]
+               Print the list of all blobs which match the given pattern. If no
+               pattern is given, the full list is printed.
+       [/description]
+       [option id-sort]
+               short_opt = i
+               summary = sort by identifier
+               [help]
+                       The default is to sort alphabetically by name.
+               [/help]
+       [option long]
+               short_opt = l
+               summary = long listing
+               [help]
+                       Print identifier and name. The default is to print only the name.
+               [/help]
+       [option reverse]
+               short_opt = r
+               summary = reverse sort order
+')
+
+BLOB_COMMANDS(`moods', `mood')
+BLOB_COMMANDS(`playlist', `pl')
+BLOB_COMMANDS(`image', `img')
+BLOB_COMMANDS(`lyrics', `lyr')