{
  "id": "sqitch",
  "name": "Sqitch",
  "homepage": "https://sqitch.org",
  "description": "Sensible database-native change management for framework-free development and dependable deployment.",
  "icon": "https://sqitch.org/img/apple-touch.png",
  "executables": [
    "sqitch"
  ],
  "dotfiles": {
    "paths": [
      "~/.sqitch/sqitch.conf"
    ],
    "exclude": [],
    "secret": [],
    "side_effect": false,
    "secret_paths": [
      {
        "file": "~/.sqitch/sqitch.conf",
        "match": {
          "prefix": [
            "uri"
          ]
        }
      }
    ],
    "machine_lines": [
      {
        "file": "~/.sqitch/sqitch.conf",
        "match": {
          "prefix": [
            "client"
          ]
        },
        "scope": "platform"
      }
    ]
  },
  "commands": {
    "format": 1,
    "label": "Sqitch",
    "description": "Deploy or revert database changes, or add a new change to the plan. Other subcommands (init, tag, rebase, bundle, status, verify) are not covered.",
    "quality": "ai-draft",
    "parser": {
      "end_of_options": "--",
      "interleave": "permute",
      "long_equals": false,
      "short_attached": false,
      "short_bundles": false
    },
    "subcommand": [
      {
        "path": [
          "deploy"
        ],
        "label": "Deploy changes",
        "description": "Deploy changes from the plan to a target database. Positional target and change arguments are left out; use the target and to-change fields.",
        "source": [
          {
            "id": "deploy-pod",
            "kind": "manual",
            "url": "https://github.com/sqitchers/sqitch/blob/HEAD/lib/sqitch-deploy.pod",
            "revision": "HEAD 2026-10-27",
            "evidence": "=item C<-t>\n=item C<--target>\nThe target database to which to connect. This option can be either a URI or\nthe name of a target in the configuration.\n=item C<--to-change>\n=item C<--change>\n=item C<--to>\nSpecify the deployment change. Defaults to the last point in the plan.\n=item C<--mode>\nSpecify the reversion mode to use in case of deploy or verify failure.\n=item C<all>\n=item C<tag>\n=item C<change>\n=item C<--verify>\nVerify each change by running its verify script, if there is one.\n=item C<--no-verify>\nDon't verify each change. This is the default.\n=item C<-s>\n=item C<--set>\nSet a variable name and value for use by the database engine client. The format must be name=value\n=item C<--log-only>\nLog the changes as if they were deployed, but without actually running the deploy scripts.\n=item C<--lock-timeout>\nSet the number of seconds for Sqitch to wait to get an exclusive advisory lock on the target database. Defaults to 60.\n"
          }
        ],
        "field": [
          {
            "id": "target",
            "label": "Target",
            "description": "A database URI or the name of a configured target.",
            "type": "string",
            "option": [
              "--target",
              "-t"
            ],
            "sources": [
              "deploy-pod"
            ]
          },
          {
            "id": "to_change",
            "label": "Deploy up to change",
            "description": "Defaults to the last point in the plan.",
            "type": "string",
            "option": [
              "--to-change",
              "--change",
              "--to"
            ],
            "sources": [
              "deploy-pod"
            ]
          },
          {
            "id": "mode",
            "label": "Failure reversion mode",
            "type": "enum",
            "choices": [
              {
                "value": "all",
                "label": "Revert everything deployed (default)"
              },
              {
                "value": "tag",
                "label": "Revert to last applied tag"
              },
              {
                "value": "change",
                "label": "Do not revert deploy failures"
              }
            ],
            "option": [
              "--mode"
            ],
            "sources": [
              "deploy-pod"
            ]
          },
          {
            "id": "verify",
            "label": "Verify each change",
            "type": "boolean",
            "option": [
              "--verify"
            ],
            "false_option": "--no-verify",
            "sources": [
              "deploy-pod"
            ]
          },
          {
            "id": "log_only",
            "label": "Log only",
            "description": "Record changes as deployed without running the deploy scripts.",
            "type": "boolean",
            "option": [
              "--log-only"
            ],
            "sources": [
              "deploy-pod"
            ]
          },
          {
            "id": "set",
            "label": "Client variables",
            "description": "One name=value per entry.",
            "type": "string",
            "option": [
              "--set",
              "-s"
            ],
            "multiple": true,
            "sources": [
              "deploy-pod"
            ]
          },
          {
            "id": "lock_timeout",
            "label": "Lock timeout (seconds)",
            "type": "integer",
            "option": [
              "--lock-timeout"
            ],
            "sources": [
              "deploy-pod"
            ]
          }
        ],
        "task": [
          {
            "id": "deploy_all",
            "label": "Deploy to a target",
            "fields": [
              "target",
              "verify"
            ],
            "required": [
              "target"
            ]
          },
          {
            "id": "deploy_verified",
            "label": "Deploy and verify each change",
            "fields": [
              "target",
              "to_change",
              "verify"
            ],
            "required": [
              "target"
            ],
            "set": {
              "verify": [
                true
              ]
            }
          }
        ],
        "group": [
          {
            "id": "basic",
            "label": "Basic",
            "fields": [
              "target",
              "to_change",
              "verify",
              "mode"
            ]
          },
          {
            "id": "advanced",
            "label": "Advanced",
            "fields": [
              "log_only",
              "set",
              "lock_timeout"
            ]
          }
        ]
      },
      {
        "path": [
          "revert"
        ],
        "label": "Revert changes",
        "description": "Revert deployed changes from a target database. Positional arguments are left out.",
        "source": [
          {
            "id": "revert-pod",
            "kind": "manual",
            "url": "https://github.com/sqitchers/sqitch/blob/HEAD/lib/sqitch-revert.pod",
            "revision": "HEAD 2026-10-27",
            "evidence": "=item C<-t>\n=item C<--target>\nThe target database to which to connect. This option can be either a URI or\nthe name of a target in the configuration.\n=item C<--to-change>\n=item C<--change>\n=item C<--to>\nSpecify the reversion change. Defaults to reverting all changes.\n=item C<-m>\n=item C<--modified>\nFinds the change to revert onto based on modifications to deploy scripts.\n=item C<--log-only>\nLog the changes as if they were reverted, but without actually running the revert scripts.\n=item C<-y>\nDisable the prompt that normally asks whether or not to execute the revert.\n"
          }
        ],
        "field": [
          {
            "id": "target",
            "label": "Target",
            "type": "string",
            "option": [
              "--target",
              "-t"
            ],
            "sources": [
              "revert-pod"
            ]
          },
          {
            "id": "to_change",
            "label": "Revert to change",
            "description": "Defaults to reverting all changes.",
            "type": "string",
            "option": [
              "--to-change",
              "--change",
              "--to"
            ],
            "sources": [
              "revert-pod"
            ]
          },
          {
            "id": "modified",
            "label": "Revert to earliest modified change",
            "type": "boolean",
            "option": [
              "--modified",
              "-m"
            ],
            "sources": [
              "revert-pod"
            ]
          },
          {
            "id": "log_only",
            "label": "Log only",
            "type": "boolean",
            "option": [
              "--log-only"
            ],
            "effect": "delete",
            "sources": [
              "revert-pod"
            ]
          },
          {
            "id": "yes",
            "label": "Skip confirmation prompt",
            "type": "boolean",
            "option": [
              "-y"
            ],
            "effect": "delete",
            "sources": [
              "revert-pod"
            ]
          }
        ],
        "task": [
          {
            "id": "revert_target",
            "label": "Revert a target",
            "fields": [
              "target",
              "to_change"
            ],
            "required": [
              "target"
            ]
          }
        ],
        "group": [
          {
            "id": "basic",
            "label": "Basic",
            "fields": [
              "target",
              "to_change",
              "modified"
            ]
          },
          {
            "id": "advanced",
            "label": "Advanced",
            "fields": [
              "log_only",
              "yes"
            ]
          }
        ]
      },
      {
        "path": [
          "add"
        ],
        "label": "Add a change",
        "description": "Add a new change and its deploy, revert and verify scripts to the plan.",
        "source": [
          {
            "id": "add-pod",
            "kind": "manual",
            "url": "https://github.com/sqitchers/sqitch/blob/HEAD/lib/sqitch-add.pod",
            "revision": "HEAD 2026-10-27",
            "evidence": "  sqitch add widgets [options\n  sqitch add slinkies --require sprockets --set schema=industry\n=item C<-c>\n=item C<--change>\n=item C<--change-name>\nThe name of the change to add.\n=item C<-r>\n=item C<--requires>\nName of a change that is required by the new change. May be specified multiple times.\n=item C<-x>\n=item C<--conflicts>\nName of a change that conflicts with the new change. May be specified multiple times.\n=item C<-n>\n=item C<--note>\nA brief note describing the purpose of the change.\n=item C<-e>\n=item C<--edit>\nOpen the generated change scripts in an editor.\n=item C<--no-edit>\n"
          }
        ],
        "field": [
          {
            "id": "change",
            "label": "Change name",
            "type": "string",
            "option": [
              "--change",
              "-c",
              "--change-name"
            ],
            "sources": [
              "add-pod"
            ]
          },
          {
            "id": "requires",
            "label": "Required changes",
            "type": "string",
            "option": [
              "--requires",
              "-r"
            ],
            "multiple": true,
            "sources": [
              "add-pod"
            ]
          },
          {
            "id": "conflicts",
            "label": "Conflicting changes",
            "type": "string",
            "option": [
              "--conflicts",
              "-x"
            ],
            "multiple": true,
            "sources": [
              "add-pod"
            ]
          },
          {
            "id": "note",
            "label": "Note",
            "type": "string",
            "option": [
              "--note",
              "-n"
            ],
            "sources": [
              "add-pod"
            ]
          },
          {
            "id": "edit",
            "label": "Open scripts in editor",
            "type": "boolean",
            "option": [
              "--edit",
              "-e"
            ],
            "false_option": "--no-edit",
            "sources": [
              "add-pod"
            ]
          }
        ],
        "task": [
          {
            "id": "add_change",
            "label": "Add a change",
            "fields": [
              "change",
              "requires",
              "note"
            ],
            "required": [
              "change"
            ]
          }
        ],
        "group": [
          {
            "id": "basic",
            "label": "Basic",
            "fields": [
              "change",
              "requires",
              "conflicts",
              "note",
              "edit"
            ]
          }
        ]
      }
    ]
  }
}
