Cmder is an awsome package of software which replaces the default console cmd.exe
or powershell
on windows.
If you are in a git repo, you see the current branch in the prompt, colored in white if its clean or red if dirty. There are similar features for yarn, npm, ...
Sometimes you want to add the output of to the prompt too. This can be done like this:
In my case i wanted to see on which terraform workspace i am. with terraform you can do this by running terraform workspace show
in your terraform directory. this would output something like
λ terraform workspace show default
To do this you have to create a clink extension. Assuming that you installed cmder in C:\Program Files\Cmder
you create a file called terraform.lua
in C:\Program Files\Cmder\vendor\clink-completions
terraform.lua
local color = require("color") local function is_terraform() for dir in io.popen([[dir ".\" /b /ad]]):lines() do if dir == ".terraform" then return true end end return false end local function terraform_prompt_filter() if is_terraform() then f = assert (io.popen ("terraform workspace show")) for line in f:lines() do terraform_context = '(workspace: ' .. line .. ')' if line == "production" then prompt_color = color.RED elseif line == "development" then prompt_color = color.GREEN else prompt_color = color.YELLOW end break end -- for loop f:close() terraform_context = color.color_text(terraform_context, prompt_color) clink.prompt.value = clink.prompt.value:gsub("\n", terraform_context .. "\n") return false end end clink.prompt.register_filter(terraform_prompt_filter, 1)
this code checks if it is currently in a terraform directory by looking if the directory .terraform
exists. it colors the workspace output in green if you are on development
workspace, red if you are on production
and yellow on all others. adapt the code for your needs.
i am sure that the lua code can be optimized, i am open for comments and enhancements.
links:
- cover image by Willi Heidelbach https://pixabay.com/en/puzzle-match-missing-hole-blank-693870/
Top comments (3)
Cmder was the best terminal for custom prompt with zsh before Hyper. I love the git integration and syntax highlighting without any configuration. But now cmder became a bit obsolete.
thaks for the tip. just wanted to give it a try but hyper has this terrible squirrel installer which collides with my sandboxing system.
why it has become so uncommon to install an app directly in
C:\Program Files\Appnam
shiped as msi file and additional as zip file -.- *sigh*Thanks :) That helped a lot !