id = "frotz"
name = "Frotz"
homepage = "https://661.org/proj/if/frotz/"
description = "Infocom-style interactive fiction player."
executables = ["frotz", "dfrotz", "sfrotz"]
[dotfiles]
paths = ["~/.frotzrc"]
secret = []
[commands]
format = 1
label = "Play a story file"
description = "Start the curses Frotz interpreter on a Z-code or Blorb file with display, sound and random-seed options. Debug watch options and screen size overrides are left out."
quality = "ai-draft"
parser = { end_of_options = "--", interleave = "permute", long_equals = false, short_attached = false, short_bundles = false }
[[commands.source]]
id = "man"
kind = "manual"
url = "https://manpages.debian.org/testing/frotz/frotz.6.en.html"
revision = "2.55+dfsg-3"
evidence = """
frotz [options] file [blorb_file]
-b <colorname> Sets the default background color.
-f <colorname> Sets the default foreground color.
-d Disable color.
-F Force color mode.
-e Enable sound.
-q Quiet. Turns off sound effects.
-m Enable mouse support.
-p Plain ASCII output only.
-s N Set the random number seed value.
-t Sets the Z-machine's Tandy bit, which may affect the behavior of certain Infocom games.
-u N Sets the number of slots available for Frotz's multiple undo hotkey
-x Expand the abbreviations "g", "x", and "z" to "again", "examine", and "wait".
-R <path> Restricted read/write.
black red green yellow blue magenta cyan white
"""
[[commands.field]]
id = "story"
label = "Story file"
description = "Z-code or Blorb file."
type = "path"
position = 0
path = { kind = "file", role = "input", must_exist = true }
sources = ["man"]
[[commands.field]]
id = "blorb"
label = "Blorb file"
description = "Optional alternatively-named Blorb file."
type = "path"
position = 1
min = 0
path = { kind = "file", role = "input", must_exist = true }
sources = ["man"]
[[commands.field]]
id = "background"
label = "Background color"
type = "enum"
option = ["-b"]
choices = [{ value = "black", label = "Black" }, { value = "red", label = "Red" }, { value = "green", label = "Green" }, { value = "yellow", label = "Yellow" }, { value = "blue", label = "Blue" }, { value = "magenta", label = "Magenta" }, { value = "cyan", label = "Cyan" }, { value = "white", label = "White" }]
sources = ["man"]
[[commands.field]]
id = "foreground"
label = "Foreground color"
type = "enum"
option = ["-f"]
choices = [{ value = "black", label = "Black" }, { value = "red", label = "Red" }, { value = "green", label = "Green" }, { value = "yellow", label = "Yellow" }, { value = "blue", label = "Blue" }, { value = "magenta", label = "Magenta" }, { value = "cyan", label = "Cyan" }, { value = "white", label = "White" }]
sources = ["man"]
[[commands.field]]
id = "no_color"
label = "Disable color"
type = "boolean"
option = ["-d"]
sources = ["man"]
[[commands.field]]
id = "quiet"
label = "Quiet (no sound)"
type = "boolean"
option = ["-q"]
sources = ["man"]
[[commands.field]]
id = "plain_ascii"
label = "Plain ASCII output"
type = "boolean"
option = ["-p"]
sources = ["man"]
[[commands.field]]
id = "seed"
label = "Random seed"
type = "integer"
option = ["-s"]
sources = ["man"]
[[commands.field]]
id = "undo_slots"
label = "Undo slots"
type = "integer"
option = ["-u"]
sources = ["man"]
[[commands.field]]
id = "expand"
label = "Expand g, x and z"
type = "boolean"
option = ["-x"]
sources = ["man"]
[[commands.field]]
id = "tandy"
label = "Tandy bit"
type = "boolean"
option = ["-t"]
sources = ["man"]
[[commands.field]]
id = "mouse"
label = "Mouse support"
type = "boolean"
option = ["-m"]
sources = ["man"]
[[commands.field]]
id = "restrict_path"
label = "Restrict file access to"
type = "path"
option = ["-R"]
path = { kind = "directory", role = "input" }
sources = ["man"]
[[commands.task]]
id = "play"
label = "Play"
fields = ["story", "blorb", "background", "foreground", "plain_ascii", "quiet"]
required = ["story"]
[[commands.task]]
id = "plain"
label = "Plain terminal (no color, ASCII)"
set = { no_color = [true], plain_ascii = [true] }
lock = ["no_color", "plain_ascii"]
fields = ["story", "no_color", "plain_ascii", "quiet"]
required = ["story"]
[[commands.group]]
id = "basic"
label = "Basic"
fields = ["story", "blorb", "background", "foreground", "no_color", "quiet", "plain_ascii"]
[[commands.group]]
id = "advanced"
label = "Advanced"
fields = ["seed", "undo_slots", "expand", "tandy", "mouse", "restrict_path"]