id = "pianod"
name = "pianod"
homepage = "https://deviousfish.com/pianod/"
description = "Pandora client with multiple control interfaces."
executables = ["pianod"]
[dotfiles]
paths = ["[configHome]/pianod/"]
secret = ["[configHome]/pianod/passwd.xml*", "[configHome]/pianod/x509-server-key.pem"]
side_effect = false
[commands]
format = 1
label = "Start pianod"
description = "Launch the music daemon with ports, web client directory and config directory. Logging flags and root privilege-drop options are left out."
quality = "ai-draft"
parser = { end_of_options = "--", interleave = "permute", long_equals = false, short_attached = true, short_bundles = true }
[[commands.source]]
id = "manpage"
kind = "manual"
url = "https://gsp.com/cgi-bin/man.cgi?section=1&topic=pianod"
revision = "2026-10-27"
evidence = """
pianod [-v] [-S] [-p port] [-P httpport] [-s httpsport] [-c clientdir] [-d directory] [-n nobodyuser] [-g groups]
-v Report version and build information, then exit.
-S Shadow system users.
-p port The line port, default 4445.
-P port The HTTP port, default 4446 or -p port + 1.
-s port The HTTPS port, default 4447
-c clientdir Location of files to be served via HTTP(S).
-d directory Sets the location for pianod configuration and data files.
"""
[[commands.field]]
id = "line_port"
label = "Line port"
description = "Default 4445; 0 disables the line-oriented port."
type = "integer"
option = ["-p"]
sources = ["manpage"]
[[commands.field]]
id = "http_port"
label = "HTTP port"
description = "Default 4446; 0 disables HTTP and Websockets."
type = "integer"
option = ["-P"]
sources = ["manpage"]
[[commands.field]]
id = "https_port"
label = "HTTPS port"
description = "Default 4447; 0 disables HTTPS."
type = "integer"
option = ["-s"]
sources = ["manpage"]
[[commands.field]]
id = "client_dir"
label = "Web client directory"
type = "path"
option = ["-c"]
path = { kind = "directory", role = "input" }
sources = ["manpage"]
[[commands.field]]
id = "data_dir"
label = "Config and data directory"
type = "path"
option = ["-d"]
path = { kind = "directory", role = "input" }
sources = ["manpage"]
[[commands.field]]
id = "shadow"
label = "Shadow system users"
type = "boolean"
option = ["-S"]
sources = ["manpage"]
[[commands.field]]
id = "version"
label = "Show version and exit"
type = "count"
option = ["-v"]
sources = ["manpage"]
[[commands.task]]
id = "start"
label = "Start daemon"
fields = ["line_port", "http_port", "https_port", "client_dir", "data_dir", "shadow"]
required = []
[[commands.task]]
id = "version"
label = "Show version"
set = { version = [1] }
fields = ["version"]
required = []
[[commands.group]]
id = "basic"
label = "Basic"
fields = ["line_port", "http_port", "https_port", "data_dir", "client_dir", "shadow", "version"]