{
  "id": "safe-rm",
  "name": "safe-rm",
  "homepage": "https://github.com/kaelzhang/shell-safe-rm",
  "description": "Safe-rm: A drop-in and much safer replacement of the unix rm command with nearly full functionalities and options of the rm command!",
  "executables": [
    "safe-rm"
  ],
  "dotfiles": {
    "paths": [
      "~/.safe-rm/config",
      "~/.safe-rm/.gitignore"
    ],
    "exclude": [],
    "secret": []
  },
  "commands": {
    "format": 1,
    "label": "Move to Trash",
    "description": "Move files or directories to the system Trash instead of deleting them, with rm-compatible switches.",
    "quality": "ai-draft",
    "parser": {
      "end_of_options": "--",
      "interleave": "permute",
      "long_equals": true,
      "short_attached": false,
      "short_bundles": true
    },
    "source": [
      {
        "id": "readme",
        "kind": "manual",
        "url": "https://github.com/kaelzhang/shell-safe-rm",
        "revision": "2026-10-27",
        "evidence": "| `-i`, `--interactive` | **Interactive** | Prompts you to confirm before removing each file |\n| `-f`, `--force` | **Force** | Removes files without prompting for confirmation, ignoring nonexistent files and overriding file protections |\n| `-r`, `-R`, `--recursive`, `--Recursive` | **Recursive** | Removes directories and their contents recursively. Required for deleting directories |\n| `-v`, `--verbose` | **Verbose** | Displays detailed information about each file or directory being removed |\n| `-d`, '--directory' | **Remove Empty Directories** | `safe-rm` can check and only remove empty directories specifically with this flag |\n| `--` | **End of Options** | Used to indicate the end of options. Useful if a filename starts with a `-` |\n"
      }
    ],
    "field": [
      {
        "id": "files",
        "label": "Files or directories",
        "type": "path",
        "position": 0,
        "multiple": true,
        "min": 1,
        "path": {
          "kind": "any",
          "role": "input",
          "must_exist": true
        },
        "effect": "delete",
        "sources": [
          "readme"
        ]
      },
      {
        "id": "recursive",
        "label": "Recursive",
        "description": "Required for directories with contents.",
        "type": "boolean",
        "option": [
          "--recursive",
          "-r"
        ],
        "sources": [
          "readme"
        ]
      },
      {
        "id": "directory",
        "label": "Empty directories",
        "type": "boolean",
        "option": [
          "-d"
        ],
        "sources": [
          "readme"
        ]
      },
      {
        "id": "interactive",
        "label": "Confirm each",
        "type": "boolean",
        "option": [
          "--interactive",
          "-i"
        ],
        "sources": [
          "readme"
        ]
      },
      {
        "id": "force",
        "label": "Force",
        "description": "Ignore nonexistent files and never prompt.",
        "type": "boolean",
        "option": [
          "--force",
          "-f"
        ],
        "sources": [
          "readme"
        ]
      },
      {
        "id": "verbose",
        "label": "Verbose",
        "type": "boolean",
        "option": [
          "--verbose",
          "-v"
        ],
        "sources": [
          "readme"
        ]
      }
    ],
    "task": [
      {
        "id": "trash-files",
        "label": "Trash files",
        "fields": [
          "files",
          "interactive",
          "verbose"
        ],
        "required": [
          "files"
        ]
      },
      {
        "id": "trash-dir",
        "label": "Trash a directory",
        "set": {
          "recursive": [
            true
          ]
        },
        "lock": [
          "recursive"
        ],
        "fields": [
          "files",
          "recursive",
          "interactive",
          "verbose"
        ],
        "required": [
          "files"
        ]
      }
    ],
    "group": [
      {
        "id": "basic",
        "label": "Basic",
        "fields": [
          "files",
          "recursive",
          "directory",
          "interactive"
        ]
      },
      {
        "id": "advanced",
        "label": "Advanced",
        "fields": [
          "force",
          "verbose"
        ]
      }
    ]
  }
}
