📋
pimp
  • Home
  • Installation
  • FAQ
  • Getting Started
    • Welcome
    • Expand commands
    • Run tasks
    • Render templates
    • Execute scripts
    • Next steps
  • User Guide
    • Pimpfile
    • Configuration File
    • Command Expander
    • Task Runner
    • Template Engine
      • Functions
    • Script Engine (PimpScript)
    • Go Library
  • Integrations
    • Bash, Zsh, Fish
Powered by GitBook
On this page
  1. User Guide

Script Engine (PimpScript)

pimp embeds a scripting language (conveniently named PimpScript). This language is actually just the Go template languages without delimiters ({{ and }}), significant whitespaces nor tabs; but with added support for newlines and ; as end of expressions. You can use pimp --transpile to see how a piece of PimpScript would be evaluated:

$ pimp --transpile <<EOF
range list 1 2 3
  if eq . 1; println "Winner!"
  else; printf "You are in position %d\n" .
  end
end
EOF

This produces the following output:

{{- range list 1 2 3 -}}
{{- if eq . 1 -}}
{{- println "Winner!" -}}
{{- else -}}
{{- printf "You are in position %d\n" . -}}
{{- end -}}
{{- end -}}

You can execute:

pimp --exec <<EOF
range list 1 2 3
  if eq . 1
    println "Winner!"
  else
    printf "You are in position %d\n" .
  end
end
EOF

Which produces the following output:

Winner!
You are in position 2
You are in position 3

REPL

pimp comes with an REPL with history, autocompletion, etc. It's a good way to experiment short scripts:

$ pimp
pimp> if eq (mul 3 3) 9; println "ok"; end
ok
PreviousFunctionsNextGo Library

Last updated 4 years ago