{
  "id": "khard",
  "name": "khard",
  "homepage": "https://khard.readthedocs.io/",
  "description": "A console carddav client for address book management.",
  "executables": [
    "khard"
  ],
  "dotfiles": {
    "paths": [
      "[configHome]/khard/khard.conf"
    ],
    "exclude": [],
    "secret": [],
    "side_effect": false
  },
  "commands": {
    "format": 1,
    "label": "List contacts",
    "description": "List contacts from your address books, optionally filtered by search terms and sorted. Showing, creating, editing and the other subcommands are left out.",
    "quality": "ai-draft",
    "parser": {
      "end_of_options": "--",
      "interleave": "permute",
      "long_equals": true,
      "short_attached": false,
      "short_bundles": false
    },
    "source": [
      {
        "id": "src",
        "kind": "help",
        "url": "https://github.com/lucc/khard/blob/master/khard/cli.py",
        "revision": "master 2026-10",
        "evidence": "\"-a\", \"--addressbook\"  Specify one or several comma separated address book names to narrow the list of contacts\n\"-d\", \"--display\", choices=(\"first_name\", \"last_name\", \"formatted_name\")\n\"-g\", \"--group-by-addressbook\"  Group contact table by address book\n\"-r\", \"--reverse\"  Reverse order of contact table\n\"-s\", \"--sort\", choices=(\"first_name\", \"last_name\", \"formatted_name\")\n\"search_terms\", nargs=\"*\", metavar=\"search terms\"\n\"-p\", \"--parsable\"  Machine readable format: uid\tcontact_name\taddress_book_name\nlist_parser = subparsers.add_parser(\"list\", description=\"list all (selected) contacts\")\nLong options: --addressbook --display --group-by-addressbook --reverse --sort --parsable\n"
      }
    ],
    "subcommand": [
      {
        "path": [
          "list"
        ],
        "label": "List contacts",
        "source": [
          {
            "id": "src",
            "kind": "help",
            "url": "https://github.com/lucc/khard/blob/master/khard/cli.py",
            "revision": "master 2026-10",
            "evidence": "\"-a\", \"--addressbook\"  Specify one or several comma separated address book names to narrow the list of contacts\n\"-d\", \"--display\", choices=(\"first_name\", \"last_name\", \"formatted_name\")\n\"-g\", \"--group-by-addressbook\"  Group contact table by address book\n\"-r\", \"--reverse\"  Reverse order of contact table\n\"-s\", \"--sort\", choices=(\"first_name\", \"last_name\", \"formatted_name\")\n\"search_terms\", nargs=\"*\", metavar=\"search terms\"\n\"-p\", \"--parsable\"  Machine readable format: uid\tcontact_name\taddress_book_name\nlist_parser = subparsers.add_parser(\"list\", description=\"list all (selected) contacts\")\nLong options: --addressbook --display --group-by-addressbook --reverse --sort --parsable\n"
          }
        ],
        "field": [
          {
            "id": "search_terms",
            "label": "Search terms",
            "description": "Leave empty to list everything.",
            "type": "string",
            "position": 0,
            "multiple": true,
            "sources": [
              "src"
            ]
          },
          {
            "id": "addressbook",
            "label": "Address books",
            "description": "Comma separated names.",
            "type": "string",
            "option": [
              "--addressbook",
              "-a"
            ],
            "sources": [
              "src"
            ]
          },
          {
            "id": "sort",
            "label": "Sort by",
            "type": "enum",
            "option": [
              "--sort",
              "-s"
            ],
            "choices": [
              {
                "value": "first_name",
                "label": "First name"
              },
              {
                "value": "last_name",
                "label": "Last name"
              },
              {
                "value": "formatted_name",
                "label": "Formatted name"
              }
            ],
            "sources": [
              "src"
            ]
          },
          {
            "id": "display",
            "label": "Display names by",
            "type": "enum",
            "option": [
              "--display",
              "-d"
            ],
            "choices": [
              {
                "value": "first_name",
                "label": "First name"
              },
              {
                "value": "last_name",
                "label": "Last name"
              },
              {
                "value": "formatted_name",
                "label": "Formatted name"
              }
            ],
            "sources": [
              "src"
            ]
          },
          {
            "id": "group",
            "label": "Group by address book",
            "type": "boolean",
            "option": [
              "--group-by-addressbook",
              "-g"
            ],
            "sources": [
              "src"
            ]
          },
          {
            "id": "reverse",
            "label": "Reverse order",
            "type": "boolean",
            "option": [
              "--reverse",
              "-r"
            ],
            "sources": [
              "src"
            ]
          },
          {
            "id": "parsable",
            "label": "Machine readable output",
            "type": "boolean",
            "option": [
              "--parsable",
              "-p"
            ],
            "sources": [
              "src"
            ]
          }
        ],
        "task": [
          {
            "id": "search",
            "label": "Find contacts",
            "fields": [
              "search_terms",
              "addressbook"
            ],
            "required": [
              "search_terms"
            ]
          }
        ],
        "group": [
          {
            "id": "basic",
            "label": "Basic",
            "fields": [
              "search_terms",
              "addressbook",
              "sort"
            ]
          },
          {
            "id": "advanced",
            "label": "Advanced",
            "fields": [
              "display",
              "group",
              "reverse",
              "parsable"
            ]
          }
        ]
      }
    ]
  }
}
