{
  "id": "icp-cli",
  "name": "ICP CLI",
  "homepage": "https://cli.internetcomputer.org/",
  "description": "Command-line interface for developing and deploying Internet Computer applications.",
  "executables": [
    "icp"
  ],
  "dotfiles": {
    "paths": [
      "~/Library/Application Support/org.dfinity.icp-cli/identity/identity_list.json",
      "~/Library/Application Support/org.dfinity.icp-cli/identity/identity_defaults.json",
      "~/.local/share/icp-cli/identity/identity_list.json",
      "~/.local/share/icp-cli/identity/identity_defaults.json",
      "%APPDATA%/icp-cli/data/identity/identity_list.json",
      "%APPDATA%/icp-cli/data/identity/identity_defaults.json"
    ],
    "secret": [
      "~/Library/Application Support/org.dfinity.icp-cli/identity/keys/",
      "~/.local/share/icp-cli/identity/keys/",
      "%APPDATA%/icp-cli/data/identity/keys/"
    ]
  },
  "commands": {
    "format": 1,
    "label": "ICP CLI",
    "description": "Build and deploy canisters of an Internet Computer project. Covers 'icp build' and 'icp deploy'; canister calls, networks, identities and project creation are not covered.",
    "quality": "ai-draft",
    "parser": {
      "end_of_options": "--",
      "interleave": "permute",
      "long_equals": true,
      "short_attached": true,
      "short_bundles": false
    },
    "subcommand": [
      {
        "path": [
          "build"
        ],
        "label": "Build canisters",
        "description": "Build the canisters of the project; all of them when none are named.",
        "source": [
          {
            "id": "ref",
            "kind": "help",
            "url": "https://cli.internetcomputer.org/1.3/reference/cli/",
            "revision": "icp-cli 1.3 reference",
            "evidence": "Usage: icp build [OPTIONS] [CANISTERS]...\n<CANISTERS> — Canister names (if empty, build all canisters in environment)\n-e, --environment <ENVIRONMENT> — Override the environment to connect to. By default, the local environment is used\n"
          }
        ],
        "field": [
          {
            "id": "canisters",
            "label": "Canisters",
            "description": "Canister names; leave empty to build all.",
            "type": "string",
            "position": 0,
            "multiple": true,
            "sources": [
              "ref"
            ]
          },
          {
            "id": "environment",
            "label": "Environment",
            "type": "string",
            "option": [
              "--environment",
              "-e"
            ],
            "suggestions": [
              {
                "value": "local",
                "label": "local"
              }
            ],
            "sources": [
              "ref"
            ]
          }
        ],
        "task": [
          {
            "id": "build_all",
            "label": "Build everything",
            "fields": [
              "environment"
            ],
            "required": []
          }
        ],
        "group": [
          {
            "id": "basic",
            "label": "Basic",
            "fields": [
              "canisters",
              "environment"
            ]
          }
        ]
      },
      {
        "path": [
          "deploy"
        ],
        "label": "Deploy to an environment",
        "description": "Create, build and install canisters. Inline arguments (--args) and proxy options are not offered.",
        "source": [
          {
            "id": "ref",
            "kind": "help",
            "url": "https://cli.internetcomputer.org/1.3/reference/cli/",
            "revision": "icp-cli 1.3 reference",
            "evidence": "Usage: icp deploy [OPTIONS] [NAMES]...\n<NAMES> — Canister names\n-m, --mode <MODE> — Specifies the mode of canister installation\nPossible values: auto, install, reinstall, upgrade\n--subnet <SUBNET> — The subnet to use for the canisters being deployed\n--controller <CONTROLLER> — One or more controllers for the canisters being deployed. Repeat --controller to specify multiple\n--no-create — If any canisters do not exist, error instead of creating them\n-y, --yes — Skip confirmation prompts, including the Candid interface compatibility check\n--identity <IDENTITY> — The user identity to run this command as\n-e, --environment <ENVIRONMENT> — Override the environment to connect to. By default, the local environment is used\n"
          }
        ],
        "field": [
          {
            "id": "names",
            "label": "Canisters",
            "description": "Canister names; leave empty to deploy all.",
            "type": "string",
            "position": 0,
            "multiple": true,
            "sources": [
              "ref"
            ]
          },
          {
            "id": "environment",
            "label": "Environment",
            "type": "string",
            "option": [
              "--environment",
              "-e"
            ],
            "suggestions": [
              {
                "value": "local",
                "label": "local"
              }
            ],
            "sources": [
              "ref"
            ]
          },
          {
            "id": "mode",
            "label": "Install mode",
            "type": "enum",
            "option": [
              "--mode",
              "-m"
            ],
            "choices": [
              {
                "value": "auto",
                "label": "Auto"
              },
              {
                "value": "install",
                "label": "Install"
              },
              {
                "value": "reinstall",
                "label": "Reinstall (wipes state)"
              },
              {
                "value": "upgrade",
                "label": "Upgrade"
              }
            ],
            "sources": [
              "ref"
            ]
          },
          {
            "id": "identity",
            "label": "Identity",
            "type": "string",
            "option": [
              "--identity"
            ],
            "sources": [
              "ref"
            ]
          },
          {
            "id": "subnet",
            "label": "Subnet",
            "type": "string",
            "option": [
              "--subnet"
            ],
            "sources": [
              "ref"
            ]
          },
          {
            "id": "controller",
            "label": "Controllers",
            "type": "string",
            "option": [
              "--controller"
            ],
            "multiple": true,
            "sources": [
              "ref"
            ]
          },
          {
            "id": "no_create",
            "label": "Do not create missing canisters",
            "type": "boolean",
            "option": [
              "--no-create"
            ],
            "sources": [
              "ref"
            ]
          },
          {
            "id": "yes",
            "label": "Skip confirmation prompts",
            "type": "boolean",
            "option": [
              "--yes",
              "-y"
            ],
            "sources": [
              "ref"
            ]
          }
        ],
        "task": [
          {
            "id": "deploy_local",
            "label": "Deploy to an environment",
            "fields": [
              "names",
              "environment",
              "mode",
              "identity"
            ],
            "required": []
          },
          {
            "id": "upgrade",
            "label": "Upgrade existing canisters",
            "fields": [
              "names",
              "environment",
              "identity",
              "mode"
            ],
            "required": [],
            "set": {
              "mode": [
                "upgrade"
              ]
            }
          }
        ],
        "group": [
          {
            "id": "basic",
            "label": "Basic",
            "fields": [
              "names",
              "environment",
              "mode",
              "identity"
            ]
          },
          {
            "id": "advanced",
            "label": "Advanced",
            "fields": [
              "subnet",
              "controller",
              "no_create",
              "yes"
            ]
          }
        ]
      }
    ]
  }
}
