added support for output scanning
Signed-off-by: Sam Alba <sam.alba@gmail.com>
This commit is contained in:
parent
21b259fc86
commit
6e3ec02ceb
@ -2,6 +2,7 @@ package environment
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io/fs"
|
"io/fs"
|
||||||
"strings"
|
"strings"
|
||||||
@ -322,3 +323,25 @@ func (e *Environment) ScanInputs(ctx context.Context, mergeUserInputs bool) ([]*
|
|||||||
|
|
||||||
return scanInputs(ctx, src), nil
|
return scanInputs(ctx, src), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (e *Environment) ScanOutputs(ctx context.Context) ([]*compiler.Value, error) {
|
||||||
|
if e.state.Computed == "" {
|
||||||
|
return nil, errors.New("cannot query environment outputs: please run `dagger up` first")
|
||||||
|
}
|
||||||
|
|
||||||
|
src, err := e.prepare(ctx)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
computed, err := compiler.DecodeJSON("", []byte(e.state.Computed))
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := src.FillPath(cue.MakePath(), computed); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return scanOutputs(ctx, src), nil
|
||||||
|
}
|
||||||
|
@ -66,3 +66,23 @@ func scanInputs(ctx context.Context, value *compiler.Value) []*compiler.Value {
|
|||||||
|
|
||||||
return inputs
|
return inputs
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func scanOutputs(ctx context.Context, value *compiler.Value) []*compiler.Value {
|
||||||
|
lg := log.Ctx(ctx)
|
||||||
|
inputs := []*compiler.Value{}
|
||||||
|
|
||||||
|
value.Walk(
|
||||||
|
func(val *compiler.Value) bool {
|
||||||
|
if !val.HasAttr("output") {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
lg.Debug().Str("value.Path", val.Path().String()).Msg("found output")
|
||||||
|
inputs = append(inputs, val)
|
||||||
|
|
||||||
|
return true
|
||||||
|
}, nil,
|
||||||
|
)
|
||||||
|
|
||||||
|
return inputs
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user