Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/anindya-dey/tfvm
Terraform Version Manager
https://github.com/anindya-dey/tfvm
andys-cli cli nodejs terraform terraform-manager terraform-version-manager tfvm
Last synced: about 6 hours ago
JSON representation
Terraform Version Manager
- Host: GitHub
- URL: https://github.com/anindya-dey/tfvm
- Owner: anindya-dey
- License: mit
- Created: 2021-09-13T16:25:54.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2024-06-19T04:33:23.000Z (5 months ago)
- Last Synced: 2024-09-23T19:46:46.621Z (about 2 months ago)
- Topics: andys-cli, cli, nodejs, terraform, terraform-manager, terraform-version-manager, tfvm
- Language: TypeScript
- Homepage: https://www.npmjs.com/package/tfvm
- Size: 3.7 MB
- Stars: 2
- Watchers: 0
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Terraform Version Manager
### A NodeJS-based CLI tool to manage terraform versions on a system
[![npm version](https://img.shields.io/npm/v/tfvm?color=blue&label=version&style=for-the-badge)](https://www.npmjs.com/package/tfvm) [![Total Downloads](https://img.shields.io/npm/dt/tfvm?label=total%20downloads&style=for-the-badge)](https://www.npmjs.com/package/tfvm) [![license](https://img.shields.io/npm/l/tfvm?color=lightblue&style=for-the-badge)](https://www.npmjs.com/package/tfvm)
Install it globally to manage all the terraform versions
```sh
$ npm install -g tfvm
```![default](https://user-images.githubusercontent.com/30517208/215016872-45b400f6-5738-4404-876e-f886f6e77fdb.gif)
### Available Commands
---
#### `list | ls [--remote | -r]`
- Use this command to list the downloaded versions of terraform
```sh
$ tfvm list # gets all the locally available terraform executables# --- OR ---
$ tfvm ls
```![ls](https://user-images.githubusercontent.com/30517208/215016919-d4d38647-bc18-48ce-961a-9a27f088e349.gif)
- Append `--remote` or `-r` with `list` to get a list of all available releases from [Terraform](https://releases.hashicorp.com/terraform)
```sh
$ tfvm list --remote # displays the available releases from Terraform's website# --- OR ---
$ tfvm ls -r
```![ls-remote](https://user-images.githubusercontent.com/30517208/215016945-d68d2db7-f3eb-47fd-931b-4db05ee0ab7b.gif)
- If you do not have any terraform executables on your path, you would see an error, like so:
![ls-when-empty](https://user-images.githubusercontent.com/30517208/215017052-ddce48bc-a501-4b91-bc03-20dd430f3344.gif)
---
#### `download | d [version]`
- This will present a list of available versions, and then a list of releases available for that version from terraform. Choose one with up/down arrow and hit `ENTER` to download it.
```sh
$ tfvm download# --- OR ---
$ tfvm d
```![download](https://user-images.githubusercontent.com/30517208/215017148-f18bb0a4-cf7f-45a4-9e68-b33d8d46beba.gif)
- Optionally, a `version` can be appended to this command which would directly present a list of releases, associated to this version:
```sh
$ tfvm download 1.3.1# --- OR ---
$ tfvm d 1.3.1
```![download-version](https://user-images.githubusercontent.com/30517208/215017241-014aba01-a4b3-4b36-9f01-d7eb0ddf785e.gif)
---
#### `remove | rm [--all | -a]`
- Use this to remove/delete a particular terraform executable or all terraform executables.
```sh
$ tfvm remove # to remove a particular terraform executable# --- OR ---
$ tfvm rm
```![remove](https://user-images.githubusercontent.com/30517208/215017300-4b4e0290-b23c-4944-b673-ce176f56bfb9.gif)
- Use `--all` or `-a` option to remove all the terraform executables.
```sh
$ tfvm remove --all # to remove all the terraform executables# --- OR ---
$ tfvm rm -a
```![remove-all](https://user-images.githubusercontent.com/30517208/215017334-0bbe541a-dbcf-4059-a909-dc90d4f5ba99.gif)
---
#### `use`
- This command will present a list of all the locally available terraform executables. Once a particular executable is selected, it would be set as default and made available to the user via the `terraform` commands in the terminal.
```sh
$ tfvm use # select a terraform executable as default, which can be used via 'terraform' command
```![use](https://user-images.githubusercontent.com/30517208/215017404-dc951a39-ffc4-4161-9ffa-914a04c2589a.gif)
> NOTE: User might have to perform a one-time update of their PATH variable to include the path indicated by this command.
---
#### `dir`
- This command shows the directory where all the terraform executables are stored locally. The default path is the `$USER/terraform` directory.
```sh
$ tfvm dir # shows the directory where all the terraform executables are stored
```![dir](https://user-images.githubusercontent.com/30517208/215017477-b76626fc-bca8-4032-9c36-fa5a4a8f12b9.gif)
---
> **NOTES:**
>
> 1. Currently, platform specfic releases are not filtered out when executing `tfvm list --remote` or `tfvm download [version]` command. User needs to make sure that they are downloading the right release for their system.
> 2. Chalk v4.1.2 is used as it supports typescript; Chalk >= v5 is purely ESM.---
⭐ _This project is inspired by the [nvm project](https://github.com/nvm-sh/nvm)_ 😍
⭐ _I created these beautiful gifs by using [terminalizer](https://www.npmjs.com/package/terminalizer)_ 😍