#terraform #cli #opentofu #tfswitch

app tfswitcher

A Terraform and OpenTofu version switcher

13 releases (6 breaking)

0.8.0 Jun 3, 2024
0.7.0 Jan 25, 2024
0.6.1 Jan 2, 2024
0.6.0 Dec 23, 2023
0.2.3 Jul 25, 2023

#951 in Command line utilities

MIT license

41KB
953 lines

tfswitcher

Terraform and OpenTofu version switcher written in Rust.

Installation

Homebrew

To install via Homebrew, run:

brew install asleepycat/tap/tfswitcher

This will build from source.

Cargo

To install with cargo, run:

cargo install tfswitcher

There are also prebuilt binaries available with each release for Linux, macOS and Windows.

Usage

To see available flags and arguments, run tfswitcher -h or tfswitcher --help.

You can also use a configuration file to automatically set certain flags or arguments. Simply place a file called .tfswitch.toml either in your current working directory or in your $HOME directory.

bin = "$HOME/.local/bin/terraform"
list_all = false
opentofu = false
force_remove = false
silent = false
verbose = false
version = "1.0.0"

Shell Completions

tfswitcher can generate tab-completion scripts for your desired shell. To see which shells are supported, see the --help text.

For example, for Bash:

tfswitcher -c bash >> ~/.local/share/bash-completion/completions/tfswitcher

Alternatively, you can source the tab-completion script inside your shell's start up script:

echo "source <(tfswitcher -c bash)" >> ~/.bashrc

Caveats

This has not been tested on Windows or macOS, so YMMV.

Where's v0.1.0?

v0.1.0 used FFI with Cgo in order to use HashiCorp's terraform-config-inspect library. This was inadvertently published as the Windows and macOS builds were broken and is yanked.

v0.2.0 replaced the Go library with a partially-reimplemented Rust library to eliminate FFI and makes building for Windows and macOS a lot less painful.

Dependencies

~25–40MB
~641K SLoC