id = "invoke"
name = "Invoke"
homepage = "https://docs.pyinvoke.org/"
description = "Invoke is a Python task execution tool and library."
executables = ["invoke", "inv"]
[dotfiles]
paths = ["~/.invoke.yaml", "~/.invoke.yml", "~/.invoke.json", "~/.invoke.py"]
exclude = []
secret = []
[commands]
format = 1
label = "Run tasks"
description = "Run one or more tasks from tasks.py with Invoke's core options. Per-task options are written after each task name and are not part of this form; --list and --help are left out."
quality = "ai-draft"
parser = { end_of_options = "--", interleave = "posix", long_equals = true, short_attached = true, short_bundles = false }
[[commands.source]]
id = "docs"
kind = "manual"
url = "https://docs.pyinvoke.org/en/stable/invoke.html"
revision = "2026-10-27"
evidence = """
$ inv[oke] [--core-opts] task1 [--task1-opts] ... taskN [--taskN-opts] [-- remainder-opts-or-values]
-c STRING , --collection =STRING Specify collection name to load.
-d , --debug Enable debug output.
--dry Echo commands instead of actually running them
-e , --echo Echo executed commands before running.
-f , --config Specify a runtime configuration file to load.
-p , --pty Use a pty when executing shell commands.
-r STRING , --search-root =STRING Change root directory used for finding task modules.
-T INT , --command-timeout =INT Set a default command execution timeout of INT seconds.
-w , --warn-only Warn, instead of failing, when shell commands fail.
"""
[[commands.field]]
id = "tasks"
label = "Tasks"
description = "One or more task names, in order."
type = "string"
position = 0
multiple = true
sources = ["docs"]
[[commands.field]]
id = "echo"
label = "Echo commands"
type = "boolean"
option = ["--echo", "-e"]
sources = ["docs"]
[[commands.field]]
id = "dry"
label = "Dry run"
description = "Print commands instead of running them."
type = "boolean"
option = ["--dry"]
sources = ["docs"]
[[commands.field]]
id = "pty"
label = "Use a pty"
type = "boolean"
option = ["--pty", "-p"]
sources = ["docs"]
[[commands.field]]
id = "warn_only"
label = "Warn only on failure"
type = "boolean"
option = ["--warn-only", "-w"]
sources = ["docs"]
[[commands.field]]
id = "debug"
label = "Debug output"
type = "boolean"
option = ["--debug", "-d"]
sources = ["docs"]
[[commands.field]]
id = "collection"
label = "Collection name"
type = "string"
option = ["--collection", "-c"]
sources = ["docs"]
[[commands.field]]
id = "search_root"
label = "Search root"
type = "path"
path = { kind = "directory", role = "input" }
option = ["--search-root", "-r"]
sources = ["docs"]
[[commands.field]]
id = "config"
label = "Runtime config file"
type = "path"
path = { kind = "file", role = "input" }
option = ["--config", "-f"]
sources = ["docs"]
[[commands.field]]
id = "command_timeout"
label = "Command timeout (seconds)"
type = "integer"
option = ["--command-timeout", "-T"]
sources = ["docs"]
[[commands.task]]
id = "run"
label = "Run tasks"
fields = ["tasks", "echo"]
required = ["tasks"]
[[commands.task]]
id = "dry_run"
label = "Dry run tasks"
fields = ["tasks", "dry", "echo"]
required = ["tasks"]
set = { dry = [true], echo = [true] }
[[commands.group]]
id = "basic"
label = "Basic"
fields = ["tasks", "echo", "dry", "pty", "warn_only"]
[[commands.group]]
id = "advanced"
label = "Advanced"
fields = ["debug", "collection", "search_root", "config", "command_timeout"]