How to Generate Pulumi CLI Completion Scripts (with examples)
The pulumi gen-completion
command is a useful feature of the Pulumi Infrastructure as Code (IaC) framework. This command generates shell completion scripts for the Pulumi command-line interface (CLI), which can significantly streamline your workflow by enabling auto-completion in your terminal. By supporting popular shells like bash, zsh, and fish, Pulumi helps to enhance efficiency, allowing you to focus more on building and less on typing. This article explores the use of the pulumi gen-completion
command, providing practical examples for each supported shell.
Use case 1: Generating Completion Script for Bash
Code:
pulumi gen-completion bash
Motivation:
For developers using the bash shell, enabling auto-completion can drastically simplify navigating the Pulumi CLI. This feature reduces the need to remember every command and its options while minimizing potential errors from mistyping. With auto-completion, your productivity can rise as the command line becomes more intuitive and less cumbersome to use.
Explanation:
pulumi
: This is the base command for interacting with Pulumi’s CLI tools.gen-completion
: This sub-command is used to generate the necessary scripts for auto-completion.bash
: Specifyingbash
tells Pulumi to generate the appropriate script for the bash shell, making it compatible with the auto-completion feature of this particular shell environment.
Example Output:
When you run the above command, the terminal outputs a script suitable for bash that you need to source in your bash configuration file, usually ~/.bashrc
or ~/.bash_profile
. It looks something like this:
# Add the following lines to your .bashrc or .bash-profile
source <(pulumi gen-completion bash)
Use case 2: Generating Completion Script for Zsh
Code:
pulumi gen-completion zsh
Motivation:
Many developers prefer zsh for its user-friendly features and advanced functionalities. Auto-completion is a particularly valued enhancement that fits well with zsh’s customizable nature. Using pulumi gen-completion zsh
, developers can enable auto-completion specifically tailored for the zsh environment, making their infrastructure management tasks less taxing and more efficient.
Explanation:
pulumi
: The command line tool for Pulumi, managing the lifecycle of your infrastructure.gen-completion
: A command to produce auto-completion scripts.zsh
: Identifies that the script should be generated for zsh, ensuring compatibility with its auto-completion system.
Example Output:
The output, which needs to be added to your Z shell setup, typically .zshrc
, appears as follows:
# Include this in your .zshrc
source <(pulumi gen-completion zsh)
Use case 3: Generating Completion Script for Fish
Code:
pulumi gen-completion fish
Motivation:
For developers using the fish shell known for its user-friendly scripting and intuitive command syntax, enabling completion scripts aligns with fish’s interactive use focus. Using pulumi gen-completion fish
, practitioners can gain a more fluid interaction with Pulumi CLI, reducing friction and time spent on command corrections or searches.
Explanation:
pulumi
: The CLI tool to control Pulumi operations.gen-completion
: A utility to create scripts facilitating command-line completion.fish
: Denotes that the output script is tailored for the fish shell environment, optimized for the completion capabilities of fish.
Example Output:
Executing this command gives a script meant to be included in fish’s configuration, often stored in ~/.config/fish/config.fish
:
# Add the following to your config.fish
pulumi gen-completion fish | source
Conclusion:
The pulumi gen-completion
command offers a straightforward way to set up command-line completion for the Pulumi CLI across multiple shell environments, including bash, zsh, and fish. By generating these scripts, users can improve their efficiency, reduce errors, and make their command line interactions more seamless. From integrating with your preferred shell’s configuration to experiencing a more streamlined working environment, using pulumi gen-completion
exemplifies how small enhancements can lead to significant productivity boosts in infrastructure management with Pulumi.