add docs and the option to list variables from inside the console

This commit is contained in:
Megan Marsh 2019-06-06 14:26:12 -07:00
parent df916e805e
commit 668e92f2ca
2 changed files with 114 additions and 0 deletions

View File

@ -191,6 +191,8 @@ func (s *REPLSession) Handle(line string) (string, error) {
return "", ErrSessionExit
case strings.TrimSpace(line) == "help":
return s.handleHelp()
case strings.TrimSpace(line) == "variables":
return s.handleVariables()
default:
return s.handleEval(line)
}
@ -205,6 +207,15 @@ func (s *REPLSession) handleEval(line string) (string, error) {
return rendered, nil
}
func (s *REPLSession) handleVariables() (string, error) {
varsstring := "\n"
for k, v := range s.Core.Context().UserVariables {
varsstring += fmt.Sprintf("%s: %+v,\n", k, v)
}
return varsstring, nil
}
func (s *REPLSession) handleHelp() (string, error) {
text := `
The Packer console allows you to experiment with Packer interpolations.

View File

@ -0,0 +1,103 @@
---
description: |
The `packer fix` command allows you to experiment with Packer variable
interpolations.
layout: docs
page_title: 'packer console - Commands'
sidebar_current: 'docs-commands-console'
---
# `console` Command
The `packer console` command allows you to experiment with Packer variable
interpolations. You may access variables in the Packer config you called the
console with, or provide variables when you call console using the -var or
-var-file command line options.
Type in the interpolation to test and hit <enter> to see the result.
To exit the console, type "exit" and hit <enter>, or use Control-C.
``` shell
$ packer console my_template.json
```
The full list of options that the console command will accept is visible in the
help output, which can be seen via `packer console -h`.
## Options
- `-var` - Set a variable in your packer template. This option can be used
multiple times. This is useful for setting version numbers for your build.
example: `-var "myvar=asdf"`
- `-var-file` - Set template variables from a file.
example: `-var-file myvars.json`
## REPL commands
- `help` - displays help text for Packer console.
- `exit` - exits the console
- `variables` - prints a list of all variables read into the console from the
`-var` option, `-var-files` option, and template.
## Usage Examples
Let's say you launch a console using a Packer template `example_template.json`:
```
$ packer console example_template.json
```
You'll be dropped into a prompt that allows you to enter template functions and
see how they're evaluated; for example, if the variable `myvar` is defined in
your example_template's variable section:
```
"variables":{
"myvar": "asdfasdf"
},
...
```
and you enter `{{user `myvar`}}` in the Packer console, you'll see the value of
myvar:
```
> {{user `myvar`}}
> asdfasdf
```
From there you can test more complicated interpolations:
```
> {{user `myvar`}}-{{timestamp}}
> asdfasdf-1559854396
```
And when you're done using the console, just type "exit" or CTRL-C
```
> exit
$
```
If you'd like to provide a variable or variable files, you'd do this:
```
packer console -var "myvar=fdsafdsa" -var-file myvars.json example_template.json
```
If you don't have specific variables or var files you want to test, and just
want to experiment with a particular template engine, you can do so by simply
calling `packer console` without a template file.
If you'd like to just see a specific single interpolation without launching
the REPL, you can do so by echoing and piping the string into the console
command:
```
$ echo {{timestamp}} | packer console
1559855090
```