{
  "id": "exiftool",
  "name": "ExifTool",
  "homepage": "https://exiftool.org",
  "description": "A command-line application and Perl library for reading, writing and editing meta information in a wide variety of files.",
  "executables": [
    "exiftool"
  ],
  "dotfiles": {
    "paths": [
      "~/.ExifTool_config"
    ],
    "secret": [],
    "side_effect": false
  },
  "commands": {
    "format": 1,
    "label": "Read or strip metadata",
    "description": "Read metadata from files (optionally as JSON or a table, recursively) or strip all metadata. Writing individual tags, copying tags, geotagging and renaming are left out.",
    "quality": "ai-draft",
    "parser": {
      "end_of_options": "--",
      "interleave": "permute",
      "long_equals": false,
      "short_attached": false,
      "short_bundles": false
    },
    "source": [
      {
        "id": "man",
        "kind": "manual",
        "url": "https://manpages.debian.org/bookworm/libimage-exiftool-perl/exiftool.1.en.html",
        "revision": "bookworm",
        "evidence": "exiftool [OPTIONS] [-TAG...] [--TAG...] FILE...\n  -TAG or --TAG                    Extract or exclude specified tag\n  -b          (-binary)            Output metadata in binary format\n  -d FMT      (-dateFormat)        Set format for date/time values\n  -G[NUM...]  (-groupNames)        Print group name for each tag\n  -j[[+]=JSONFILE] (-json)         Export/import tags in JSON format\n  -n          (--printConv)        No print conversion\n  -s[NUM]     (-short)             Short output format (-s for tag names)\n  -S          (-veryShort)         Very short output format\n  -T          (-table)             Output in tabular format\n  -a          (-duplicates)        Allow duplicate tags to be extracted\n  -ext[+] EXT (-extension)         Process files with specified extension\n  -m          (-ignoreMinorErrors) Ignore minor errors and warnings\n  -o OUTFILE  (-out)               Set output file or directory name\n  -overwrite_original              Overwrite original by renaming tmp file\n  -P          (-preserve)          Preserve file modification date/time\n  -q          (-quiet)             Quiet processing\n  -r[.]       (-recurse)           Recursively process subdirectories\n  -ver                             Print exiftool version number\n\"exiftool -all= dst.jpg\"\n\"-all= --exif:all\" deletes all but EXIF\n"
      }
    ],
    "field": [
      {
        "id": "files",
        "label": "Files or directories",
        "type": "path",
        "position": 0,
        "multiple": true,
        "min": 1,
        "path": {
          "kind": "any",
          "role": "input",
          "must_exist": true
        },
        "sources": [
          "man"
        ]
      },
      {
        "id": "json",
        "label": "JSON output",
        "type": "boolean",
        "option": [
          "-json"
        ],
        "sources": [
          "man"
        ]
      },
      {
        "id": "short",
        "label": "Short tag names",
        "type": "boolean",
        "option": [
          "-s"
        ],
        "sources": [
          "man"
        ]
      },
      {
        "id": "group_names",
        "label": "Show group names",
        "type": "boolean",
        "option": [
          "-G"
        ],
        "sources": [
          "man"
        ]
      },
      {
        "id": "table",
        "label": "Tabular output",
        "type": "boolean",
        "option": [
          "-T"
        ],
        "sources": [
          "man"
        ]
      },
      {
        "id": "recurse",
        "label": "Recurse into directories",
        "type": "boolean",
        "option": [
          "-r"
        ],
        "sources": [
          "man"
        ]
      },
      {
        "id": "extension",
        "label": "Only this extension",
        "type": "string",
        "option": [
          "-ext"
        ],
        "suggestions": [
          {
            "value": "jpg",
            "label": "JPEG"
          },
          {
            "value": "png",
            "label": "PNG"
          },
          {
            "value": "mp4",
            "label": "MP4"
          }
        ],
        "sources": [
          "man"
        ]
      },
      {
        "id": "no_print_conv",
        "label": "Raw values (no print conversion)",
        "type": "boolean",
        "option": [
          "-n"
        ],
        "sources": [
          "man"
        ]
      },
      {
        "id": "duplicates",
        "label": "Allow duplicate tags",
        "type": "boolean",
        "option": [
          "-a"
        ],
        "sources": [
          "man"
        ]
      },
      {
        "id": "strip_all",
        "label": "Strip all metadata",
        "description": "Deletes every writable tag. exiftool keeps a *_original backup unless overwrite original is also set.",
        "type": "boolean",
        "option": [
          "-all="
        ],
        "effect": "overwrite",
        "sources": [
          "man"
        ]
      },
      {
        "id": "overwrite_original",
        "label": "Overwrite original (no backup)",
        "type": "boolean",
        "option": [
          "-overwrite_original"
        ],
        "effect": "overwrite",
        "sources": [
          "man"
        ]
      },
      {
        "id": "preserve",
        "label": "Preserve file modification time",
        "type": "boolean",
        "option": [
          "-P"
        ],
        "sources": [
          "man"
        ]
      }
    ],
    "task": [
      {
        "id": "read",
        "label": "Read all metadata",
        "fields": [
          "files",
          "json",
          "group_names",
          "recurse",
          "extension"
        ],
        "required": [
          "files"
        ]
      },
      {
        "id": "strip",
        "label": "Strip all metadata",
        "fields": [
          "files",
          "strip_all",
          "overwrite_original",
          "preserve",
          "recurse",
          "extension"
        ],
        "required": [
          "files"
        ],
        "set": {
          "strip_all": [
            true
          ]
        },
        "lock": [
          "strip_all"
        ]
      }
    ],
    "group": [
      {
        "id": "basic",
        "label": "Basic",
        "fields": [
          "files",
          "json",
          "short",
          "group_names",
          "table",
          "recurse",
          "extension"
        ]
      },
      {
        "id": "advanced",
        "label": "Advanced",
        "fields": [
          "no_print_conv",
          "duplicates",
          "strip_all",
          "overwrite_original",
          "preserve"
        ]
      }
    ]
  }
}
