bakefile: mark variables as required
Current
There seems to be no way in current hcl bakefile syntax to mark a variable as required. There is a way to specify defaults:
# docker-bake.hcl
variable "TAG" {
default = "latest"
}
Or without explicit default the variable defaults to empty:
# docker-bake.hcl
variable "TAG" {
}
Proposed Enhancement
I'm trying to define a variable that is required to be set by the caller (i.e. through environment variable). Something like:
# docker-bake.hcl
variable "TAG" {
required = true
}
Where the user needs to specify the tag when executing buildx bake through either env-var or by passing multiple bake files (where the variable needs to be set to a value in at least one of the bake files).
Expectation:
# docker-bake.hcl
variable "TAG" {
required = true
}
$ buildx bake # -> error: required variable "TAG" not defined
$ TAG=latest buildx bake # -> success
Having something as suggested in https://github.com/docker/buildx/pull/491#issue-773693934 with type constraints and validation like terraform does would be more aligned I think:
variable "slugs" {
type = list(string)
default = [
"crazymax/diun",
"ghcr.io/crazy-max/diun"
]
validation {
condition = length(var.slugs) > 0
error_message = "At least one slug is required."
}
}
💯 that would be a nicer, more general approach!