{
  "id": "stow",
  "name": "GNU Stow",
  "homepage": "https://www.gnu.org/software/stow/",
  "description": "A symlink farm manager which takes distinct packages of software located in separate directories and makes them appear installed in one place.",
  "executables": [
    "stow"
  ],
  "dotfiles": {
    "paths": [
      "~/.stowrc",
      "~/.stow-global-ignore"
    ],
    "exclude": [],
    "secret": [],
    "side_effect": false
  },
  "commands": {
    "format": 1,
    "label": "Stow packages",
    "description": "Symlink, unstow or restow packages from a stow directory. Version and help flags are left out.",
    "quality": "ai-draft",
    "base": "fig:stow",
    "parser": {
      "end_of_options": "--",
      "interleave": "permute",
      "long_equals": true,
      "short_attached": true,
      "short_bundles": true
    },
    "source": [
      {
        "id": "fig",
        "kind": "completion",
        "url": "https://github.com/withfig/autocomplete/blob/master/src/stow.ts",
        "license": "MIT"
      }
    ],
    "field": [
      {
        "id": "packages",
        "label": "Packages",
        "description": "Package directories inside the stow directory.",
        "type": "string",
        "position": 0,
        "multiple": true,
        "sources": [
          "fig"
        ]
      },
      {
        "id": "dir",
        "label": "Stow directory",
        "description": "Defaults to the current directory.",
        "type": "path",
        "option": [
          "--dir",
          "-d"
        ],
        "path": {
          "kind": "directory",
          "role": "input",
          "must_exist": true
        },
        "sources": [
          "fig"
        ]
      },
      {
        "id": "target",
        "label": "Target directory",
        "description": "Defaults to the parent of the stow directory.",
        "type": "path",
        "option": [
          "--target",
          "-t"
        ],
        "path": {
          "kind": "directory",
          "role": "output",
          "must_exist": true
        },
        "sources": [
          "fig"
        ]
      },
      {
        "id": "simulate",
        "label": "Dry run",
        "description": "Show what would happen without changing the filesystem.",
        "type": "boolean",
        "option": [
          "--no",
          "-n"
        ],
        "sources": [
          "fig"
        ]
      },
      {
        "id": "delete",
        "label": "Unstow",
        "description": "Remove the packages from the target directory.",
        "type": "boolean",
        "option": [
          "--delete",
          "-D"
        ],
        "sources": [
          "fig"
        ]
      },
      {
        "id": "restow",
        "label": "Restow",
        "description": "Unstow then stow again, pruning obsolete links.",
        "type": "boolean",
        "option": [
          "--restow",
          "-R"
        ],
        "sources": [
          "fig"
        ]
      },
      {
        "id": "dotfiles",
        "label": "Dotfiles",
        "description": "Rename dot-prefixed entries in packages to hidden files.",
        "type": "boolean",
        "option": [
          "--dotfiles"
        ],
        "sources": [
          "fig"
        ]
      },
      {
        "id": "no_folding",
        "label": "No folding",
        "type": "boolean",
        "option": [
          "--no-folding"
        ],
        "sources": [
          "fig"
        ]
      },
      {
        "id": "adopt",
        "label": "Adopt existing files",
        "description": "Moves existing target files into the stow directory.",
        "type": "boolean",
        "option": [
          "--adopt"
        ],
        "effect": "overwrite",
        "sources": [
          "fig"
        ]
      },
      {
        "id": "ignore",
        "label": "Ignore pattern",
        "description": "Perl regex of file name endings to ignore.",
        "type": "string",
        "option": [
          "--ignore"
        ],
        "multiple": true,
        "sources": [
          "fig"
        ]
      },
      {
        "id": "verbose",
        "label": "Verbosity",
        "description": "0 to 5.",
        "type": "integer",
        "option": [
          "--verbose"
        ],
        "value_style": "equals",
        "sources": [
          "fig"
        ]
      }
    ],
    "task": [
      {
        "id": "stow",
        "label": "Stow packages",
        "fields": [
          "packages",
          "dir",
          "target",
          "simulate",
          "dotfiles"
        ],
        "required": [
          "packages"
        ]
      },
      {
        "id": "unstow",
        "label": "Unstow packages",
        "set": {
          "delete": [
            true
          ]
        },
        "lock": [
          "delete"
        ],
        "fields": [
          "packages",
          "dir",
          "target",
          "simulate",
          "delete"
        ],
        "required": [
          "packages"
        ]
      },
      {
        "id": "restow",
        "label": "Restow packages",
        "set": {
          "restow": [
            true
          ]
        },
        "lock": [
          "restow"
        ],
        "fields": [
          "packages",
          "dir",
          "target",
          "simulate",
          "restow",
          "dotfiles"
        ],
        "required": [
          "packages"
        ]
      }
    ],
    "group": [
      {
        "id": "basic",
        "label": "Basic",
        "fields": [
          "packages",
          "dir",
          "target",
          "simulate",
          "delete",
          "restow",
          "dotfiles"
        ]
      },
      {
        "id": "advanced",
        "label": "Advanced",
        "fields": [
          "no_folding",
          "adopt",
          "ignore",
          "verbose"
        ]
      }
    ]
  }
}
