Add new `packer_version` function.
Signed-off-by: Krzysztof Wilczynski <kw@linux.com>
This commit is contained in:
parent
baacb7e173
commit
7d80e37c14
|
@ -11,6 +11,7 @@ import (
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/hashicorp/packer/common/uuid"
|
"github.com/hashicorp/packer/common/uuid"
|
||||||
|
"github.com/hashicorp/packer/version"
|
||||||
)
|
)
|
||||||
|
|
||||||
// InitTime is the UTC time when this package was initialized. It is
|
// InitTime is the UTC time when this package was initialized. It is
|
||||||
|
@ -24,15 +25,16 @@ func init() {
|
||||||
|
|
||||||
// Funcs are the interpolation funcs that are available within interpolations.
|
// Funcs are the interpolation funcs that are available within interpolations.
|
||||||
var FuncGens = map[string]FuncGenerator{
|
var FuncGens = map[string]FuncGenerator{
|
||||||
"build_name": funcGenBuildName,
|
"build_name": funcGenBuildName,
|
||||||
"build_type": funcGenBuildType,
|
"build_type": funcGenBuildType,
|
||||||
"env": funcGenEnv,
|
"env": funcGenEnv,
|
||||||
"isotime": funcGenIsotime,
|
"isotime": funcGenIsotime,
|
||||||
"pwd": funcGenPwd,
|
"pwd": funcGenPwd,
|
||||||
"template_dir": funcGenTemplateDir,
|
"template_dir": funcGenTemplateDir,
|
||||||
"timestamp": funcGenTimestamp,
|
"timestamp": funcGenTimestamp,
|
||||||
"uuid": funcGenUuid,
|
"uuid": funcGenUuid,
|
||||||
"user": funcGenUser,
|
"user": funcGenUser,
|
||||||
|
"packer_version": funcGenPackerVersion,
|
||||||
|
|
||||||
"upper": funcGenPrimitive(strings.ToUpper),
|
"upper": funcGenPrimitive(strings.ToUpper),
|
||||||
"lower": funcGenPrimitive(strings.ToLower),
|
"lower": funcGenPrimitive(strings.ToLower),
|
||||||
|
@ -152,3 +154,9 @@ func funcGenUuid(ctx *Context) interface{} {
|
||||||
return uuid.TimeOrderedUUID()
|
return uuid.TimeOrderedUUID()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func funcGenPackerVersion(ctx *Context) interface{} {
|
||||||
|
return func() string {
|
||||||
|
return version.FormattedVersion()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -4,8 +4,11 @@ import (
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/hashicorp/packer/version"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestFuncBuildName(t *testing.T) {
|
func TestFuncBuildName(t *testing.T) {
|
||||||
|
@ -257,3 +260,21 @@ func TestFuncUser(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestFuncPackerVersion(t *testing.T) {
|
||||||
|
template := `{{packer_version}}`
|
||||||
|
|
||||||
|
ctx := &Context{}
|
||||||
|
i := &I{Value: template}
|
||||||
|
|
||||||
|
result, err := i.Render(ctx)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("Input: %s\n\nerr: %s", template, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Only match the X.Y.Z portion of the whole version string.
|
||||||
|
if !strings.HasPrefix(result, version.Version) {
|
||||||
|
t.Fatalf("Expected input to include: %s\n\nGot: %s",
|
||||||
|
version.Version, result)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -43,6 +43,7 @@ Here is a full list of the available functions for reference.
|
||||||
- `uuid` - Returns a random UUID.
|
- `uuid` - Returns a random UUID.
|
||||||
- `upper` - Uppercases the string.
|
- `upper` - Uppercases the string.
|
||||||
- `user` - Specifies a user variable.
|
- `user` - Specifies a user variable.
|
||||||
|
- `packer_version` - Returns Packer version.
|
||||||
|
|
||||||
#### Specific to Amazon builders:
|
#### Specific to Amazon builders:
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue