{
  "id": "dvc",
  "name": "DVC",
  "homepage": "https://dvc.org/",
  "description": "Manage data the way code is managed.",
  "executables": [
    "dvc"
  ],
  "dotfiles": {
    "paths": [
      "~/.config/dvc/config",
      "~/Library/Application Support/dvc/config",
      "%LOCALAPPDATA%/iterative/dvc/config"
    ],
    "exclude": [],
    "secret": []
  },
  "commands": {
    "format": 1,
    "label": "Data Version Control",
    "description": "Common DVC jobs: track data, push and pull it, and reproduce pipelines. Other subcommands (experiments, metrics, plots, remote setup) are not covered.",
    "quality": "ai-draft",
    "parser": {
      "end_of_options": "--",
      "interleave": "permute",
      "long_equals": true,
      "short_attached": false,
      "short_bundles": false
    },
    "source": [
      {
        "id": "help",
        "kind": "help",
        "url": "https://dvc.org/doc/command-reference",
        "revision": "dvc --help (installed)",
        "evidence": "usage: dvc [-q | -v] [-h] [-V] [--cd <path>] [--wait-for-lock] command ...\n  --cd <path>          Change to directory before executing.\n"
      }
    ],
    "field": [
      {
        "id": "cd",
        "label": "Run in directory",
        "type": "path",
        "option": [
          "--cd"
        ],
        "path": {
          "kind": "directory",
          "role": "input"
        },
        "sources": [
          "help"
        ]
      }
    ],
    "group": [
      {
        "id": "basic",
        "label": "Basic",
        "fields": [
          "cd"
        ]
      }
    ],
    "subcommand": [
      {
        "path": [
          "add"
        ],
        "label": "Track data",
        "description": "Track files or directories with DVC. Remote upload, glob and relink options are left out.",
        "source": [
          {
            "id": "help",
            "kind": "help",
            "url": "https://dvc.org/doc/command-reference/add",
            "revision": "dvc --help (installed)",
            "evidence": "usage: dvc add [-h] [-q | -v] [--no-commit] [--glob] [-o <path>] [--to-remote]\n  targets               Input files/directories to add.\n  --no-commit           Dont put files/directories into cache.\n  --glob                Allows targets containing shell-style wildcards.\n  -o, --out <path>      Destination path to put files to.\n  -f, --force           Override local file or folder if exists.\n"
          }
        ],
        "field": [
          {
            "id": "targets",
            "label": "Files or directories",
            "type": "path",
            "position": 0,
            "multiple": true,
            "min": 1,
            "path": {
              "kind": "any",
              "role": "input",
              "must_exist": true
            },
            "sources": [
              "help"
            ]
          },
          {
            "id": "no_commit",
            "label": "Do not put into cache",
            "type": "boolean",
            "option": [
              "--no-commit"
            ],
            "sources": [
              "help"
            ]
          },
          {
            "id": "glob",
            "label": "Targets are wildcards",
            "type": "boolean",
            "option": [
              "--glob"
            ],
            "sources": [
              "help"
            ]
          },
          {
            "id": "out",
            "label": "Destination path",
            "type": "path",
            "option": [
              "--out",
              "-o"
            ],
            "path": {
              "kind": "any",
              "role": "output",
              "must_exist": false
            },
            "sources": [
              "help"
            ]
          },
          {
            "id": "force",
            "label": "Override existing",
            "type": "boolean",
            "option": [
              "--force",
              "-f"
            ],
            "effect": "overwrite",
            "sources": [
              "help"
            ]
          }
        ],
        "task": [
          {
            "id": "add",
            "label": "Track files",
            "fields": [
              "targets"
            ],
            "required": [
              "targets"
            ]
          }
        ],
        "group": [
          {
            "id": "basic",
            "label": "Basic",
            "fields": [
              "targets",
              "no_commit",
              "glob",
              "out",
              "force"
            ]
          }
        ]
      },
      {
        "path": [
          "push"
        ],
        "label": "Upload to remote",
        "description": "Upload tracked data to remote storage. Run-cache and per-branch options are partly covered.",
        "source": [
          {
            "id": "help",
            "kind": "help",
            "url": "https://dvc.org/doc/command-reference/push",
            "revision": "dvc --help (installed)",
            "evidence": "usage: dvc push [-h] [-q | -v] [-j <number>] [-r <name>] [-a] [-T] [-A] [-d]\n  targets               Limit command scope to these tracked\n  -j, --jobs <number>   Number of jobs to run simultaneously. The default\n  -r, --remote <name>   Remote storage to push to\n  -a, --all-branches    Push cache for all branches.\n  -T, --all-tags        Push cache for all tags.\n  -A, --all-commits     Push cache for all commits.\n  -d, --with-deps       Push cache for all dependencies of the specified\n  -R, --recursive       Push cache for subdirectories of specified directory.\n"
          }
        ],
        "field": [
          {
            "id": "targets",
            "label": "Targets",
            "description": "Limit to these tracked files, .dvc files or stage names. Leave empty for everything.",
            "type": "string",
            "position": 0,
            "multiple": true,
            "sources": [
              "help"
            ]
          },
          {
            "id": "remote",
            "label": "Remote name",
            "type": "string",
            "option": [
              "--remote",
              "-r"
            ],
            "sources": [
              "help"
            ]
          },
          {
            "id": "jobs",
            "label": "Parallel jobs",
            "type": "integer",
            "option": [
              "--jobs",
              "-j"
            ],
            "sources": [
              "help"
            ]
          },
          {
            "id": "all_branches",
            "label": "All branches",
            "type": "boolean",
            "option": [
              "--all-branches",
              "-a"
            ],
            "sources": [
              "help"
            ]
          },
          {
            "id": "all_tags",
            "label": "All tags",
            "type": "boolean",
            "option": [
              "--all-tags",
              "-T"
            ],
            "sources": [
              "help"
            ]
          },
          {
            "id": "all_commits",
            "label": "All commits",
            "type": "boolean",
            "option": [
              "--all-commits",
              "-A"
            ],
            "sources": [
              "help"
            ]
          },
          {
            "id": "with_deps",
            "label": "Include dependencies",
            "type": "boolean",
            "option": [
              "--with-deps",
              "-d"
            ],
            "sources": [
              "help"
            ]
          },
          {
            "id": "recursive",
            "label": "Recurse into directories",
            "type": "boolean",
            "option": [
              "--recursive",
              "-R"
            ],
            "sources": [
              "help"
            ]
          }
        ],
        "task": [
          {
            "id": "push",
            "label": "Push everything",
            "fields": [
              "remote"
            ],
            "required": []
          }
        ],
        "group": [
          {
            "id": "basic",
            "label": "Basic",
            "fields": [
              "targets",
              "remote",
              "jobs"
            ]
          },
          {
            "id": "advanced",
            "label": "Advanced",
            "fields": [
              "all_branches",
              "all_tags",
              "all_commits",
              "with_deps",
              "recursive"
            ]
          }
        ]
      },
      {
        "path": [
          "pull"
        ],
        "label": "Download from remote",
        "description": "Download tracked data from remote storage into the workspace.",
        "source": [
          {
            "id": "help",
            "kind": "help",
            "url": "https://dvc.org/doc/command-reference/pull",
            "revision": "dvc --help (installed)",
            "evidence": "usage: dvc pull [-h] [-q | -v] [-j <number>] [-r <name>] [-a] [-T] [-A] [-f]\n  targets               Limit command scope to these tracked\n  -j, --jobs <number>   Number of jobs to run simultaneously. The default\n  -r, --remote <name>   Remote storage to pull from\n  -a, --all-branches    Fetch cache for all branches.\n  -T, --all-tags        Fetch cache for all tags.\n  -A, --all-commits     Fetch cache for all commits.\n  -f, --force           Do not prompt when removing working directory files.\n  -d, --with-deps       Fetch cache for all dependencies of the specified\n  -R, --recursive       Pull cache for subdirectories of the specified\n"
          }
        ],
        "field": [
          {
            "id": "targets",
            "label": "Targets",
            "description": "Limit to these tracked files, .dvc files or stage names. Leave empty for everything.",
            "type": "string",
            "position": 0,
            "multiple": true,
            "sources": [
              "help"
            ]
          },
          {
            "id": "remote",
            "label": "Remote name",
            "type": "string",
            "option": [
              "--remote",
              "-r"
            ],
            "sources": [
              "help"
            ]
          },
          {
            "id": "jobs",
            "label": "Parallel jobs",
            "type": "integer",
            "option": [
              "--jobs",
              "-j"
            ],
            "sources": [
              "help"
            ]
          },
          {
            "id": "all_branches",
            "label": "All branches",
            "type": "boolean",
            "option": [
              "--all-branches",
              "-a"
            ],
            "sources": [
              "help"
            ]
          },
          {
            "id": "all_tags",
            "label": "All tags",
            "type": "boolean",
            "option": [
              "--all-tags",
              "-T"
            ],
            "sources": [
              "help"
            ]
          },
          {
            "id": "all_commits",
            "label": "All commits",
            "type": "boolean",
            "option": [
              "--all-commits",
              "-A"
            ],
            "sources": [
              "help"
            ]
          },
          {
            "id": "with_deps",
            "label": "Include dependencies",
            "type": "boolean",
            "option": [
              "--with-deps",
              "-d"
            ],
            "sources": [
              "help"
            ]
          },
          {
            "id": "recursive",
            "label": "Recurse into directories",
            "type": "boolean",
            "option": [
              "--recursive",
              "-R"
            ],
            "sources": [
              "help"
            ]
          },
          {
            "id": "force",
            "label": "Do not prompt before removing",
            "type": "boolean",
            "option": [
              "--force",
              "-f"
            ],
            "effect": "delete",
            "sources": [
              "help"
            ]
          }
        ],
        "task": [
          {
            "id": "pull",
            "label": "Pull everything",
            "fields": [
              "remote"
            ],
            "required": []
          }
        ],
        "group": [
          {
            "id": "basic",
            "label": "Basic",
            "fields": [
              "targets",
              "remote",
              "jobs"
            ]
          },
          {
            "id": "advanced",
            "label": "Advanced",
            "fields": [
              "all_branches",
              "all_tags",
              "all_commits",
              "with_deps",
              "recursive",
              "force"
            ]
          }
        ]
      },
      {
        "path": [
          "repro"
        ],
        "label": "Reproduce pipeline",
        "description": "Run the stages in dvc.yaml that are out of date.",
        "source": [
          {
            "id": "help",
            "kind": "help",
            "url": "https://dvc.org/doc/command-reference/repro",
            "revision": "dvc --help (installed)",
            "evidence": "usage: dvc repro [-h] [-q | -v] [-f] [-i] [-s] [-p] [-P] [-R] [--downstream]\n  targets              Stages to reproduce. dvc.yaml by default.\n  -f, --force          Reproduce even if dependencies were not changed.\n  -i, --interactive    Ask for confirmation before reproducing each stage.\n  -s, --single-item    Reproduce only single data item without recursive\n  -p, --pipeline       Reproduce the whole pipeline that the specified targets\n  -P, --all-pipelines  Reproduce all pipelines in the repo.\n  --downstream         Start from the specified stages when reproducing\n  --pull               Try automatically pulling missing data.\n  --dry                Only print the commands that would be executed without\n"
          }
        ],
        "field": [
          {
            "id": "targets",
            "label": "Stages",
            "description": "Stage names or dvc.yaml paths. Leave empty for dvc.yaml.",
            "type": "string",
            "position": 0,
            "multiple": true,
            "sources": [
              "help"
            ]
          },
          {
            "id": "force",
            "label": "Force",
            "description": "Reproduce even if dependencies were not changed.",
            "type": "boolean",
            "option": [
              "--force",
              "-f"
            ],
            "sources": [
              "help"
            ]
          },
          {
            "id": "interactive",
            "label": "Confirm each stage",
            "type": "boolean",
            "option": [
              "--interactive",
              "-i"
            ],
            "sources": [
              "help"
            ]
          },
          {
            "id": "single_item",
            "label": "Single item only",
            "type": "boolean",
            "option": [
              "--single-item",
              "-s"
            ],
            "sources": [
              "help"
            ]
          },
          {
            "id": "pipeline",
            "label": "Whole pipeline",
            "type": "boolean",
            "option": [
              "--pipeline",
              "-p"
            ],
            "sources": [
              "help"
            ]
          },
          {
            "id": "all_pipelines",
            "label": "All pipelines",
            "type": "boolean",
            "option": [
              "--all-pipelines",
              "-P"
            ],
            "sources": [
              "help"
            ]
          },
          {
            "id": "downstream",
            "label": "Start from the given stages",
            "type": "boolean",
            "option": [
              "--downstream"
            ],
            "sources": [
              "help"
            ]
          },
          {
            "id": "pull",
            "label": "Pull missing data",
            "type": "boolean",
            "option": [
              "--pull"
            ],
            "sources": [
              "help"
            ]
          },
          {
            "id": "dry",
            "label": "Dry run",
            "description": "Only print the commands that would be executed.",
            "type": "boolean",
            "option": [
              "--dry"
            ],
            "sources": [
              "help"
            ]
          }
        ],
        "task": [
          {
            "id": "repro",
            "label": "Reproduce the pipeline",
            "fields": [
              "targets"
            ],
            "required": []
          },
          {
            "id": "dry",
            "label": "Preview what would run",
            "fields": [
              "targets",
              "dry"
            ],
            "required": [
              "dry"
            ],
            "set": {
              "dry": [
                true
              ]
            }
          }
        ],
        "group": [
          {
            "id": "basic",
            "label": "Basic",
            "fields": [
              "targets",
              "force",
              "dry",
              "pull"
            ]
          },
          {
            "id": "advanced",
            "label": "Advanced",
            "fields": [
              "interactive",
              "single_item",
              "pipeline",
              "all_pipelines",
              "downstream"
            ]
          }
        ]
      }
    ]
  }
}
