{
  "id": "argocd",
  "name": "Argo CD",
  "homepage": "https://argo-cd.readthedocs.io",
  "description": "Argo CD is a declarative, GitOps continuous delivery tool for Kubernetes.",
  "executables": [
    "argocd"
  ],
  "dotfiles": {
    "paths": [
      "[configHome]/argocd/config",
      "~/.argocd/config"
    ],
    "secret": [],
    "side_effect": false,
    "secret_paths": [
      {
        "file": [
          "[configHome]/argocd/config",
          "~/.argocd/config"
        ],
        "format": "yaml",
        "match": {
          "key_path": [
            "users.*.auth-token",
            "users.*.refresh-token"
          ]
        }
      }
    ]
  },
  "commands": {
    "format": 1,
    "label": "Argo CD",
    "description": "Common Argo CD application jobs. The sync form leaves out multi-source, retry-backoff and server-side-diff tuning options.",
    "quality": "ai-draft",
    "parser": {
      "end_of_options": "--",
      "interleave": "permute",
      "long_equals": true,
      "short_attached": true,
      "short_bundles": false
    },
    "subcommand": [
      {
        "path": [
          "app",
          "sync"
        ],
        "label": "Sync an application",
        "source": [
          {
            "id": "help",
            "kind": "manual",
            "url": "https://argo-cd.readthedocs.io/en/latest/user-guide/commands/argocd_app_sync/",
            "evidence": "argocd app sync [APPNAME... | -l selector | --project project-name] [flags]\n      --apply-out-of-sync-only                            Sync only out-of-sync resources\n      --async                                             Do not wait for application to sync before continuing\n      --dry-run                                           Preview apply without affecting cluster\n      --force                                             Use a force apply\n      --preview-changes                                   Preview difference against the target and live state before syncing app and wait for user confirmation\n      --prune                                             Allow deleting unexpected resources\n      --replace                                           Use a kubectl create/replace instead apply\n      --resource stringArray                              Sync only specific resources as GROUP:KIND:NAME or !GROUP:KIND:NAME.\n      --revision string                                   Sync to a specific revision. Preserves parameter overrides\n  -l, --selector string                                   Sync apps that match this label.\n      --server-side                                       Use server-side apply while syncing the application\n      --timeout uint                                      Time out after this many seconds\n"
          }
        ],
        "field": [
          {
            "id": "apps",
            "label": "Applications",
            "type": "string",
            "position": 0,
            "multiple": true,
            "sources": [
              "help"
            ]
          },
          {
            "id": "selector",
            "label": "Label selector",
            "description": "Sync apps matching this label instead of naming them.",
            "type": "string",
            "option": [
              "--selector",
              "-l"
            ],
            "sources": [
              "help"
            ]
          },
          {
            "id": "revision",
            "label": "Revision",
            "type": "string",
            "option": [
              "--revision"
            ],
            "sources": [
              "help"
            ]
          },
          {
            "id": "resource",
            "label": "Resource",
            "description": "GROUP:KIND:NAME, or !GROUP:KIND:NAME to exclude.",
            "type": "string",
            "option": [
              "--resource"
            ],
            "multiple": true,
            "sources": [
              "help"
            ]
          },
          {
            "id": "dry_run",
            "label": "Dry run",
            "type": "boolean",
            "option": [
              "--dry-run"
            ],
            "sources": [
              "help"
            ]
          },
          {
            "id": "preview_changes",
            "label": "Preview changes",
            "type": "boolean",
            "option": [
              "--preview-changes"
            ],
            "sources": [
              "help"
            ]
          },
          {
            "id": "prune",
            "label": "Prune",
            "description": "Allow deleting unexpected resources.",
            "type": "boolean",
            "option": [
              "--prune"
            ],
            "effect": "delete",
            "sources": [
              "help"
            ]
          },
          {
            "id": "force",
            "label": "Force apply",
            "type": "boolean",
            "option": [
              "--force"
            ],
            "effect": "overwrite",
            "sources": [
              "help"
            ]
          },
          {
            "id": "replace",
            "label": "Replace instead of apply",
            "type": "boolean",
            "option": [
              "--replace"
            ],
            "effect": "overwrite",
            "sources": [
              "help"
            ]
          },
          {
            "id": "server_side",
            "label": "Server-side apply",
            "type": "boolean",
            "option": [
              "--server-side"
            ],
            "sources": [
              "help"
            ]
          },
          {
            "id": "apply_out_of_sync_only",
            "label": "Only out-of-sync resources",
            "type": "boolean",
            "option": [
              "--apply-out-of-sync-only"
            ],
            "sources": [
              "help"
            ]
          },
          {
            "id": "async",
            "label": "Do not wait",
            "type": "boolean",
            "option": [
              "--async"
            ],
            "sources": [
              "help"
            ]
          },
          {
            "id": "timeout",
            "label": "Timeout (seconds)",
            "type": "integer",
            "option": [
              "--timeout"
            ],
            "sources": [
              "help"
            ]
          }
        ],
        "task": [
          {
            "id": "sync",
            "label": "Sync an app",
            "fields": [
              "apps",
              "revision",
              "prune",
              "apply_out_of_sync_only",
              "async",
              "timeout"
            ],
            "required": [
              "apps"
            ]
          },
          {
            "id": "preview",
            "label": "Dry-run sync",
            "set": {
              "dry_run": [
                true
              ]
            },
            "fields": [
              "apps",
              "dry_run",
              "revision",
              "resource"
            ],
            "required": [
              "apps"
            ]
          }
        ],
        "group": [
          {
            "id": "basic",
            "label": "Basic",
            "fields": [
              "apps",
              "selector",
              "revision",
              "dry_run",
              "prune",
              "async",
              "timeout"
            ]
          },
          {
            "id": "advanced",
            "label": "Advanced",
            "fields": [
              "resource",
              "preview_changes",
              "force",
              "replace",
              "server_side",
              "apply_out_of_sync_only"
            ]
          }
        ]
      }
    ]
  }
}
