Merge pull request #3 from blocklayerhq/pr-various

Bug fix, bug repro, debug message cleanup
This commit is contained in:
Solomon Hykes 2021-01-09 17:47:09 -08:00 committed by GitHub
commit 8730a7e03e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 23 additions and 45 deletions

View File

@ -1,35 +0,0 @@
package cmd
import (
"fmt"
"io/ioutil"
"os"
"dagger.cloud/go/dagger/ui"
"github.com/spf13/cobra"
)
var createCmd = &cobra.Command{
Use: "create ENV BASE",
Short: "Create an env",
Args: cobra.ExactArgs(2),
Run: func(cmd *cobra.Command, args []string) {
envname := args[0]
base := args[1]
envdir := ".dagger/env/" + envname
if info, err := os.Stat(envdir); err == nil {
if info.IsDir() {
ui.Fatalf("env already exists: %s", envname)
}
}
if err := os.MkdirAll(envdir, 0755); err != nil {
ui.Fatal(err)
}
baseCue := fmt.Sprintf("package env\nimport base \"%s\"\nbase\n", base)
err := ioutil.WriteFile(envdir+"/base.cue", []byte(baseCue), 0644)
if err != nil {
ui.Fatal(err)
}
ui.Info("created environment %q with base %q", envname, base)
},
}

View File

@ -14,11 +14,9 @@ func init() {
// --debug
rootCmd.PersistentFlags().Bool("debug", false, "Enable debug mode")
// --workspace
rootCmd.PersistentFlags().StringP("workspace", "w", "", "Select workspace")
rootCmd.AddCommand(
// Create an env
createCmd,
computeCmd,
// Create an env
// Change settings on an env
// View or edit env serti
// settingsCmd,

View File

@ -90,7 +90,6 @@ func (c *Client) LocalDirs() ([]string, error) {
}
func (c *Client) BootScript() (*Script, error) {
debugf("compiling boot script: %q\n", c.boot)
cc := &Compiler{}
src, err := cc.Compile("boot.cue", c.boot)
if err != nil {
@ -147,6 +146,7 @@ func (c *Client) buildfn(ctx context.Context, ch chan *bk.SolveStatus, w io.Writ
close(ch)
return errors.Wrap(err, "serialize boot script")
}
debugf("client: assembled boot script: %s\n", bootSource)
// Setup solve options
opts := bk.SolveOpt{
FrontendAttrs: map[string]string{
@ -193,7 +193,6 @@ func (c *Client) outputfn(_ context.Context, r io.Reader, out *Value) func() err
defer debugf("outputfn complete")
tr := tar.NewReader(r)
for {
debugf("outputfn: reading next tar entry")
h, err := tr.Next()
if err == io.EOF {
break
@ -301,9 +300,12 @@ func (c *Client) printfn(ctx context.Context, ch, ch2 chan *bk.SolveStatus) func
len(status.Logs),
)
for _, v := range status.Vertexes {
// FIXME: insert raw buildkit telemetry here (ie for debugging, etc.)
// IF a buildkit vertex has a valid cue path as name, extract additional info:
p := cue.ParsePath(v.Name)
if err := p.Err(); err != nil {
debugf("ignoring buildkit vertex %q: not a valid cue path", v.Name)
// Not a valid cue path: skip.
continue
}
n := &Node{

View File

@ -19,7 +19,6 @@ func Compute(ctx context.Context, c bkgw.Client) (r *bkgw.Result, err error) {
debugf("execute returned an error. Wrapping...")
}
}()
debugf("initializing env")
// Retrieve boot script form client
env, err := NewEnv(ctx, NewSolver(c), getBootScript(c), getInput(c))
if err != nil {

View File

@ -28,6 +28,7 @@ type Env struct {
// Initialize a new environment
func NewEnv(ctx context.Context, s Solver, bootsrc, inputsrc string) (*Env, error) {
debugf("NewEnv(boot=%q input=%q)", bootsrc, inputsrc)
cc := &Compiler{}
// 1. Compile & execute boot script
boot, err := cc.CompileScript("boot.cue", bootsrc)
@ -55,6 +56,9 @@ func NewEnv(ctx context.Context, s Solver, bootsrc, inputsrc string) (*Env, erro
if _, err := base.Merge(input); err != nil {
return nil, errors.Wrap(err, "merge base & input")
}
debugf("ENV: base=%q input=%q", base.JSON(), input.JSON())
return &Env{
base: base,
input: input,
@ -102,7 +106,7 @@ func (env *Env) Walk(ctx context.Context, fn EnvWalkFunc) (*Value, error) {
defer debugf("COMPLETE: Env.Walk")
// Cueflow cue instance
// FIXME: make this cleaner in *Value by keeping intermediary instances
flowInst, err := env.base.CueInst().Fill(env.input.CueInst())
flowInst, err := env.base.CueInst().Fill(env.input.CueInst().Value())
if err != nil {
return nil, err
}

View File

@ -5,6 +5,17 @@ import (
"testing"
)
func TestValidateEmptyValue(t *testing.T) {
cc := &Compiler{}
v, err := cc.Compile("", "#dagger: compute: _")
if err != nil {
t.Fatal(err)
}
if err := v.Get("#dagger.compute").Validate("#Script"); err != nil {
t.Fatal(err)
}
}
func TestLocalScript(t *testing.T) {
cc := &Compiler{}
src := `[{do: "local", dir: "foo"}]`

View File

@ -18,7 +18,7 @@ func (s Spec) Validate(v *Value, defpath string) (err error) {
// FIXME: there is probably a cleaner way to do this.
defer func() {
if err != nil {
debugf("ERROR while validating %v against %v err=%q", v, defpath, err)
//debugf("ERROR while validating %v against %v err=%q", v, defpath, err)
err = fmt.Errorf("%s", cueerrors.Details(err, nil))
}
}()
@ -33,7 +33,6 @@ func (s Spec) Validate(v *Value, defpath string) (err error) {
if err := merged.Err(); err != nil {
return err
}
debugf("Validating %v against %v", v, def)
if err := merged.Validate(cue.Final()); err != nil {
return err
}