stdlib: put full definition of #Op behind a build attribute

This allows dagger.io/dagger/op.#Op to be maintained in regular
uncommented CUE, but not participate by default in normal dagger
evaluation (given the performance problems it currently introduces).

The "full" #Op can be enabled by passing the "-t fullop" flag:

    cue eval -t fullop ./examples/react

(which currently triggers the performance issue).

Signed-off-by: Paul Jolly <paul@myitcv.io>
This commit is contained in:
Paul Jolly 2021-05-25 10:39:33 +01:00
parent 9a49eb9a30
commit cd19a4228a
No known key found for this signature in database
GPG Key ID: 6497E807CEFD067D
2 changed files with 22 additions and 16 deletions

View File

@ -3,27 +3,16 @@ package op
// One operation in a pipeline
//
// #Op does not enforce the op spec at full resolution, to avoid triggering performance issues.
// See https://github.com/dagger/dagger/issues/445
// #Op does not current enforce the op spec at full resolution, to avoid
// triggering performance issues. See
// https://github.com/dagger/dagger/issues/445
//
// To enforce the full #Op spec (see op_fullop.cue), run with "-t fullop"
#Op: {
do: string
...
}
// Full resolution schema enforciong the complete op spec
#OpFull: #Export |
#FetchContainer |
#PushContainer |
#FetchGit |
#Exec |
#Local |
#Copy |
#Load |
#Subdir |
#WriteFile |
#Mkdir |
#DockerBuild
// Export a value from fs state to cue
#Export: {
do: "export"

View File

@ -0,0 +1,17 @@
@if(fullop)
package op
// Full resolution schema enforciong the complete op spec
#Op: (#Export |
#FetchContainer |
#PushContainer |
#FetchGit |
#Exec |
#Local |
#Copy |
#Load |
#Subdir |
#WriteFile |
#Mkdir |
#DockerBuild) & {do: string}