{
  "name": "gpg",
  "description": "Encryption and signing tool",
  "options": [
    {
      "names": [
        "--homedir"
      ],
      "description": "Set the name of the home directory",
      "args": [
        {
          "name": "directory",
          "template": "folders"
        }
      ]
    },
    {
      "names": [
        "--options"
      ],
      "description": "Read options from file",
      "exclusiveOn": [
        "--no-options"
      ],
      "args": [
        {
          "name": "file",
          "template": "filepaths"
        }
      ]
    },
    {
      "names": [
        "-a",
        "--armour"
      ],
      "description": "Create ASCII armored output"
    },
    {
      "names": [
        "-o",
        "--output"
      ],
      "description": "Write output to file",
      "args": [
        {
          "name": "file",
          "template": "filepaths"
        }
      ]
    },
    {
      "names": [
        "-u",
        "--local-user"
      ],
      "description": "Use name as the user ID to sign",
      "args": [
        {
          "name": "name"
        }
      ]
    },
    {
      "names": [
        "--default-key"
      ],
      "description": "Use name as default user ID for signatures",
      "args": [
        {
          "name": "name"
        }
      ]
    },
    {
      "names": [
        "-r",
        "--recipient"
      ],
      "description": "Encrypt for user id name",
      "args": [
        {
          "name": "name"
        }
      ]
    },
    {
      "names": [
        "--default-recipient"
      ],
      "description": "Use name as default recipient",
      "exclusiveOn": [
        "--no-default-recipient",
        "--default-recipient-self"
      ],
      "args": [
        {
          "name": "name"
        }
      ]
    },
    {
      "names": [
        "--default-recipient-self"
      ],
      "description": "Use the default key as default recipient",
      "exclusiveOn": [
        "--default-recipient",
        "--no-default-recipient"
      ]
    },
    {
      "names": [
        "--no-default-recipient"
      ],
      "description": "Reset --default-recipient and --default-recipient-self",
      "exclusiveOn": [
        "--default-recipient",
        "--default-recipient-self"
      ]
    },
    {
      "names": [
        "--encrypt-to"
      ],
      "description": "Same as --recipient but this one is intended for in the options file",
      "exclusiveOn": [
        "--no-encrypt-to"
      ],
      "args": [
        {
          "name": "name"
        }
      ]
    },
    {
      "names": [
        "--no-encrypt-to"
      ],
      "description": "Disable the use of all --encrypt-to keys",
      "exclusiveOn": [
        "--encrypt-to"
      ]
    },
    {
      "names": [
        "-v",
        "--verbose"
      ],
      "description": "Give more information during processing",
      "exclusiveOn": [
        "--no-verbose"
      ]
    },
    {
      "names": [
        "-q",
        "--quiet"
      ],
      "description": "Try to be as quiet as possible"
    },
    {
      "names": [
        "-Z"
      ],
      "description": "Set compression level to n",
      "args": [
        {
          "name": "n",
          "suggestions": [
            "0",
            "1",
            "2",
            "3",
            "4",
            "5",
            "6"
          ]
        }
      ]
    },
    {
      "names": [
        "-t",
        "--textmode"
      ],
      "description": "Use canonical text mode"
    },
    {
      "names": [
        "-n",
        "--dry-run"
      ],
      "description": "Don't make any changes"
    },
    {
      "names": [
        "-i",
        "--interactive"
      ],
      "description": "Prompt before overwriting any files"
    },
    {
      "names": [
        "--batch"
      ],
      "description": "Use batch mode",
      "exclusiveOn": [
        "--no-batch"
      ]
    },
    {
      "names": [
        "--no-tty"
      ],
      "description": "Make sure that the TTY is never used for any output"
    },
    {
      "names": [
        "--no-batch"
      ],
      "description": "Disable batch mode",
      "exclusiveOn": [
        "--batch"
      ]
    },
    {
      "names": [
        "--yes"
      ],
      "description": "Assume \"yes\" on most questions",
      "exclusiveOn": [
        "--no"
      ]
    },
    {
      "names": [
        "--no"
      ],
      "description": "Assume \"no\" on most questions",
      "exclusiveOn": [
        "--yes"
      ]
    },
    {
      "names": [
        "--always-trust"
      ],
      "description": "Skip key validation"
    },
    {
      "names": [
        "--keyserver"
      ],
      "description": "Use name to lookup keys which are not yet in your keyring",
      "args": [
        {
          "name": "name"
        }
      ]
    },
    {
      "names": [
        "--no-auto-key-retrieve"
      ],
      "description": "Disables the automatic retrieving of keys"
    },
    {
      "names": [
        "--honor-http-proxy"
      ],
      "description": "Try to access the keyserver over the proxy"
    },
    {
      "names": [
        "--keyring"
      ],
      "description": "Add file to the list of keyrings",
      "args": [
        {
          "name": "file",
          "template": "filepaths"
        }
      ]
    },
    {
      "names": [
        "--secret-keyring"
      ],
      "description": "Same as --keyring but for the secret keyrings",
      "args": [
        {
          "name": "file",
          "template": "filepaths"
        }
      ]
    },
    {
      "names": [
        "--charset"
      ],
      "description": "Set the name of the native character set",
      "args": [
        {
          "name": "name",
          "suggestions": [
            "iso-8859-1",
            "iso-8859-2",
            "koi8-r"
          ]
        }
      ]
    },
    {
      "names": [
        "--utf8-strings"
      ],
      "description": "Assume that the arguments are already given as UTF8",
      "exclusiveOn": [
        "--no-utf8-strings"
      ]
    },
    {
      "names": [
        "--no-utf8-strings"
      ],
      "exclusiveOn": [
        "--utf8-strings"
      ]
    },
    {
      "names": [
        "--no-options"
      ],
      "description": "Shortcut for \"--options /dev/null\"",
      "exclusiveOn": [
        "--options"
      ]
    },
    {
      "names": [
        "--load-extension"
      ],
      "description": "Load an extension module",
      "args": [
        {
          "name": "name",
          "description": "If name does not contain a slash it is searched in \"/usr/local/lib/gnupg\""
        }
      ]
    },
    {
      "names": [
        "--debug"
      ],
      "description": "Set debugging flags",
      "args": [
        {
          "name": "flags"
        }
      ]
    },
    {
      "names": [
        "--debug-all"
      ],
      "description": "Set all useful debugging flags"
    },
    {
      "names": [
        "--status-fd"
      ],
      "description": "Write special status strings to the file descriptor n",
      "args": [
        {
          "name": "n"
        }
      ]
    },
    {
      "names": [
        "--logger-fd"
      ],
      "description": "Write log output to file descriptor n and not to stderr",
      "args": [
        {
          "name": "n"
        }
      ]
    },
    {
      "names": [
        "--no-comment"
      ],
      "description": "Do not write comment packets",
      "exclusiveOn": [
        "--comment",
        "--default-comment"
      ]
    },
    {
      "names": [
        "--comment"
      ],
      "description": "Use string as comment string in clear text signatures",
      "exclusiveOn": [
        "--no-comment",
        "--default-comment"
      ],
      "args": [
        {
          "name": "string"
        }
      ]
    },
    {
      "names": [
        "--default-comment"
      ],
      "description": "Force to write the standard comment string",
      "exclusiveOn": [
        "--no-comment",
        "--comment"
      ]
    },
    {
      "names": [
        "--no-version"
      ],
      "description": "Omit the version string in clear text signatures"
    },
    {
      "names": [
        "--emit-version"
      ],
      "description": "Force to write the version string"
    },
    {
      "names": [
        "-N",
        "--notation-data"
      ],
      "description": "Put the name value pair into the signature as notation data",
      "args": [
        {
          "name": "name=value"
        }
      ]
    },
    {
      "names": [
        "--set-policy-url"
      ],
      "description": "Use string as Policy URL for signatures (rfc2440:5.2.3.19)",
      "args": [
        {
          "name": "string"
        }
      ]
    },
    {
      "names": [
        "--set-filename"
      ],
      "description": "Use string as the name of file which is stored in messages",
      "args": [
        {
          "name": "string"
        }
      ]
    },
    {
      "names": [
        "--use-embedded-filename"
      ],
      "description": "Try to create a file with a name as embedded in the data"
    },
    {
      "names": [
        "--completes-needed"
      ],
      "description": "Number of completely trusted users to introduce a new key signer",
      "args": [
        {
          "name": "n"
        }
      ]
    },
    {
      "names": [
        "--marginals-needed"
      ],
      "description": "Number of marginally trusted users to introduce a new key signer",
      "args": [
        {
          "name": "n"
        }
      ]
    },
    {
      "names": [
        "--max-cert-depth"
      ],
      "description": "Maximum depth of a certification chain",
      "args": [
        {
          "name": "n"
        }
      ]
    },
    {
      "names": [
        "--cipher-algo"
      ],
      "description": "Use name as cipher algorithm",
      "args": [
        {
          "name": "name",
          "generators": [
            {
              "script": [
                "gpg",
                "--version"
              ]
            }
          ]
        }
      ]
    },
    {
      "names": [
        "--digest-algo"
      ],
      "description": "Use name as message digest algorithm",
      "args": [
        {
          "name": "name",
          "generators": [
            {
              "script": [
                "gpg",
                "--version"
              ]
            }
          ]
        }
      ]
    },
    {
      "names": [
        "--s2k-cipher-algo"
      ],
      "description": "Use name as the cipher algorithm used to protect secret keys",
      "args": [
        {
          "name": "name",
          "generators": [
            {
              "script": [
                "gpg",
                "--version"
              ]
            }
          ]
        }
      ]
    },
    {
      "names": [
        "--s2k-digest-algo"
      ],
      "description": "Use name as the digest algorithm used to mangle the passphrases",
      "args": [
        {
          "name": "name",
          "generators": [
            {
              "script": [
                "gpg",
                "--version"
              ]
            }
          ]
        }
      ]
    },
    {
      "names": [
        "--s2k-mode"
      ],
      "description": "Selects how passphrases are mangled",
      "args": [
        {
          "name": "n",
          "suggestions": [
            "0",
            "1",
            "3"
          ]
        }
      ]
    },
    {
      "names": [
        "--compress-algo"
      ],
      "description": "Use compress algorithm n",
      "args": [
        {
          "name": "n",
          "suggestions": [
            "1",
            "2"
          ]
        }
      ]
    },
    {
      "names": [
        "--disable-cipher-algo"
      ],
      "description": "Never allow the use of name as cipher algorithm",
      "args": [
        {
          "name": "name",
          "generators": [
            {
              "script": [
                "gpg",
                "--version"
              ]
            }
          ]
        }
      ]
    },
    {
      "names": [
        "--disable-pubkey-algo"
      ],
      "description": "Never allow the use of name as public key algorithm",
      "args": [
        {
          "name": "name"
        }
      ]
    },
    {
      "names": [
        "--throw-keyid"
      ],
      "description": "Do not put the keyid into encrypted packets"
    },
    {
      "names": [
        "--not-dash-escaped"
      ],
      "description": "Makes signatures usable for patch files"
    },
    {
      "names": [
        "--escape-from-lines"
      ],
      "description": "Handle \"<From\" in emails"
    },
    {
      "names": [
        "--passphrase-fd"
      ],
      "description": "Read the passphrase from file descriptor n",
      "args": [
        {
          "name": "n"
        }
      ]
    },
    {
      "names": [
        "--command-fd"
      ],
      "description": "This is a replacement for the depreciated shared-memory IPC mode",
      "args": [
        {
          "name": "n"
        }
      ]
    },
    {
      "names": [
        "--rfc1991"
      ],
      "description": "Try to be more RFC1991 (PGP 2.x) compliant"
    },
    {
      "names": [
        "--openpgp"
      ],
      "description": "Reset all packet, cipher and digest options to OpenPGP"
    },
    {
      "names": [
        "--force-v3-sigs"
      ],
      "description": "Forces v3 signatures for signatures on data"
    },
    {
      "names": [
        "--force-mdc"
      ],
      "description": "Force encryption with appended manipulation code"
    },
    {
      "names": [
        "--allow-non-selfsigned-uid"
      ],
      "description": "Allow non self-signed user IDs"
    },
    {
      "names": [
        "--allow-freeform-uid"
      ],
      "description": "Disable all checks on the form of the user ID"
    },
    {
      "names": [
        "--ignore-time-conflict"
      ],
      "description": "Makes time checks just a warning"
    },
    {
      "names": [
        "--lock-once"
      ],
      "description": "Do not release the lock until the process terminates",
      "exclusiveOn": [
        "--lock-multiple",
        "--lock-never"
      ]
    },
    {
      "names": [
        "--lock-multiple"
      ],
      "description": "Release the locks every time one is no longer needed",
      "exclusiveOn": [
        "--lock-once",
        "--lock-never"
      ]
    },
    {
      "names": [
        "--lock-never"
      ],
      "description": "Disable locking entirely",
      "exclusiveOn": [
        "--lock-once",
        "--lock-multiple"
      ]
    },
    {
      "names": [
        "--no-random-seed-file"
      ],
      "description": "Disable random pool cache"
    },
    {
      "names": [
        "--no-verbose"
      ],
      "description": "Reset verbose level to 0",
      "exclusiveOn": [
        "--verbose"
      ]
    },
    {
      "names": [
        "--no-greeting"
      ],
      "description": "Suppress the initial copyright message"
    },
    {
      "names": [
        "--no-secmem-warning"
      ],
      "description": "Suppress the \"using insecure memory\" warning"
    },
    {
      "names": [
        "--no-armor"
      ],
      "description": "Assume the input data is not in ASCII armored format"
    },
    {
      "names": [
        "--no-default-keyring"
      ],
      "description": "Do not add the keyrings to the list of keyrings"
    },
    {
      "names": [
        "--skip-verify"
      ],
      "description": "Skip the signature verification step"
    },
    {
      "names": [
        "--with-colons"
      ],
      "description": "Print key listings delimited by colons"
    },
    {
      "names": [
        "--with-key-data"
      ],
      "description": "--with-colons with the public key data"
    },
    {
      "names": [
        "--with-fingerprint"
      ],
      "description": "--fingerprint with a different format"
    },
    {
      "names": [
        "--fast-list-mode"
      ],
      "description": "Changes the list commands to work faster"
    },
    {
      "names": [
        "--list-only"
      ],
      "description": "Skip the decryption pass"
    },
    {
      "names": [
        "--no-literal"
      ],
      "description": "This is not for normal use"
    },
    {
      "names": [
        "--set-filesize"
      ],
      "description": "This is not for normal use"
    },
    {
      "names": [
        "--emulate-md-encode-bug"
      ],
      "description": "Enables workaround to check faulty signatures"
    },
    {
      "names": [
        "--show-session-key"
      ],
      "description": "Display the session key used for one message"
    },
    {
      "names": [
        "--override-session-key"
      ],
      "description": "Don't use the public key but the session key string",
      "args": [
        {
          "name": "string"
        }
      ]
    },
    {
      "names": [
        "--merge-only"
      ],
      "description": "Don't insert new keys into the keyrings"
    },
    {
      "names": [
        "--try-all-secrets"
      ],
      "description": "Try all secret keys in turn to find the right one"
    }
  ],
  "subcommands": [
    {
      "name": "-s",
      "aliases": [
        "--sign"
      ],
      "description": "Make a signature"
    },
    {
      "name": "--clearsign",
      "description": "Make a clear text signature"
    },
    {
      "name": "-b",
      "aliases": [
        "--detach-sign"
      ],
      "description": "Make a detached signature"
    },
    {
      "name": "-e",
      "aliases": [
        "--encrypt"
      ],
      "description": "Encrypt data"
    },
    {
      "name": "-c",
      "aliases": [
        "--symmetric"
      ],
      "description": "Encrypt with symmetric cipher only"
    },
    {
      "name": "--store",
      "description": "Store only (make a simple RFC1991 packet)"
    },
    {
      "name": "--decrypt",
      "description": "Decrypt file (or stdin if no file is specified) and write it to stdout",
      "args": [
        {
          "name": "file",
          "isOptional": true,
          "template": "filepaths"
        }
      ],
      "options": [
        {
          "names": [
            "--output",
            "-o"
          ],
          "description": "Defaults to the terminal.",
          "args": {
            "name": "output",
            "description": "Defaults to the terminal.",
            "isOptional": false,
            "template": "filepaths"
          },
          "isDangerous": true
        }
      ]
    },
    {
      "name": "--verify",
      "description": "Assume that sigfile is a signature and verify it without generating any output",
      "args": [
        {
          "name": "sigfile",
          "isOptional": true,
          "template": "filepaths"
        },
        {
          "name": "signed-files",
          "isOptional": true,
          "isVariadic": true,
          "template": "filepaths"
        }
      ]
    },
    {
      "name": "--verify-files",
      "description": "Special version of --verify which does not work with detached signatures",
      "args": [
        {
          "name": "files",
          "isOptional": true,
          "isVariadic": true,
          "template": "filepaths"
        }
      ]
    },
    {
      "name": "--list-keys",
      "aliases": [
        "--list-public-keys"
      ],
      "description": "List all keys from public keyrings, or just the ones given on the command line",
      "args": [
        {
          "name": "names",
          "isOptional": true,
          "isVariadic": true
        }
      ],
      "options": [
        {
          "names": [
            "--with-colons"
          ],
          "description": "Machine-readable"
        },
        {
          "names": [
            "--with-fingerprint"
          ],
          "description": "Show fingerprints"
        },
        {
          "names": [
            "--homedir"
          ],
          "description": "GnuPG home",
          "args": {
            "name": "homedir",
            "isOptional": false,
            "template": "folders"
          }
        }
      ]
    },
    {
      "name": "--list-secret-keys",
      "description": "List all keys from secret keyrings, or just the ones given on the command line",
      "args": [
        {
          "name": "names",
          "isOptional": true,
          "isVariadic": true
        }
      ]
    },
    {
      "name": "--list-sigs",
      "description": "Same as --list-keys, but the signatures are listed too",
      "args": [
        {
          "name": "names",
          "isOptional": true,
          "isVariadic": true
        }
      ]
    },
    {
      "name": "--check-sigs",
      "description": "Same as --list-sigs, but the signatures are verified",
      "args": [
        {
          "name": "names",
          "isOptional": true,
          "isVariadic": true
        }
      ]
    },
    {
      "name": "--fingerprint",
      "description": "List all keys with their fingerprints",
      "args": [
        {
          "name": "names",
          "isOptional": true,
          "isVariadic": true
        }
      ]
    },
    {
      "name": "--list-packets",
      "description": "List only the sequence of packets"
    },
    {
      "name": "--gen-key",
      "description": "Generate a new key pair"
    },
    {
      "name": "--edit-key",
      "description": "Present a menu which enables you to do all key related tasks",
      "args": [
        {
          "name": "name"
        }
      ]
    },
    {
      "name": "--sign-key",
      "description": "Sign a public key with you secret key",
      "args": [
        {
          "name": "name"
        }
      ]
    },
    {
      "name": "--lsign-key",
      "description": "Sign a public key with you secret key but mark it as non-exportable",
      "args": [
        {
          "name": "name"
        }
      ]
    },
    {
      "name": "--trusted-key",
      "description": "Assume that the specified key is as trustworthy as one of your own secret keys",
      "args": [
        {
          "name": "long key ID"
        }
      ]
    },
    {
      "name": "--delete-key",
      "description": "Remove key from the public keyring",
      "args": [
        {
          "name": "name"
        }
      ]
    },
    {
      "name": "--delete-secret-key",
      "description": "Remove key from the secret and public keyring",
      "args": [
        {
          "name": "name"
        }
      ]
    },
    {
      "name": "--gen-revoke",
      "description": "Generate a revocation certificate for the complete key"
    },
    {
      "name": "--export",
      "description": "Either export all keys from all keyrings or those of the given names",
      "args": [
        {
          "name": "names",
          "isOptional": true,
          "isVariadic": true
        }
      ],
      "options": [
        {
          "names": [
            "--armour",
            "-a"
          ],
          "description": "ASCII armour"
        },
        {
          "names": [
            "--output",
            "-o"
          ],
          "description": "Output file",
          "args": {
            "name": "output",
            "isOptional": false,
            "template": "filepaths"
          },
          "isDangerous": true
        }
      ]
    },
    {
      "name": "--send-keys",
      "description": "Same as --export but sends the keys to a keyserver",
      "args": [
        {
          "name": "names",
          "isOptional": true,
          "isVariadic": true
        }
      ]
    },
    {
      "name": "--export-all",
      "description": "Same as --export, but also exports keys which are not compatible to OpenPGP",
      "args": [
        {
          "name": "names",
          "isOptional": true,
          "isVariadic": true
        }
      ]
    },
    {
      "name": "--export-secret-keys",
      "description": "Same as --export, but exports the secret keys",
      "args": [
        {
          "name": "names",
          "isOptional": true,
          "isVariadic": true
        }
      ]
    },
    {
      "name": "--export-secret-subkeys",
      "description": "Same as --export, but exports the secret subkeys",
      "args": [
        {
          "name": "names",
          "isOptional": true,
          "isVariadic": true
        }
      ]
    },
    {
      "name": "--import",
      "description": "Import/merge keys. This adds the given keys to the keyring",
      "args": [
        {
          "name": "files",
          "isOptional": true,
          "isVariadic": true,
          "template": "filepaths"
        }
      ],
      "options": [
        {
          "names": [
            "--merge-only"
          ],
          "description": "Do not add new keys to the keyrings."
        }
      ]
    },
    {
      "name": "--fast-import",
      "description": "--import but does not build the trustdb",
      "args": [
        {
          "name": "files",
          "isOptional": true,
          "isVariadic": true,
          "template": "filepaths"
        }
      ]
    },
    {
      "name": "--recv-keys",
      "description": "Import the keys with the given key IDs from a HKP keyserver",
      "args": [
        {
          "name": "key IDs",
          "isVariadic": true
        }
      ],
      "options": [
        {
          "names": [
            "--keyserver"
          ],
          "description": "Keyserver",
          "args": {
            "name": "keyserver",
            "isOptional": false
          }
        }
      ]
    },
    {
      "name": "--export-ownertrust",
      "description": "List the ownertrust values in ASCII format"
    },
    {
      "name": "--import-ownertrust",
      "description": "Update the trustdb with the ownertrust values stored in files",
      "args": [
        {
          "name": "files",
          "isOptional": true,
          "isVariadic": true,
          "template": "filepaths"
        }
      ]
    },
    {
      "name": "--print-md",
      "description": "Print message digest of algorithm ALGO for all given files of stdin",
      "args": [
        {
          "name": "algo",
          "generators": [
            {
              "script": [
                "gpg",
                "--version"
              ]
            }
          ]
        },
        {
          "name": "files",
          "isOptional": true,
          "isVariadic": true,
          "template": "filepaths"
        }
      ]
    },
    {
      "name": "--gen-random",
      "description": "Emit COUNT random bytes of the given quality level",
      "args": [
        {
          "name": "0|1|2",
          "suggestions": [
            "0",
            "1",
            "2"
          ]
        },
        {
          "name": "files",
          "isOptional": true,
          "isVariadic": true,
          "template": "filepaths"
        }
      ]
    },
    {
      "name": "--gen-prime",
      "description": "Generate prime numbers",
      "args": [
        {
          "name": "mode"
        },
        {
          "name": "bits"
        },
        {
          "name": "qbits",
          "isOptional": true,
          "isVariadic": true
        }
      ]
    },
    {
      "name": "--version",
      "description": "Print version information"
    },
    {
      "name": "--warranty",
      "description": "Print warranty information"
    },
    {
      "name": "-h",
      "aliases": [
        "--help"
      ],
      "description": "Print usage information"
    }
  ]
}
