{
  "id": "luarocks",
  "name": "LuaRocks",
  "homepage": "https://luarocks.org/",
  "description": "The package manager for the Lua programming language.",
  "executables": [
    "luarocks"
  ],
  "dotfiles": {
    "paths": [
      "~/.config/luarocks/config-*.lua",
      "~/.luarocks/config-*.lua"
    ],
    "secret": [],
    "side_effect": false
  },
  "commands": {
    "format": 1,
    "label": "LuaRocks",
    "description": "Install or search rocks. Other luarocks commands are not covered.",
    "quality": "ai-draft",
    "parser": {
      "end_of_options": "--",
      "interleave": "permute",
      "long_equals": true,
      "short_attached": false,
      "short_bundles": false
    },
    "subcommand": [
      {
        "path": [
          "install"
        ],
        "label": "Install a rock",
        "description": "Install a rock by name (optionally a version), or from a rockspec URL or file.",
        "source": [
          {
            "id": "doc",
            "kind": "manual",
            "url": "https://github.com/luarocks/luarocks/blob/main/docs/luarocks_install.md",
            "revision": "main 2026-10-27",
            "evidence": "`luarocks install [--keep] [--only-deps] {<rock> | <name> [<version>]}`\nUnless `--keep` is passed, other versions of the rock are removed after installing the new one.\nIf `--only-deps` is passed, the rock itself is not installed, but its dependencies are.\nluarocks install busted --deps-mode=none\n"
          }
        ],
        "field": [
          {
            "id": "rock",
            "label": "Rock name, rockspec URL or file",
            "type": "string",
            "position": 0,
            "sources": [
              "doc"
            ]
          },
          {
            "id": "version",
            "label": "Version",
            "type": "string",
            "position": 1,
            "sources": [
              "doc"
            ]
          },
          {
            "id": "keep",
            "label": "Keep other versions",
            "type": "boolean",
            "option": [
              "--keep"
            ],
            "sources": [
              "doc"
            ]
          },
          {
            "id": "only_deps",
            "label": "Install only dependencies",
            "type": "boolean",
            "option": [
              "--only-deps"
            ],
            "sources": [
              "doc"
            ]
          }
        ],
        "task": [
          {
            "id": "install",
            "label": "Install a rock",
            "fields": [
              "rock",
              "version",
              "keep"
            ],
            "required": [
              "rock"
            ]
          },
          {
            "id": "deps",
            "label": "Install dependencies only",
            "fields": [
              "rock",
              "only_deps"
            ],
            "required": [
              "rock",
              "only_deps"
            ],
            "set": {
              "only_deps": [
                true
              ]
            }
          }
        ],
        "group": [
          {
            "id": "basic",
            "label": "Basic",
            "fields": [
              "rock",
              "version",
              "keep",
              "only_deps"
            ]
          }
        ]
      },
      {
        "path": [
          "search"
        ],
        "label": "Search rocks",
        "description": "Query the LuaRocks servers for a rock name.",
        "source": [
          {
            "id": "doc",
            "kind": "manual",
            "url": "https://github.com/luarocks/luarocks/blob/main/docs/luarocks_search.md",
            "revision": "main 2026-10-27",
            "evidence": "`luarocks search [--porcelain] [--source] [--binary] { <query> [<version>] | --all }`\nIf `--porcelain` is passed, machine-friendly output is produced.\nIf `--source` is passed, only rockspecs and source rocks are shown.\nIf `--binary` is passed, only binary and pure-Lua rocks are shown.\nTo list files for all rocks pass `--all`.\n"
          }
        ],
        "field": [
          {
            "id": "query",
            "label": "Name substring",
            "type": "string",
            "position": 0,
            "sources": [
              "doc"
            ]
          },
          {
            "id": "all",
            "label": "List all rocks",
            "type": "boolean",
            "option": [
              "--all"
            ],
            "sources": [
              "doc"
            ]
          },
          {
            "id": "source",
            "label": "Source rocks only",
            "type": "boolean",
            "option": [
              "--source"
            ],
            "sources": [
              "doc"
            ]
          },
          {
            "id": "binary",
            "label": "Binary rocks only",
            "type": "boolean",
            "option": [
              "--binary"
            ],
            "sources": [
              "doc"
            ]
          },
          {
            "id": "porcelain",
            "label": "Machine-friendly output",
            "type": "boolean",
            "option": [
              "--porcelain"
            ],
            "sources": [
              "doc"
            ]
          }
        ],
        "task": [
          {
            "id": "search",
            "label": "Search by name",
            "fields": [
              "query",
              "source",
              "binary"
            ],
            "required": [
              "query"
            ]
          }
        ],
        "group": [
          {
            "id": "basic",
            "label": "Basic",
            "fields": [
              "query",
              "all",
              "source",
              "binary",
              "porcelain"
            ]
          }
        ]
      }
    ]
  }
}
