Co-authored-by: Knative Automation <automation@knative.team> |
||
---|---|---|
.. | ||
certs | ||
go | ||
node | ||
python | ||
quarkus | ||
rust | ||
springboot | ||
typescript | ||
README.md | ||
manifest.yaml |
README.md
Templates
Contains all example source code, scaffolding, certificates and metadata used by func when creating and building function instances.
To rebuild run make templates
(which caches). To force a full rebuild run
make clean && make
Layout
Each directory within templates
corresponds to a known language runtime.
The certs
directory is a reserved word containing root SSL certificates.
Each directory within a runtime directory corresponds to a named templaate.
The scaffolding
directory within the runtime directory is a reserved word
containing the adapter code that converts a function with a given method
signature into a service by way of the external function runtime libraries.
Packaging
When updates are made to these templates, they must be packaged (serialized as
a Go byte array) by running make templates
(which rebuilds
generate/zz_filesystem_generated.go
, and checking in the resultant
./generate/zz_filesystem_generated.go
file.
How it works
The ./generate/templates
directory contains Go program that generates ./generate/zz_filesystem_generated.go
.
The file defines byte array variable named TemplatesZip
.
The variable contains ZIP representation of the templates directory.
The byte array variable is then used to instantiate exported global variable function.EmbeddedTemplatesFS
,
which implements standard Go interfaces fs.ReadDirFS
and fs.StatFS
.
Rationale
Until such time as embedding static assets in binaries is included in the
base go build
functionality (see https://github.com/golang/go/issues/35950)
we need to use our custom serialization script (./generate/templates/main.go
).
Native Go embedding introduced in Go 1.16 could be used for executable binary, however it cannot be used for library. For a library we need to generate a Go source code containing the templates.