id = "tenv" name = "tenv" homepage = "https://github.com/tofuutils/tenv" description = "OpenTofu, Terraform, Terragrunt, Terramate and Atmos version manager, written in Go." executables = ["tenv"] [dotfiles] # tenv's official README documents TENV_ROOT as ~/.tenv, its per-tool version # files and remote.yaml. It also searches these version-selector files in the # user's home directory. # https://github.com/tofuutils/tenv paths = [ "~/.tenv/remote.yaml", "~/.tenv/OpenTofu/version", "~/.tenv/Terraform/version", "~/.tenv/Terragrunt/version", "~/.tenv/Terramate/version", "~/.tenv/Atmos/version", "~/.opentofu-version", "~/.terraform-version", "~/.terragrunt-version", "~/.tgswitchrc", "~/.terramate-version", "~/.atmos-version", ] exclude = ["~/.tenv/OpenTofu/*/", "~/.tenv/Terraform/*/", "~/.tenv/Terragrunt/*/", "~/.tenv/Terramate/*/", "~/.tenv/Atmos/*/"] secret = [] [commands] format = 1 label = "Manage tool versions" description = "Run tenv [version] to list, install or select OpenTofu, Terraform or Terragrunt versions. Per-command flags (such as --descending) and other tools are left out." quality = "ai-draft" parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = true, short_bundles = false } [[commands.source]] id = "readme" kind = "help" url = "https://github.com/tofuutils/tenv#usage" revision = "2026-10-27" evidence = """ tenv tofu install tenv tofu install 1.6.0-beta5 tenv list tenv list-remote tenv tofu use -h $ tenv tf constraint "<= 1.5.7" $ tenv tg constraint -q, --quiet no unnecessary output (and no log) -r, --root-path string local path to install versions of OpenTofu, Terraform and Terragrunt -v, --verbose verbose output (and set log level to Trace) """ [[commands.field]] id = "tool" label = "Tool" type = "enum" position = 0 min = 1 choices = [ { value = "tofu", label = "OpenTofu" }, { value = "tf", label = "Terraform" }, { value = "tg", label = "Terragrunt" }, ] sources = ["readme"] [[commands.field]] id = "action" label = "Command" type = "enum" position = 1 min = 1 choices = [ { value = "list", label = "List installed versions" }, { value = "list-remote", label = "List installable versions" }, { value = "install", label = "Install a version" }, { value = "use", label = "Switch default version" }, ] sources = ["readme"] [[commands.field]] id = "version" label = "Version" description = "Exact version, constraint expression, or latest / latest-stable. Optional for install." type = "string" position = 2 suggestions = [{ value = "latest", label = "latest" }, { value = "latest-stable", label = "latest-stable" }] sources = ["readme"] [[commands.field]] id = "quiet" label = "Quiet" type = "boolean" option = ["--quiet", "-q"] sources = ["readme"] [[commands.field]] id = "verbose" label = "Verbose" type = "boolean" option = ["--verbose", "-v"] sources = ["readme"] [[commands.field]] id = "root_path" label = "Install root" type = "path" option = ["--root-path", "-r"] path = { kind = "directory", role = "output" } sources = ["readme"] [[commands.task]] id = "install" label = "Install a version" fields = ["tool", "action", "version"] required = ["tool", "action"] set = { action = ["install"] } [[commands.task]] id = "list" label = "List installed versions" fields = ["tool", "action"] required = ["tool", "action"] set = { action = ["list"] } [[commands.group]] id = "basic" label = "Basic" fields = ["tool", "action", "version"] [[commands.group]] id = "advanced" label = "Advanced" fields = ["quiet", "verbose", "root_path"]