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 // --debug
rootCmd.PersistentFlags().Bool("debug", false, "Enable debug mode") rootCmd.PersistentFlags().Bool("debug", false, "Enable debug mode")
// --workspace // --workspace
rootCmd.PersistentFlags().StringP("workspace", "w", "", "Select workspace")
rootCmd.AddCommand( rootCmd.AddCommand(
// Create an env
createCmd,
computeCmd, computeCmd,
// Create an env
// Change settings on an env // Change settings on an env
// View or edit env serti // View or edit env serti
// settingsCmd, // settingsCmd,

View File

@ -90,7 +90,6 @@ func (c *Client) LocalDirs() ([]string, error) {
} }
func (c *Client) BootScript() (*Script, error) { func (c *Client) BootScript() (*Script, error) {
debugf("compiling boot script: %q\n", c.boot)
cc := &Compiler{} cc := &Compiler{}
src, err := cc.Compile("boot.cue", c.boot) src, err := cc.Compile("boot.cue", c.boot)
if err != nil { if err != nil {
@ -147,6 +146,7 @@ func (c *Client) buildfn(ctx context.Context, ch chan *bk.SolveStatus, w io.Writ
close(ch) close(ch)
return errors.Wrap(err, "serialize boot script") return errors.Wrap(err, "serialize boot script")
} }
debugf("client: assembled boot script: %s\n", bootSource)
// Setup solve options // Setup solve options
opts := bk.SolveOpt{ opts := bk.SolveOpt{
FrontendAttrs: map[string]string{ 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") defer debugf("outputfn complete")
tr := tar.NewReader(r) tr := tar.NewReader(r)
for { for {
debugf("outputfn: reading next tar entry")
h, err := tr.Next() h, err := tr.Next()
if err == io.EOF { if err == io.EOF {
break break
@ -301,9 +300,12 @@ func (c *Client) printfn(ctx context.Context, ch, ch2 chan *bk.SolveStatus) func
len(status.Logs), len(status.Logs),
) )
for _, v := range status.Vertexes { 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) p := cue.ParsePath(v.Name)
if err := p.Err(); err != nil { 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 continue
} }
n := &Node{ 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("execute returned an error. Wrapping...")
} }
}() }()
debugf("initializing env")
// Retrieve boot script form client // Retrieve boot script form client
env, err := NewEnv(ctx, NewSolver(c), getBootScript(c), getInput(c)) env, err := NewEnv(ctx, NewSolver(c), getBootScript(c), getInput(c))
if err != nil { if err != nil {

View File

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

View File

@ -5,6 +5,17 @@ import (
"testing" "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) { func TestLocalScript(t *testing.T) {
cc := &Compiler{} cc := &Compiler{}
src := `[{do: "local", dir: "foo"}]` 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. // FIXME: there is probably a cleaner way to do this.
defer func() { defer func() {
if err != nil { 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)) 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 { if err := merged.Err(); err != nil {
return err return err
} }
debugf("Validating %v against %v", v, def)
if err := merged.Validate(cue.Final()); err != nil { if err := merged.Validate(cue.Final()); err != nil {
return err return err
} }