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
[[dotfiles.secret_paths]]
file = "~/.sqitch/sqitch.conf"
match = { prefix = ["uri"] }
[[dotfiles.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 }
[[commands.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."
[[commands.subcommand.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>
=item C<--target>
The target database to which to connect. This option can be either a URI or
the name of a target in the configuration.
=item C<--to-change>
=item C<--change>
=item C<--to>
Specify the deployment change. Defaults to the last point in the plan.
=item C<--mode>
Specify the reversion mode to use in case of deploy or verify failure.
=item C<all>
=item C<tag>
=item C<change>
=item C<--verify>
Verify each change by running its verify script, if there is one.
=item C<--no-verify>
Don't verify each change. This is the default.
=item C<-s>
=item C<--set>
Set a variable name and value for use by the database engine client. The format must be name=value
=item C<--log-only>
Log the changes as if they were deployed, but without actually running the deploy scripts.
=item C<--lock-timeout>
Set the number of seconds for Sqitch to wait to get an exclusive advisory lock on the target database. Defaults to 60.
"""
[[commands.subcommand.field]]
id = "target"
label = "Target"
description = "A database URI or the name of a configured target."
type = "string"
option = ["--target", "-t"]
sources = ["deploy-pod"]
[[commands.subcommand.field]]
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"]
[[commands.subcommand.field]]
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"]
[[commands.subcommand.field]]
id = "verify"
label = "Verify each change"
type = "boolean"
option = ["--verify"]
false_option = "--no-verify"
sources = ["deploy-pod"]
[[commands.subcommand.field]]
id = "log_only"
label = "Log only"
description = "Record changes as deployed without running the deploy scripts."
type = "boolean"
option = ["--log-only"]
sources = ["deploy-pod"]
[[commands.subcommand.field]]
id = "set"
label = "Client variables"
description = "One name=value per entry."
type = "string"
option = ["--set", "-s"]
multiple = true
sources = ["deploy-pod"]
[[commands.subcommand.field]]
id = "lock_timeout"
label = "Lock timeout (seconds)"
type = "integer"
option = ["--lock-timeout"]
sources = ["deploy-pod"]
[[commands.subcommand.task]]
id = "deploy_all"
label = "Deploy to a target"
fields = ["target", "verify"]
required = ["target"]
[[commands.subcommand.task]]
id = "deploy_verified"
label = "Deploy and verify each change"
fields = ["target", "to_change", "verify"]
required = ["target"]
set = { verify = [true] }
[[commands.subcommand.group]]
id = "basic"
label = "Basic"
fields = ["target", "to_change", "verify", "mode"]
[[commands.subcommand.group]]
id = "advanced"
label = "Advanced"
fields = ["log_only", "set", "lock_timeout"]
[[commands.subcommand]]
path = ["revert"]
label = "Revert changes"
description = "Revert deployed changes from a target database. Positional arguments are left out."
[[commands.subcommand.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>
=item C<--target>
The target database to which to connect. This option can be either a URI or
the name of a target in the configuration.
=item C<--to-change>
=item C<--change>
=item C<--to>
Specify the reversion change. Defaults to reverting all changes.
=item C<-m>
=item C<--modified>
Finds the change to revert onto based on modifications to deploy scripts.
=item C<--log-only>
Log the changes as if they were reverted, but without actually running the revert scripts.
=item C<-y>
Disable the prompt that normally asks whether or not to execute the revert.
"""
[[commands.subcommand.field]]
id = "target"
label = "Target"
type = "string"
option = ["--target", "-t"]
sources = ["revert-pod"]
[[commands.subcommand.field]]
id = "to_change"
label = "Revert to change"
description = "Defaults to reverting all changes."
type = "string"
option = ["--to-change", "--change", "--to"]
sources = ["revert-pod"]
[[commands.subcommand.field]]
id = "modified"
label = "Revert to earliest modified change"
type = "boolean"
option = ["--modified", "-m"]
sources = ["revert-pod"]
[[commands.subcommand.field]]
id = "log_only"
label = "Log only"
type = "boolean"
option = ["--log-only"]
effect = "delete"
sources = ["revert-pod"]
[[commands.subcommand.field]]
id = "yes"
label = "Skip confirmation prompt"
type = "boolean"
option = ["-y"]
effect = "delete"
sources = ["revert-pod"]
[[commands.subcommand.task]]
id = "revert_target"
label = "Revert a target"
fields = ["target", "to_change"]
required = ["target"]
[[commands.subcommand.group]]
id = "basic"
label = "Basic"
fields = ["target", "to_change", "modified"]
[[commands.subcommand.group]]
id = "advanced"
label = "Advanced"
fields = ["log_only", "yes"]
[[commands.subcommand]]
path = ["add"]
label = "Add a change"
description = "Add a new change and its deploy, revert and verify scripts to the plan."
[[commands.subcommand.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
sqitch add slinkies --require sprockets --set schema=industry
=item C<-c>
=item C<--change>
=item C<--change-name>
The name of the change to add.
=item C<-r>
=item C<--requires>
Name of a change that is required by the new change. May be specified multiple times.
=item C<-x>
=item C<--conflicts>
Name of a change that conflicts with the new change. May be specified multiple times.
=item C<-n>
=item C<--note>
A brief note describing the purpose of the change.
=item C<-e>
=item C<--edit>
Open the generated change scripts in an editor.
=item C<--no-edit>
"""
[[commands.subcommand.field]]
id = "change"
label = "Change name"
type = "string"
option = ["--change", "-c", "--change-name"]
sources = ["add-pod"]
[[commands.subcommand.field]]
id = "requires"
label = "Required changes"
type = "string"
option = ["--requires", "-r"]
multiple = true
sources = ["add-pod"]
[[commands.subcommand.field]]
id = "conflicts"
label = "Conflicting changes"
type = "string"
option = ["--conflicts", "-x"]
multiple = true
sources = ["add-pod"]
[[commands.subcommand.field]]
id = "note"
label = "Note"
type = "string"
option = ["--note", "-n"]
sources = ["add-pod"]
[[commands.subcommand.field]]
id = "edit"
label = "Open scripts in editor"
type = "boolean"
option = ["--edit", "-e"]
false_option = "--no-edit"
sources = ["add-pod"]
[[commands.subcommand.task]]
id = "add_change"
label = "Add a change"
fields = ["change", "requires", "note"]
required = ["change"]
[[commands.subcommand.group]]
id = "basic"
label = "Basic"
fields = ["change", "requires", "conflicts", "note", "edit"]